JAL-3954 Add query sequence aligned to consensus to search result
[jalview.git] / src / jalview / ws2 / client / ebi / PhmmerWSClient.java
index 0bcb2f9..9c5f14f 100644 (file)
@@ -1,16 +1,22 @@
 package jalview.ws2.client.ebi;
 
+import java.io.BufferedReader;
 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;
@@ -243,6 +249,15 @@ public class PhmmerWSClient implements AlignmentWebServiceClientI
   public AlignmentI getAlignment(WebServiceJobHandle job) throws IOException
   {
     URI url = client.getResultURL(job.getJobId(), "sto");
-    return new FormatAdapter().readFile(url.toString(), DataSourceType.URL, FileFormat.Stockholm);
+    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;
+    }
   }
 }