package compbio.ws.server; import java.util.List; import javax.jws.WebService; import org.apache.log4j.Logger; import compbio.data.msa.JABAService; import compbio.data.msa.SequenceAnnotation; import compbio.data.sequence.FastaSequence; import compbio.data.sequence.RNAStructScoreManager; import compbio.engine.client.ConfiguredExecutable; import compbio.metadata.JobSubmissionException; import compbio.metadata.LimitExceededException; import compbio.metadata.Option; import compbio.metadata.Preset; import compbio.metadata.ResultNotAvailableException; import compbio.metadata.UnsupportedRuntimeException; import compbio.metadata.WrongParameterException; import compbio.runner.conservation.AACon; import compbio.runner.structure.RNAalifold; @WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = JABAService.V2_SERVICE_NAMESPACE, serviceName = "RNAalifoldWS") public class RNAalifoldWS extends SequenceAnnotationService implements SequenceAnnotation { private static Logger log = Logger.getLogger(RNAalifoldWS.class); public RNAalifoldWS() { super (new RNAalifold(), log); } // // for testing // @Override // public RNAStructScoreManager getAnnotation(String jobId) // throws ResultNotAvailableException { // return WSUtil.getAnnotation(jobId, log); // } // Only purpose of Overrides is to replace "analize" with "fold" method // so that a clustal input file and not fasta will be generated @Override public String analize(List sequences) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException { WSUtil.validateFastaInput(sequences); ConfiguredExecutable confRNAalifold = init(sequences); return WSUtil.fold(sequences, confRNAalifold, log, "analize", getLimit("")); } // Only purpose of Overrides is to replace "analize" with "fold" method // so that a clustal input file and not fasta will be generated @Override public String customAnalize(List sequences, List> options) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException, WrongParameterException { WSUtil.validateFastaInput(sequences); ConfiguredExecutable confRNAalifold = init(sequences); List params = WSUtil.getCommands(options, AACon.KEY_VALUE_SEPARATOR); confRNAalifold.addParameters(params); return WSUtil.fold(sequences, confRNAalifold, log, "customAnalize", getLimit("")); } /* * No presets are supported, thus the result of this call will be as simple * call to analize without parameters */ @Override public String presetAnalize(List sequences, Preset preset) throws UnsupportedRuntimeException, LimitExceededException, JobSubmissionException, WrongParameterException { return analize(sequences); } }