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 JPred4WSClient(JPredClient client)
32 public String getUrl()
34 return client.getURL().toString();
38 public String getClientName()
44 public WebServiceJobHandle submit(List<SequenceI> sequences,
45 List<ArgumentI> args, Credentials credentials) throws IOException
47 var input = FileFormat.Fasta
49 .print(sequences.toArray(SequenceI[]::new), false);
50 JPredRequest request = JPredRequest
52 .mode(JPredRequest.Mode.MSA)
53 .format(JPredRequest.Format.FASTA)
56 var jobId = client.submit(request);
57 return new WebServiceJobHandle(getClientName(), "jpred4", getUrl(), jobId);
61 public JobStatus getStatus(WebServiceJobHandle job) throws IOException
63 var status = client.getStatus(job.getJobId());
67 return JobStatus.RUNNING;
69 return JobStatus.COMPLETED;
71 return JobStatus.SERVER_ERROR;
73 return JobStatus.INVALID;
75 return JobStatus.SERVER_ERROR;
77 return JobStatus.UNKNOWN;
82 public String getLog(WebServiceJobHandle job) throws IOException
84 var stream = client.getResultStream(job.getJobId(), ResultTypes.LOG);
85 // FIXME: potential OOM
86 return new String(stream.readAllBytes());
90 public String getErrorLog(WebServiceJobHandle job) throws IOException
96 public void cancel(WebServiceJobHandle job)
97 throws IOException, UnsupportedOperationException
103 public AlignFile getAlignmentFile(WebServiceJobHandle job) throws IOException
105 var url = client.getResultURL(job.getJobId(), ResultTypes.PSIBLAST_ALIGN);
106 return new FastaFile(url.toString(), DataSourceType.URL);
110 public JPredFile getPredictionFile(WebServiceJobHandle job) throws IOException
112 var url = client.getResultURL(job.getJobId(), ResultTypes.CONCISE);
113 return new JPredFile(url.toString(), DataSourceType.URL);