package jalview.ws.jws2.jabaws2; import jalview.datamodel.AlignmentI; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; import jalview.ws.api.CancellableI; import jalview.ws.api.JobId; import jalview.ws.api.MultipleSequenceAlignmentI; import jalview.ws.jws2.JabaParamStore; import jalview.ws.jws2.JabaPreset; import jalview.ws.params.ArgumentI; import jalview.ws.params.InvalidArgumentException; import jalview.ws.params.WsParamSetI; import java.io.IOError; import java.rmi.ServerError; import java.util.ArrayList; import java.util.List; import compbio.data.sequence.Alignment; import compbio.data.sequence.FastaSequence; import compbio.metadata.ResultNotAvailableException; public class JabawsMsaInstance extends JabawsServiceInstance implements MultipleSequenceAlignmentI, CancellableI { @Override public JobId align(List toalign, WsParamSetI parameters, List arguments) throws Throwable { List seqs = new ArrayList<>(); for (SequenceI seq : toalign) { seqs.add(new FastaSequence(seq.getName(), seq.getSequenceAsString())); } String jobid = null; if (parameters != null) { if (parameters instanceof JabaPreset) { jobid = service.presetAlign(seqs, ((JabaPreset) parameters).getJabaPreset()); } else { jobid = service.customAlign(seqs, JabaParamStore .getJabafromJwsArgs(parameters.getArguments())); } } else if (arguments != null && arguments.size() > 0) { jobid = service.customAlign(seqs, JabaParamStore.getJabafromJwsArgs(arguments)); } else { jobid = service.align(seqs); } if (jobid == null) { return null; } return new JobId(our.getServiceType(), our.getName(), jobid); } @Override public AlignmentI getAlignmentFor(JobId jobId) throws InvalidArgumentException, ServerError, IOError { Alignment alignment = null; try { alignment = service.getResult(jobId.getJobId()); } catch (ResultNotAvailableException rnotav) { // TODO - migrate JABA exception // throw new ServerError("Couldn't get result for job",rnotav); } SequenceI[] alseqs; int alseq_l = 0; if (alignment.getSequences().size() == 0) { return null; } alseqs = new SequenceI[alignment.getSequences().size()]; for (compbio.data.sequence.FastaSequence seq : alignment.getSequences()) { alseqs[alseq_l++] = new Sequence(seq.getId(), seq.getSequence()); } AlignmentI jv_al = new jalview.datamodel.Alignment(alseqs); jv_al.setGapCharacter(alignment.getMetadata().getGapchar()); return jv_al; } public JabawsMsaInstance(Jws2Instance handle) { super(handle); } }