1 package jalview.ws.slivkaws;
3 import jalview.api.FeatureColourI;
4 import jalview.bin.Cache;
5 import jalview.datamodel.Alignment;
6 import jalview.datamodel.AlignmentAnnotation;
7 import jalview.datamodel.SequenceI;
8 import jalview.datamodel.features.FeatureMatcherSetI;
9 import jalview.io.AnnotationFile;
10 import jalview.io.DataSourceType;
11 import jalview.io.FeaturesFile;
12 import jalview.util.MessageManager;
13 import jalview.ws.api.JobId;
14 import jalview.ws.api.SequenceAnnotationServiceI;
15 import jalview.ws.params.ArgumentI;
16 import jalview.ws.params.WsParamSetI;
17 import jalview.ws.uimodel.AlignAnalysisUIText;
19 import java.io.IOError;
20 import java.io.IOException;
21 import java.util.Arrays;
22 import java.util.List;
25 import uk.ac.dundee.compbio.slivkaclient.RemoteFile;
26 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
27 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
29 public class SlivkaAnnotationServiceInstance extends SlivkaWSInstance implements SequenceAnnotationServiceI
31 public SlivkaAnnotationServiceInstance(SlivkaClient client,
32 SlivkaService service, boolean conservation)
34 super(client, service, !conservation ? "Protein sequence analysis"
35 : "Alignment Conservation");
38 setAlignAnalysisUI(new AlignAnalysisUIText(getName(),
39 SlivkaAnnotationServiceInstance.class,
40 "Slivka.AACons", false, true, true, true, true, 2,
41 MessageManager.getString("label.aacon_calculations"),
42 MessageManager.getString("tooltip.aacon_calculations"),
43 MessageManager.getString("label.aacon_settings"),
44 MessageManager.getString("tooltip.aacon_settings")));
46 style = ServiceClient.SEQUENCEANNOTATIONWSCLIENT;
50 public JobId submitToService(List<SequenceI> seqs, WsParamSetI preset, List<ArgumentI> paramset) throws Throwable
52 return super.submit(seqs, preset, paramset);
56 public List<AlignmentAnnotation> getAnnotationResult(JobId job,
57 List<SequenceI> seqs, Map<String, FeatureColourI> featureColours,
58 Map<String, FeatureMatcherSetI> featureFilters) throws Throwable
60 RemoteFile annotFile = null;
61 RemoteFile featFile = null;
64 List<RemoteFile> files = client.getJobResults(job.getJobId());
65 for (RemoteFile f : files)
67 if (f.getMimeType().equals("application/jalview-annotations"))
71 else if (f.getMimeType().equals("application/jalview-features"))
76 } catch (IOException e)
80 Alignment aln = new Alignment(seqs.toArray(new SequenceI[0]));
82 || !new AnnotationFile().readAnnotationFile(aln, annotFile.getURL().toString(), DataSourceType.URL))
84 Cache.log.debug("No annotation from slivka job\n" + annotFile);
87 || !new FeaturesFile(featFile.getURL().toString(), DataSourceType.URL).parse(aln, featureColours, true))
89 Cache.log.debug("No features from slivka job\n" + featFile);
91 return Arrays.asList(aln.getAlignmentAnnotation());