1 package jalview.ws.slivkaws;
3 import jalview.api.FeatureColourI;
4 import jalview.bin.Cache;
5 import jalview.bin.Console;
6 import jalview.datamodel.Alignment;
7 import jalview.datamodel.AlignmentAnnotation;
8 import jalview.datamodel.SequenceI;
9 import jalview.datamodel.features.FeatureMatcherSetI;
10 import jalview.io.AnnotationFile;
11 import jalview.io.DataSourceType;
12 import jalview.io.FeaturesFile;
13 import jalview.util.MessageManager;
14 import jalview.ws.api.JobId;
15 import jalview.ws.api.SequenceAnnotationServiceI;
16 import jalview.ws.params.ArgumentI;
17 import jalview.ws.params.WsParamSetI;
18 import jalview.ws.uimodel.AlignAnalysisUIText;
20 import java.io.IOError;
21 import java.io.IOException;
22 import java.util.Arrays;
23 import java.util.Collection;
24 import java.util.List;
27 import compbio.data.msa.Category;
28 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
29 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
30 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
32 public class SlivkaAnnotationServiceInstance extends SlivkaWSInstance implements SequenceAnnotationServiceI
34 public SlivkaAnnotationServiceInstance(SlivkaClient client,
35 SlivkaService service, String category)
37 super(client, service, category);
38 if (category == Category.CATEGORY_CONSERVATION)
40 /* FIXME: the category name is hardcoded for AACon, names other than
41 * "AAConWS" doesn't work. */
42 setAlignAnalysisUI(new AlignAnalysisUIText(getName(),
43 SlivkaAnnotationServiceInstance.class,
44 "Slivka.AACons", false, true, true, true, true, 2,
45 MessageManager.getString("label.aacon_calculations"),
46 MessageManager.getString("tooltip.aacon_calculations"),
47 MessageManager.getString("label.aacon_settings"),
48 MessageManager.getString("tooltip.aacon_settings")));
50 style = ServiceClient.SEQUENCEANNOTATIONWSCLIENT;
54 public JobId submitToService(List<SequenceI> seqs, WsParamSetI preset, List<ArgumentI> paramset) throws Throwable
56 return super.submit(seqs, preset, paramset);
60 public List<AlignmentAnnotation> getAnnotationResult(JobId jobId,
61 List<SequenceI> seqs, Map<String, FeatureColourI> featureColours,
62 Map<String, FeatureMatcherSetI> featureFilters) throws Throwable
64 RemoteFile annotFile = null;
65 RemoteFile featFile = null;
68 var slivkaJob = client.getJob(jobId.getJobId());
69 Collection<RemoteFile> files = slivkaJob.getResults();
70 for (RemoteFile f : files)
72 if (f.getMediaType().equals("application/jalview-annotations"))
76 else if (f.getMediaType().equals("application/jalview-features"))
81 } catch (IOException e)
85 Alignment aln = new Alignment(seqs.toArray(new SequenceI[0]));
87 || !new AnnotationFile().readAnnotationFileWithCalcId(aln, service.getId(), annotFile.getContentUrl().toString(), DataSourceType.URL))
89 Console.debug("No annotation from slivka job\n" + annotFile);
92 Console.debug("Annotation file loaded " + annotFile);
95 || !new FeaturesFile(featFile.getContentUrl().toString(), DataSourceType.URL).parse(aln, featureColours, true))
97 Console.debug("No features from slivka job\n" + featFile);
100 Console.debug("Features feil loaded " + featFile);
102 return Arrays.asList(aln.getAlignmentAnnotation());