From: Mateusz Warowny Date: Tue, 27 Jul 2021 15:36:15 +0000 (+0200) Subject: Merge branch 'bug/JAL-3807_jpred-with-slivka' into alpha/JAL-3066_Jalview_212_slivka... X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=eb6d7c560434c986f1dc76f6243d1493688f397e;hp=-c;p=jalview.git Merge branch 'bug/JAL-3807_jpred-with-slivka' into alpha/JAL-3066_Jalview_212_slivka-integration --- eb6d7c560434c986f1dc76f6243d1493688f397e diff --combined src/jalview/ws/slivkaws/SlivkaWSInstance.java index 75e5722,138b432..fa54cf0 --- a/src/jalview/ws/slivkaws/SlivkaWSInstance.java +++ b/src/jalview/ws/slivkaws/SlivkaWSInstance.java @@@ -1,7 -1,21 +1,21 @@@ package jalview.ws.slivkaws; + import java.io.ByteArrayInputStream; + import java.io.ByteArrayOutputStream; + import java.io.IOError; + import java.io.IOException; + import java.io.InputStream; + import java.util.Arrays; + import java.util.EnumMap; + import java.util.HashSet; + import java.util.List; + import java.util.Optional; + import java.util.Set; + + import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; import jalview.gui.WebserviceInfo; + import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FormatAdapter; import jalview.ws.api.JalviewServiceEndpointProviderI; @@@ -13,21 -27,7 +27,8 @@@ import jalview.ws.params.ArgumentI import jalview.ws.params.ParamDatastoreI; import jalview.ws.params.ParamManager; import jalview.ws.params.WsParamSetI; - - import java.io.ByteArrayInputStream; - import java.io.ByteArrayOutputStream; - import java.io.IOError; - import java.io.IOException; - import java.io.InputStream; - import java.util.Arrays; - import java.util.EnumMap; - import java.util.HashSet; - import java.util.List; - import java.util.Optional; - import java.util.Set; - import uk.ac.dundee.compbio.slivkaclient.FieldType; +import uk.ac.dundee.compbio.slivkaclient.FileField; import uk.ac.dundee.compbio.slivkaclient.FormField; import uk.ac.dundee.compbio.slivkaclient.FormValidationException; import uk.ac.dundee.compbio.slivkaclient.JobState; @@@ -76,34 -76,21 +77,34 @@@ public abstract class SlivkaWSInstance WsParamSetI preset, List args) throws Throwable { SlivkaForm form = service.getForm(); - Optional inputField = form.getFields().stream() - .filter(f -> f.getType() == FieldType.FILE).findFirst(); - if (inputField.isPresent()) + for (FormField field : form.getFields()) { - StringBuilder builder = new StringBuilder(); - for (SequenceI seq : sequences) + if (field.getType() == FieldType.FILE) { - builder.append(">").append(seq.getName()).append("\n") - .append(seq.getSequence()).append("\n"); + FormatAdapter fa = new FormatAdapter(); + fa.setNewlineString("\r\n"); + FileField fileField = (FileField) field; + FileFormat format; + switch (fileField.getMediaType()) + { + case "application/pfam": + format = FileFormat.Pfam; + break; + case "application/stockholm": + format = FileFormat.Stockholm; + break; + default: + case "application/fasta": + format = FileFormat.Fasta; + break; + } + InputStream stream = new ByteArrayInputStream( + fa.formatSequences(format, sequences.toArray(new SequenceI[0])) + .getBytes()); + RemoteFile rf = client.uploadFile(stream, "input", + fileField.getMediaType()); + form.insert(field.getName(), rf); } - InputStream stream = new ByteArrayInputStream( - builder.toString().getBytes()); - RemoteFile file = client.uploadFile(stream, "input.fa", - "application/fasta"); - form.insert(inputField.get().getName(), file); } if (args != null) { @@@ -260,5 -247,19 +261,19 @@@ } return store; } + + public static AlignmentI readAlignment(RemoteFile f) throws IOException + { + final var mimetype = f.getMimeType(); + FileFormat format; + if (mimetype.equals("application/clustal")) + format = FileFormat.Clustal; + else if (mimetype.equals("application/fasta")) + format = FileFormat.Fasta; + else + return null; + return new FormatAdapter().readFile(f.getURL().toString(), + DataSourceType.URL, format); + } }