package jalview.ws2.client.ebi;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.StringReader;
+import java.net.URI;
import java.util.List;
+import jalview.bin.Console;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
import jalview.io.FileFormat;
+import jalview.io.FileParse;
+import jalview.io.FormatAdapter;
+import jalview.io.StockholmFile;
import jalview.ws.params.ArgumentI;
import jalview.ws.params.simple.BooleanOption;
import jalview.ws.params.simple.DoubleParameter;
import jalview.ws2.api.Credentials;
import jalview.ws2.api.JobStatus;
import jalview.ws2.api.WebServiceJobHandle;
+import jalview.ws2.client.api.AlignmentWebServiceClientI;
import jalview.ws2.client.api.WebServiceClientI;
import uk.ac.dundee.compbio.hmmerclient.PhmmerClient;
import uk.ac.dundee.compbio.hmmerclient.PhmmerRequest;
import uk.ac.dundee.compbio.hmmerclient.PhmmerRequest.SequenceDatabase;
import uk.ac.dundee.compbio.hmmerclient.PhmmerRequest.SubstitutionMatrix;
-public class PhmmerWSClient implements WebServiceClientI
+public class PhmmerWSClient implements AlignmentWebServiceClientI
{
final PhmmerClient client;
var email = credentials.getEmail() != null ? credentials.getEmail() :
"nouser@jalview.org";
var jobId = client.submit(request.build(), email);
+ Console.debug("Phmmer client submitted new job with id " + jobId);
return new WebServiceJobHandle(
getClientName(), "phmmer", getUrl(), jobId);
}
@Override
public String getErrorLog(WebServiceJobHandle job) throws IOException
{
- return "";
+ if (getStatus(job) != JobStatus.FAILED)
+ return "";
+ try(InputStream stream = client.getResultStream(job.getJobId(), "error"))
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ stream.transferTo(out);
+ return out.toString();
+ }
}
@Override
"ebi job dispatcher does not support job cancellation");
}
+ /**
+ * FIXME: Temporary hack
+ */
+ @Override
+ public AlignmentI getAlignment(WebServiceJobHandle job) throws IOException
+ {
+ URI url = client.getResultURL(job.getJobId(), "sto");
+ try(InputStream stream = client.getResultStream(job.getJobId(), "sto"))
+ {
+ StockholmFile file = new StockholmFile(new FileParse(
+ new BufferedReader(new InputStreamReader(stream)),
+ url.toString(), DataSourceType.URL));
+ var aln = new Alignment(file.getSeqsAsArray());
+ for (var annotation : file.getAnnotations())
+ aln.addAnnotation(annotation);
+ return aln;
+ }
+ }
}