1 package jalview.ws2.client.jpred4;
3 import java.io.IOException;
6 import jalview.datamodel.SequenceI;
7 import jalview.io.AlignFile;
8 import jalview.io.DataSourceType;
9 import jalview.io.FastaFile;
10 import jalview.io.FileFormat;
11 import jalview.io.FormatAdapter;
12 import jalview.io.JPredFile;
13 import jalview.ws.params.ArgumentI;
14 import jalview.ws2.api.Credentials;
15 import jalview.ws2.api.JobStatus;
16 import jalview.ws2.api.WebServiceJobHandle;
17 import jalview.ws2.client.api.SecStructPredWebServiceClientI;
18 import uk.ac.dundee.compbio.jpred.JPredClient;
19 import uk.ac.dundee.compbio.jpred.JPredRequest;
20 import uk.ac.dundee.compbio.jpred.ResultTypes;
22 public class JPred4WSClient implements SecStructPredWebServiceClientI
24 final JPredClient client;
26 private final JPredRequest.Mode mode;
28 private final JPredRequest.Format format;
30 JPred4WSClient(JPredClient client, boolean msaMode)
32 this.mode = msaMode ? JPredRequest.Mode.MSA : JPredRequest.Mode.SINGLE;
33 this.format = msaMode ? JPredRequest.Format.FASTA : JPredRequest.Format.SEQ;
38 public String getUrl()
40 return client.getURL().toString();
44 public String getClientName()
50 public WebServiceJobHandle submit(List<SequenceI> sequences,
51 List<ArgumentI> args, Credentials credentials) throws IOException
53 var input = mode == JPredRequest.Mode.MSA
56 .print(sequences.toArray(SequenceI[]::new), false)
57 : sequences.get(0).getSequenceAsString();
59 JPredRequest request = JPredRequest
65 var jobId = client.submit(request);
66 return new WebServiceJobHandle(getClientName(), "jpred4", getUrl(), jobId);
70 public JobStatus getStatus(WebServiceJobHandle job) throws IOException
72 var status = client.getStatus(job.getJobId());
76 return JobStatus.QUEUED;
78 return JobStatus.RUNNING;
80 return JobStatus.COMPLETED;
82 return JobStatus.SERVER_ERROR;
84 return JobStatus.INVALID;
86 return JobStatus.SERVER_ERROR;
88 return JobStatus.UNKNOWN;
93 public String getLog(WebServiceJobHandle job) throws IOException
95 var stream = client.getResultStream(job.getJobId(), ResultTypes.LOG);
96 // FIXME: potential OOM
97 return new String(stream.readAllBytes());
101 public String getErrorLog(WebServiceJobHandle job) throws IOException
107 public void cancel(WebServiceJobHandle job)
108 throws IOException, UnsupportedOperationException
114 public AlignFile getAlignmentFile(WebServiceJobHandle job) throws IOException
116 var url = client.getResultURL(job.getJobId(), ResultTypes.PSIBLAST_ALIGN);
117 return new FastaFile(url.toString(), DataSourceType.URL);
121 public JPredFile getPredictionFile(WebServiceJobHandle job) throws IOException
123 var url = client.getResultURL(job.getJobId(), ResultTypes.CONCISE);
124 return new JPredFile(url.toString(), DataSourceType.URL);