package jalview.ws2.slivka;
+import static java.lang.String.format;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import jalview.api.AlignViewportI;
+import jalview.api.FeatureColourI;
import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
+import jalview.datamodel.features.FeatureMatcherSetI;
import jalview.io.AnnotationFile;
import jalview.io.DataSourceType;
import jalview.io.FeaturesFile;
return false;
}
- public AlignmentI getAlignment(WSJob job, List<SequenceI> dataset,
- AlignViewportI viewport) throws IOException
+ public AlignmentI getAlignment(WSJob job) throws IOException
{
Collection<RemoteFile> files;
var slivkaJob = client.getJob(job.getJobId());
return null;
}
- public FeaturesFile getFeaturesFile(WSJob job,
- List<SequenceI> dataset, AlignViewportI viewport) throws IOException
+ public List<AlignmentAnnotation> attachAnnotations(WSJob job,
+ List<SequenceI> dataset, Map<String, FeatureColourI> featureColours,
+ Map<String, FeatureMatcherSetI> featureFilters) throws IOException
{
+ RemoteFile annotFile = null;
+ RemoteFile featFile = null;
+
var slivkaJob = client.getJob(job.getJobId());
Collection<RemoteFile> files = slivkaJob.getResults();
for (RemoteFile f : files)
{
- if (f.getMediaType().equals("application/jalview-features"))
- {
- return new FeaturesFile(f.getContentUrl().toString(), DataSourceType.URL);
- }
+ if (f.getMediaType().equals("application/jalview-annotations"))
+ annotFile = f;
+ else if (f.getMediaType().equals("application/jalview-features"))
+ featFile = f;
}
- return null;
- }
+ Alignment aln = new Alignment(dataset.toArray(new SequenceI[0]));
- public List<AlignmentAnnotation> getAnnotations(WSJob job,
- List<SequenceI> dataset, AlignViewportI viewport) throws IOException
- {
- var slivkaJob = client.getJob(job.getJobId());
- Collection<RemoteFile> files = slivkaJob.getResults();
- for (RemoteFile f : files)
+ boolean annotPresent = annotFile != null;
+ if (annotFile != null)
{
- if (f.getMediaType().equals("application/jalview-annotations"))
- {
- Alignment aln = new Alignment(dataset.toArray(new SequenceI[0]));
- AnnotationFile af = new AnnotationFile();
- boolean valid = af.readAnnotationFileWithCalcId(aln, service.getId(),
- f.getContentUrl().toString(), DataSourceType.URL);
- if (valid)
- {
- return Arrays.asList(aln.getAlignmentAnnotation());
- }
- else
- {
- throw new IOException("Unable to read annotations from file " +
- f.getContentUrl().toString());
- }
- }
+ AnnotationFile af = new AnnotationFile();
+ annotPresent = af.readAnnotationFileWithCalcId(
+ aln, service.getId(), annotFile.getContentUrl().toString(),
+ DataSourceType.URL);
}
- return null;
- }
+ if (annotPresent)
+ Cache.log.debug(format("Annotation file loaded %s", annotFile));
+ else
+ Cache.log.debug(format("No annotations loaded from %s", annotFile));
- public JPredFile getPrediction(WSJob job, List<SequenceI> dataset,
- AlignViewportI viewport) throws IOException
- {
- Collection<RemoteFile> files = client.getJob(job.getJobId()).getResults();
- for (RemoteFile f : files)
+ boolean featPresent = featFile != null;
+ if (featFile != null)
{
- if (f.getLabel().equals("concise"))
- {
- return new JPredFile(f.getContentUrl(), DataSourceType.URL);
- }
+ FeaturesFile ff = new FeaturesFile(featFile.getContentUrl().toString(),
+ DataSourceType.URL);
+ featPresent = ff.parse(aln, featureColours, true);
}
- return null;
+ if (featPresent)
+ Cache.log.debug(format("Features file loaded %s", featFile));
+ else
+ Cache.log.debug(format("No features loaded from %s", annotFile));
+ return Arrays.asList(aln.getAlignmentAnnotation());
}
@Override