1 package jalview.ws.slivkaws;
3 import java.io.IOError;
4 import java.io.IOException;
5 import java.util.Collection;
8 import jalview.datamodel.AlignmentI;
9 import jalview.datamodel.SequenceI;
10 import jalview.io.DataSourceType;
11 import jalview.io.JPredFile;
12 import jalview.ws.api.JPredServiceI;
13 import jalview.ws.api.JobId;
14 import jalview.ws.params.ArgumentI;
15 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
16 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
17 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
19 public class SlivkaJPredServiceInstance extends SlivkaWSInstance
20 implements JPredServiceI
23 private class InputFormatParameter implements ArgumentI
28 public String getName()
34 public String getValue()
40 public void setValue(String selectedItem)
47 public SlivkaJPredServiceInstance(SlivkaClient client,
48 SlivkaService service, String action)
50 super(client, service, action);
51 style = ServiceClient.JPREDWSCLIENT;
55 public JobId predict(List<SequenceI> sequences, boolean msa) throws Throwable
57 // Hack allowing to send both single and msa jobs
58 // until msa and single sequence services are separated.
59 var arg = new InputFormatParameter();
60 arg.setValue(msa ? "fasta" : "seq");
61 return super.submit(sequences, null, List.of(arg));
65 public AlignmentI getAlignment(JobId jobId) throws Exception
67 Collection<RemoteFile> files;
69 var job = client.getJob(jobId.getJobId());
70 files = job.getResults();
71 for (RemoteFile f : files) {
72 var alignment = readAlignment(f);
73 if (alignment != null)
79 catch (IOException e) {
86 public JPredFile getPrediction(JobId jobId) throws Exception
88 Collection<RemoteFile> files = client.getJob(jobId.getJobId()).getResults();
89 for (RemoteFile f : files)
91 if (f.getLabel().equals("concise"))
93 return new JPredFile(f.getContentUrl(), DataSourceType.URL);