JAL-3878 Add jpred operation and worker to the services.
[jalview.git] / src / jalview / ws2 / slivka / SlivkaWSDiscoverer.java
index cda6702..4cbd1a2 100644 (file)
@@ -7,6 +7,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import jalview.bin.Cache;
+import jalview.datamodel.AlignmentI;
+import jalview.io.JPredFile;
 import jalview.ws2.*;
 import jalview.ws2.operations.*;
 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
@@ -157,7 +159,7 @@ public class SlivkaWSDiscoverer implements WebServiceDiscovererI
       }
       for (SlivkaService service : services)
       {
-        SlivkaWebService webService = new SlivkaWebService(client, service);
+        final SlivkaWebService webService = new SlivkaWebService(client, service);
         AbstractOperation op = null;
         for (String classifier : service.classifiers)
         {
@@ -184,6 +186,24 @@ public class SlivkaWSDiscoverer implements WebServiceDiscovererI
               op = new AnnotationOperation(webService, "Protein Disorder",
                   webService::attachAnnotations);
               break;
+            case "protein secondary structure prediction":
+              var predictionSupplier = new JPredOperation.PredictionResultSupplier()
+              {
+                @Override
+                public JPredFile getPrediction(WSJob job) throws IOException
+                {
+                  return webService.getPrediction(job);
+                }
+
+                @Override
+                public AlignmentI getAlignment(WSJob job) throws IOException
+                {
+                  return webService.getAlignment(job);
+                }
+              };
+              op = new JPredOperation(webService,
+                  "Secondary Structure Prediction", predictionSupplier);
+              break;
             case "multiple sequence alignment":
               op = new AlignmentOperation(webService, webService::getAlignment);
               break;