From cfb79b69d9fa44595560659bd95d1d1cd27677ad Mon Sep 17 00:00:00 2001 From: Mateusz Warowny Date: Wed, 12 May 2021 20:33:02 +0200 Subject: [PATCH] Revert "Merge branch 'bug/JAL-3807_jpred-with-slivka' into alpha/JAL-3066_Jalview_212_slivka-integration" This reverts commit 95f4ae66fbaecbbdc1c3ab3c6c9c611a3a9a3e46, reversing changes made to bc7c2cf5500c5a4124a69ef8e7b1374d8997558f. --- src/jalview/ws/api/JPredServiceI.java | 16 - src/jalview/ws/api/ServiceWithParameters.java | 7 +- src/jalview/ws/jws2/JPredClient.java | 69 ---- src/jalview/ws/jws2/JPredThread.java | 406 -------------------- src/jalview/ws/jws2/jabaws2/Jws2Instance.java | 2 +- .../ws/slivkaws/SlivkaJPredServiceInstance.java | 96 ----- .../ws/slivkaws/SlivkaMsaServiceInstance.java | 24 +- src/jalview/ws/slivkaws/SlivkaWSDiscoverer.java | 2 +- src/jalview/ws/slivkaws/SlivkaWSInstance.java | 40 +- 9 files changed, 33 insertions(+), 629 deletions(-) delete mode 100644 src/jalview/ws/api/JPredServiceI.java delete mode 100644 src/jalview/ws/jws2/JPredClient.java delete mode 100644 src/jalview/ws/jws2/JPredThread.java delete mode 100644 src/jalview/ws/slivkaws/SlivkaJPredServiceInstance.java diff --git a/src/jalview/ws/api/JPredServiceI.java b/src/jalview/ws/api/JPredServiceI.java deleted file mode 100644 index 5ef159d..0000000 --- a/src/jalview/ws/api/JPredServiceI.java +++ /dev/null @@ -1,16 +0,0 @@ -package jalview.ws.api; - -import java.util.List; - -import jalview.datamodel.AlignmentI; -import jalview.datamodel.SequenceI; -import jalview.io.JPredFile; - -public interface JPredServiceI extends JalviewWebServiceI -{ - public JobId predict(List sequences, boolean msa) throws Throwable; - - public AlignmentI getAlignment(JobId jobId) throws Exception; - - public JPredFile getPrediction(JobId jobId) throws Exception; -} diff --git a/src/jalview/ws/api/ServiceWithParameters.java b/src/jalview/ws/api/ServiceWithParameters.java index 4239afb..645ef34 100644 --- a/src/jalview/ws/api/ServiceWithParameters.java +++ b/src/jalview/ws/api/ServiceWithParameters.java @@ -2,7 +2,6 @@ package jalview.ws.api; import jalview.bin.Cache; import jalview.gui.AlignFrame; -import jalview.ws.jws2.JPredClient; import jalview.ws.jws2.MsaWSClient; import jalview.ws.jws2.SequenceAnnotationWSClient; import jalview.ws.params.ParamManager; @@ -10,7 +9,6 @@ import jalview.ws.params.ParamManager; import javax.swing.JMenu; public abstract class ServiceWithParameters extends UIinfo - implements JalviewServiceEndpointProviderI { protected jalview.ws.uimodel.AlignAnalysisUIText aaui; @@ -89,7 +87,7 @@ public abstract class ServiceWithParameters extends UIinfo protected enum ServiceClient { - MSAWSCLIENT, SEQUENCEANNOTATIONWSCLIENT, JPREDWSCLIENT; + MSAWSCLIENT, SEQUENCEANNOTATIONWSCLIENT; }; protected ServiceClient style = null; @@ -101,9 +99,6 @@ public abstract class ServiceWithParameters extends UIinfo case MSAWSCLIENT: new MsaWSClient().attachWSMenuEntry(atpoint, this, alignFrame); break; - case JPREDWSCLIENT: - JPredClient.getMenuEntryProvider(this).attachWSMenuEntry(atpoint, alignFrame); - break; case SEQUENCEANNOTATIONWSCLIENT: new SequenceAnnotationWSClient().attachWSMenuEntry(atpoint, this, alignFrame); diff --git a/src/jalview/ws/jws2/JPredClient.java b/src/jalview/ws/jws2/JPredClient.java deleted file mode 100644 index 1413dfe..0000000 --- a/src/jalview/ws/jws2/JPredClient.java +++ /dev/null @@ -1,69 +0,0 @@ -package jalview.ws.jws2; - -import javax.swing.JMenuItem; - -import jalview.analysis.SeqsetUtils; -import jalview.bin.Cache; -import jalview.datamodel.AlignmentView; -import jalview.datamodel.SequenceI; -import jalview.gui.AlignFrame; -import jalview.ws.WSClient; -import jalview.ws.WSMenuEntryProviderI; -import jalview.ws.api.JPredServiceI; -import jalview.ws.api.ServiceWithParameters; - -public class JPredClient extends WSClient -{ - JPredServiceI server; - - public JPredClient(ServiceWithParameters sh, String title, - AlignmentView alView, AlignFrame alFrame, boolean viewOnly) - { - server = (JPredServiceI) sh.getEndpoint(); - wsInfo = setWebService(sh, false); - startClient(title, alView, alFrame, viewOnly); - } - - private void startClient(String title, AlignmentView view, - AlignFrame frame, boolean viewOnly) - { - var msf = view.getSequences(); - var seq = msf[0].getSeq('-'); - int[] delMap = null; - if (viewOnly) - delMap = view.getVisibleContigMapFor(seq.gapMap()); - var aln = new SequenceI[msf.length]; - for (int i = 0; i < msf.length; i++) - { - aln[i] = msf[i].getSeq('-'); - } - var sequenceInfo = msf.length > 1 ? SeqsetUtils.uniquify(aln, true) - : SeqsetUtils.SeqCharacterHash(seq); - if (viewOnly) - { - String seqs[] = view.getSequenceStrings('-'); - for (int i = 0; i < msf.length; i++) - aln[i].setSequence(seqs[i]); - seq.setSequence(seqs[0]); - } - var thread = new JPredThread(wsInfo, title, server, sequenceInfo, aln, - delMap, view, frame, WsURL); - wsInfo.setthisService(thread); - wsInfo.setVisible(true); - thread.start(); - } - - // sh parameter should be moved to the WSMenuEntryProvider interface - public static WSMenuEntryProviderI getMenuEntryProvider(ServiceWithParameters sh) - { - return (menu, frame) -> { - final JMenuItem mi = new JMenuItem(sh.getName()); - mi.setToolTipText(sh.getHostURL()); - mi.addActionListener((event) -> { - var view = frame.gatherSeqOrMsaForSecStrPrediction(); - new JPredClient(sh, frame.getTitle(), view, frame, true); - }); - menu.add(mi); - }; - } -} diff --git a/src/jalview/ws/jws2/JPredThread.java b/src/jalview/ws/jws2/JPredThread.java deleted file mode 100644 index d10ca8a..0000000 --- a/src/jalview/ws/jws2/JPredThread.java +++ /dev/null @@ -1,406 +0,0 @@ -package jalview.ws.jws2; - -import static java.lang.String.format; - -import java.util.Hashtable; -import java.util.List; - -import jalview.analysis.SeqsetUtils; -import jalview.bin.Cache; -import jalview.commands.RemoveGapsCommand; -import jalview.datamodel.Alignment; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.AlignmentView; -import jalview.datamodel.HiddenColumns; -import jalview.datamodel.SequenceI; -import jalview.gui.AlignFrame; -import jalview.gui.Desktop; -import jalview.gui.WebserviceInfo; -import jalview.io.JPredFile; -import jalview.io.JnetAnnotationMaker; -import jalview.util.MessageManager; -import jalview.ws.AWSThread; -import jalview.ws.AWsJob; -import jalview.ws.JobStateSummary; -import jalview.ws.WSClientI; -import jalview.ws.api.CancellableI; -import jalview.ws.api.JPredServiceI; -import jalview.ws.gui.WsJob; -import jalview.ws.gui.WsJob.JobState; - - -public class JPredThread extends AWSThread implements WSClientI -{ - - private static class JPredJob extends WsJob - { - private final Hashtable sequenceInfo; - private final List msf; - private final int[] delMap; - private AlignmentI alignment = null; - private HiddenColumns hiddenCols = null; - - private JPredJob(Hashtable sequenceInfo, SequenceI[] msf, int[] delMap) - { - this.sequenceInfo = sequenceInfo; - this.msf = List.of(msf); - this.delMap = delMap; - } - - @Override - public boolean hasValidInput() - { - return true; - } - - @Override - public boolean hasResults() - { - return (isSubjobComplete() && alignment != null); - } - - public boolean isMSA() - { - return msf.size() > 1; - } - } - - - private JPredServiceI server; - private String title; - private Hashtable sequenceInfo; - private SequenceI[] msf; - private int[] delMap; - - public JPredThread(WebserviceInfo wsInfo, String title, - JPredServiceI server, Hashtable sequenceInfo, - SequenceI[] msf, int[] delMap, AlignmentView view, AlignFrame frame, - String wsURL) - { - super(frame, wsInfo, view, wsURL); - this.server = server; - this.title = title; - this.sequenceInfo = sequenceInfo; - this.msf = msf; - this.delMap = delMap; - JPredJob job = new JPredJob(sequenceInfo, msf, delMap); - this.jobs = new JPredJob[] { job }; - } - - @Override - public boolean isCancellable() - { - return server instanceof CancellableI; - } - - @Override - public boolean canMergeResults() - { - return false; - } - - @Override - public void cancelJob() - { - // TODO Auto-generated method stub - - } - - @Override - public void pollJob(AWsJob job_) throws Exception - { - var job = (JPredJob) job_; - server.updateStatus(job); - server.updateJobProgress(job); - } - - @Override - public void StartJob(AWsJob job_) - { - if (!(job_ instanceof JPredJob)) - throw new RuntimeException("Invalid job type"); - var job = (JPredJob) job_; - if (job.isSubmitted()) - { - return; - } - try { - try - { - var jobHandle = server.predict(job.msf, job.isMSA()); - if (jobHandle != null) - job.setJobHandle(jobHandle); - } - catch (Throwable th) { - if (!server.handleSubmitError(th, job, wsInfo)) { - throw th; - } - } - if (job.getJobId() != null) { - job.setSubmitted(true); - job.setSubjobComplete(false); - return; - } - else { - throw new Exception(MessageManager.formatMessage( - "exception.web_service_returned_null_try_later", - new String[] - { WsUrl })); - } - } - catch (Throwable th) - { - // For unexpected errors - System.err.println(WebServiceName - + "Client: Failed to submit the sequences for alignment (probably a server side problem)\n" - + "When contacting Server:" + WsUrl + "\n"); - th.printStackTrace(System.err); - wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_SERVERERROR); - wsInfo.setStatus(job.getJobnum(), - WebserviceInfo.STATE_STOPPED_SERVERERROR); - - } - finally - { - if (!job.isSubmitted()) - { - job.setAllowedServerExceptions(0); - wsInfo.appendProgressText(job.getJobnum(), MessageManager.getString( - "info.failed_to_submit_sequences_for_alignment")); - } - } - } - - @Override - public void parseResult() - { - long progbar = (long) (Math.random() * ~(1L << 63)); - wsInfo.setProgressBar( - MessageManager.getString("status.collecting_job_results"), progbar); - int results = 0; - var finalState = new JobStateSummary(); - try - { - for (int i = 0; i < jobs.length; i++) { - final var job = (JPredJob) jobs[i]; - finalState.updateJobPanelState(wsInfo, OutputHeader, job); - if (job.isFinished()) { - try { - server.updateJobProgress(job); - } - catch (Exception e) { - Cache.log.warn(format( - "Exception when retrieving remaining Job progress data " + - "for job %s on server %s", job.getJobId(), WsUrl)); - e.printStackTrace(); - } - // removed the waiting loop - Cache.log.debug(format("Job Execution file for job: %s " + - "on server %s%n%s", job.getJobId(), WsUrl, job.getStatus())); - try { - prepareJobResult(job); - } - catch (Exception e) { - if (!server.handleCollectionException(e, job, wsInfo)) { - Cache.log.error("Could not get alignment for job.", e); - job.setState(JobState.SERVERERROR); - } - } - } - finalState.updateJobPanelState(wsInfo, OutputHeader, job); - if (job.isSubmitted() && job.isSubjobComplete() && job.hasResults()) { - results++; - } - } - } - catch (Exception e) { - Cache.log.error( - "Unexpected exception when processing results for " + title, e); - wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); - } - if (results > 0) { - wsInfo.showResultsNewFrame.addActionListener( - (evt) -> displayResults(true)); - wsInfo.mergeResults.addActionListener( - (evt) -> displayResults(false)); - wsInfo.setResultsReady(); - } - else { - wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); - wsInfo.appendInfoText("No jobs ran."); - wsInfo.setFinishedNoResults(); - } - updateGlobalStatus(finalState); - wsInfo.removeProgressBar(progbar); - } - - static final int msaIndex = 0; - - private void prepareJobResult(JPredJob job) throws Exception - { - HiddenColumns hiddenCols = null; - int firstSeq = -1; - AlignmentI alignment; - var prediction = server.getPrediction(job.getJobHandle()); - var preds = prediction.getSeqsAsArray(); - - if (job.msf.size() > 1) - { - if (job.delMap != null) - { - Object[] alandcolsel = input - .getAlignmentAndHiddenColumns(getGapChar()); - alignment = new Alignment((SequenceI[]) alandcolsel[0]); - hiddenCols = (HiddenColumns) alandcolsel[1]; - } - else - { - alignment = server.getAlignment(job.getJobHandle()); - var seqs = new SequenceI[alignment.getHeight()]; - for (int i = 0; i < alignment.getHeight(); i++) - { - seqs[i] = alignment.getSequenceAt(i); - } - if (!SeqsetUtils.deuniquify(sequenceInfo, seqs)) - { - throw (new Exception(MessageManager.getString( - "exception.couldnt_recover_sequence_properties_for_alignment"))); - } - } - firstSeq = 0; - if (currentView.getDataset() != null) - { - alignment.setDataset(currentView.getDataset()); - } - else - { - alignment.setDataset(null); - } - JnetAnnotationMaker.add_annotation(prediction, alignment, firstSeq, false, - job.delMap); - } - else - { - alignment = new Alignment(preds); - firstSeq = prediction.getQuerySeqPosition(); - if (job.delMap != null) - { - Object[] alanndcolsel = input.getAlignmentAndHiddenColumns(getGapChar()); - SequenceI[] seqs = (SequenceI[]) alanndcolsel[0]; - new RemoveGapsCommand(MessageManager.getString("label.remove_gaps"), - new SequenceI[] {seqs[msaIndex]}, currentView); - SequenceI profileSeq = alignment.getSequenceAt(firstSeq); - profileSeq.setSequence(seqs[msaIndex].getSequenceAsString()); - } - if (!SeqsetUtils.SeqCharacterUnhash( - alignment.getSequenceAt(firstSeq), sequenceInfo)) - { - throw new Exception(MessageManager.getString( - "exception.couldnt_recover_sequence_props_for_jnet_query")); - } - alignment.setDataset(currentView.getDataset()); - JnetAnnotationMaker.add_annotation(prediction, alignment, firstSeq, true, - job.delMap); - SequenceI profileSeq = alignment.getSequenceAt(0); - alignToProfileSeq(alignment, profileSeq); - if (job.delMap != null) - { - hiddenCols = alignment.propagateInsertions(profileSeq, input); - } - } - - for (var annot : alignment.getAlignmentAnnotation()) - { - if (annot.sequenceRef != null) - { - replaceAnnotationOnAlignmentWith(annot, annot.label, - "jalview.ws.JPred", annot.sequenceRef); - } - } - job.alignment = alignment; - job.hiddenCols = hiddenCols; - } - - private static void replaceAnnotationOnAlignmentWith( - AlignmentAnnotation newAnnot, String typeName, String calcId, - SequenceI aSeq) - { - SequenceI dsseq = aSeq.getDatasetSequence(); - while (dsseq.getDatasetSequence() != null) - { - dsseq = dsseq.getDatasetSequence(); - } - // look for same annotation on dataset and lift this one over - List dsan = dsseq.getAlignmentAnnotations(calcId, - typeName); - if (dsan != null && dsan.size() > 0) - { - for (AlignmentAnnotation dssan : dsan) - { - dsseq.removeAlignmentAnnotation(dssan); - } - } - AlignmentAnnotation dssan = new AlignmentAnnotation(newAnnot); - dsseq.addAlignmentAnnotation(dssan); - dssan.adjustForAlignment(); - } - - private static void alignToProfileSeq(AlignmentI al, SequenceI profileseq) - { - char gc = al.getGapCharacter(); - int[] gapMap = profileseq.gapMap(); - // insert gaps into profile - for (int lp = 0, r = 0; r < gapMap.length; r++) - { - if (gapMap[r] - lp > 1) - { - StringBuffer sb = new StringBuffer(); - for (int s = 0, ns = gapMap[r] - lp; s < ns; s++) - { - sb.append(gc); - } - for (int s = 1, ns = al.getHeight(); s < ns; s++) - { - String sq = al.getSequenceAt(s).getSequenceAsString(); - int diff = gapMap[r] - sq.length(); - if (diff > 0) - { - // pad gaps - sq = sq + sb; - while ((diff = gapMap[r] - sq.length()) > 0) - { - sq = sq + ((diff >= sb.length()) ? sb.toString() - : sb.substring(0, diff)); - } - al.getSequenceAt(s).setSequence(sq); - } - else - { - al.getSequenceAt(s).setSequence(sq.substring(0, gapMap[r]) - + sb.toString() + sq.substring(gapMap[r])); - } - } - } - lp = gapMap[r]; - } - } - - private void displayResults(boolean newWindow) - { - if (jobs == null || jobs.length == 0) - { - return; - } - var job = (JPredJob) jobs[0]; - if (job.hasResults() && newWindow) - { - job.alignment.setSeqrep(job.alignment.getSequenceAt(0)); - AlignFrame frame = new AlignFrame(job.alignment, job.hiddenCols, - AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); - Desktop.addInternalFrame(frame, title, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - } - } - -} diff --git a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java index 36a42ab..47fb9c6 100644 --- a/src/jalview/ws/jws2/jabaws2/Jws2Instance.java +++ b/src/jalview/ws/jws2/jabaws2/Jws2Instance.java @@ -38,7 +38,7 @@ import compbio.metadata.PresetManager; import compbio.metadata.RunnerConfig; public class Jws2Instance extends ServiceWithParameters - implements AutoCloseable + implements JalviewServiceEndpointProviderI, AutoCloseable { public JABAService service; diff --git a/src/jalview/ws/slivkaws/SlivkaJPredServiceInstance.java b/src/jalview/ws/slivkaws/SlivkaJPredServiceInstance.java deleted file mode 100644 index 462be28..0000000 --- a/src/jalview/ws/slivkaws/SlivkaJPredServiceInstance.java +++ /dev/null @@ -1,96 +0,0 @@ -package jalview.ws.slivkaws; - -import java.io.IOError; -import java.io.IOException; -import java.util.List; - -import jalview.datamodel.AlignmentI; -import jalview.datamodel.SequenceI; -import jalview.io.DataSourceType; -import jalview.io.JPredFile; -import jalview.ws.api.JPredServiceI; -import jalview.ws.api.JobId; -import jalview.ws.params.ArgumentI; -import uk.ac.dundee.compbio.slivkaclient.RemoteFile; -import uk.ac.dundee.compbio.slivkaclient.SlivkaClient; -import uk.ac.dundee.compbio.slivkaclient.SlivkaService; - -public class SlivkaJPredServiceInstance extends SlivkaWSInstance - implements JPredServiceI -{ - - private class InputFormatParameter implements ArgumentI - { - String value = ""; - - @Override - public String getName() - { - return "format"; - } - - @Override - public String getValue() - { - return value; - } - - @Override - public void setValue(String selectedItem) - { - value = selectedItem; - } - } - - - public SlivkaJPredServiceInstance(SlivkaClient client, - SlivkaService service, String action) - { - super(client, service, action); - style = ServiceClient.JPREDWSCLIENT; - } - - @Override - public JobId predict(List sequences, boolean msa) throws Throwable - { - // Hack allowing to send both single and msa jobs - // until msa and single sequence services are separated. - var arg = new InputFormatParameter(); - arg.setValue(msa ? "fasta" : "seq"); - return super.submit(sequences, null, List.of(arg)); - } - - @Override - public AlignmentI getAlignment(JobId jobId) throws Exception - { - List files; - try { - files = client.getJobResults(jobId.getJobId()); - for (RemoteFile f : files) { - var alignment = readAlignment(f); - if (alignment != null) - { - return alignment; - } - } - } - catch (IOException e) { - throw new IOError(e); - } - return null; - } - - @Override - public JPredFile getPrediction(JobId jobId) throws Exception - { - List files = client.getJobResults(jobId.getJobId()); - for (RemoteFile f : files) - { - if (f.getLabel().equals("concise")) - { - return new JPredFile(f.getURL(), DataSourceType.URL); - } - } - return null; - } -} diff --git a/src/jalview/ws/slivkaws/SlivkaMsaServiceInstance.java b/src/jalview/ws/slivkaws/SlivkaMsaServiceInstance.java index a04cff5..9a33b04 100644 --- a/src/jalview/ws/slivkaws/SlivkaMsaServiceInstance.java +++ b/src/jalview/ws/slivkaws/SlivkaMsaServiceInstance.java @@ -1,17 +1,22 @@ package jalview.ws.slivkaws; -import java.io.IOError; -import java.io.IOException; -import java.rmi.ServerError; -import java.util.List; - import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FormatAdapter; import jalview.ws.api.JobId; import jalview.ws.api.MultipleSequenceAlignmentI; import jalview.ws.params.ArgumentI; import jalview.ws.params.InvalidArgumentException; import jalview.ws.params.WsParamSetI; + +import java.io.IOError; +import java.io.IOException; +import java.rmi.ServerError; +import java.util.List; + +import compbio.data.msa.Category; import uk.ac.dundee.compbio.slivkaclient.RemoteFile; import uk.ac.dundee.compbio.slivkaclient.SlivkaClient; import uk.ac.dundee.compbio.slivkaclient.SlivkaService; @@ -38,7 +43,14 @@ public class SlivkaMsaServiceInstance extends SlivkaWSInstance implements Multip files = client.getJobResults(jobId.getJobId()); for (RemoteFile f : files) { - return readAlignment(f); + if (f.getMimeType().equals("application/clustal")) + { + return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Clustal); + } + else if (f.getMimeType().equals("application/fasta")) + { + return new FormatAdapter().readFile(f.getURL().toString(), DataSourceType.URL, FileFormat.Fasta); + } } } catch (IOException e) { diff --git a/src/jalview/ws/slivkaws/SlivkaWSDiscoverer.java b/src/jalview/ws/slivkaws/SlivkaWSDiscoverer.java index d290024..e849f97 100644 --- a/src/jalview/ws/slivkaws/SlivkaWSDiscoverer.java +++ b/src/jalview/ws/slivkaws/SlivkaWSDiscoverer.java @@ -122,7 +122,7 @@ public class SlivkaWSDiscoverer implements WSDiscovererI service, Category.CATEGORY_DISORDER); break; case "protein secondary structure prediction": - newInstance = new SlivkaJPredServiceInstance(client, + newInstance = new SlivkaAnnotationServiceInstance(client, service, "Secondary Structure Prediction"); break; case "multiple sequence alignment": diff --git a/src/jalview/ws/slivkaws/SlivkaWSInstance.java b/src/jalview/ws/slivkaws/SlivkaWSInstance.java index 9541f13..75e5722 100644 --- a/src/jalview/ws/slivkaws/SlivkaWSInstance.java +++ b/src/jalview/ws/slivkaws/SlivkaWSInstance.java @@ -1,21 +1,7 @@ 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; @@ -28,6 +14,18 @@ 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; @@ -262,19 +260,5 @@ public abstract class SlivkaWSInstance extends ServiceWithParameters } return store; } - - public static AlignmentI readAlignment(RemoteFile f) throws IOException - { - final var mimetype = f.getMimeType(); - FileFormat format; - if (mimetype == "application/clustal") - format = FileFormat.Clustal; - else if (mimetype == "application/fasta") - format = FileFormat.Fasta; - else - return null; - return new FormatAdapter().readFile(f.getURL().toString(), - DataSourceType.URL, format); - } } -- 1.7.10.2