with String.
</parameters>
<!-- ?Will Jabaws recognize that arguments for the following params must
be of the form -s INT and &dash-stochBT=INT -->
- <parameters isRequired='false'>
- <name>Stochastic Backtrack</name>
- <description>Compute a number of random structures</description>
- <optionNames>-s</optionNames>
+<!-- <parameters isRequired='false'> -->
+<!-- <name>Stochastic Backtrack</name> -->
+<!-- <description>Compute a number of random structures</description> -->
+<!-- <optionNames>-s</optionNames> -->
<!-- Having multiple optionNames requires a default value but
in a parameter defaultValue refers to the argument -->
<!-- <optionNames>-stochBT</optionNames> -->
- <defaultValue>5</defaultValue> <!-- arbitrary -->
- <validValue>
- <type>Int</type>
- </validValue>
- </parameters>
+<!-- <defaultValue>5</defaultValue> arbitrary -->
+<!-- <validValue> -->
+<!-- <type>Int</type> -->
+<!-- </validValue> -->
+<!-- </parameters> -->
<parameters isRequired='false'>
<name>stochBT_en</name>
<description>Print Backtrack structures</description>
<type>String</type>
</validValue>
</parameters>
- <parameters isRequired='false'>
- <name>betaScale</name>
- <description>Set scaling of Boltzmann factors</description>
- <optionNames>--betaScale</optionNames>
- <defaultValue>1.0</defaultValue>
- <validValue>
- <type>Double</type>
- </validValue>
- </parameters>
+ <!-- Is dependant on -p (partfunc) -->
+<!-- <parameters isRequired='false'> -->
+<!-- <name>betaScale</name> -->
+<!-- <description>Set scaling of Boltzmann factors</description> -->
+<!-- <optionNames>-betaScale</optionNames> -->
+<!-- <defaultValue>1.0</defaultValue> -->
+<!-- <validValue> -->
+<!-- <type>Double</type> -->
+<!-- </validValue> -->
+<!-- </parameters> -->
</runnerConfig>
\ No newline at end of file
private static Logger log = Logger.getLogger(RNAalifold.class);
+ // May not be necessary as defult is "<space>" but still dont know
+ // How to deal with different key value separators for different params
+ public static final String KEY_VALUE_SEPARATOR = " ";
+
+ public RNAalifold() {
+ super(KEY_VALUE_SEPARATOR);
+ }
@Override
public RNAalifold setOutput(String outFile) {
- log.info("Set ouput file: " + outFile.toString());
super.setOutput(outFile);
return this;
}
@Override
public RNAalifold setInput(String inFile) {
- log.info("Set input file: " + inFile.toString());
cbuilder.setLast(inFile);
super.setInput(inFile);
return this;
}
- // OLD :- the new methods for reading are found in
+ // the new currently used methods for reading are found in
// - compbio.data.sequence.SequenceUtil and
// - compbio.runner.Util
// Simple and generic methods for reading a whole file
- // Should surfice until a more detailed datamodel and parser are developed
// private static String readRNAStruct(String workDirectory,
// String structFile) throws IOException, FileNotFoundException {
// assert !compbio.util.Util.isEmpty(workDirectory);
--- /dev/null
+package compbio.ws.client;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.ConnectException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.ws.WebServiceException;
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import compbio.data.msa.JABAService;
+import compbio.data.msa.SequenceAnnotation;
+import compbio.data.sequence.Alignment;
+import compbio.data.structure.FoldWS;
+import compbio.data.sequence.RNAstruct;
+import compbio.data.sequence.ClustalAlignmentUtil;
+import compbio.data.sequence.ConservationMethod;
+import compbio.data.sequence.FastaSequence;
+import compbio.data.sequence.ScoreManager;
+import compbio.data.sequence.SequenceUtil;
+import compbio.data.sequence.UnknownFileFormatException;
+import compbio.metadata.AllTestSuit;
+import compbio.metadata.JobSubmissionException;
+import compbio.metadata.LimitExceededException;
+import compbio.metadata.Option;
+import compbio.metadata.PresetManager;
+import compbio.metadata.ResultNotAvailableException;
+import compbio.metadata.RunnerConfig;
+import compbio.metadata.UnsupportedRuntimeException;
+import compbio.metadata.WrongParameterException;
+
+import compbio.runner.conservation.AACon;
+import compbio.util.SysPrefs;
+import compbio.ws.server.RNAalifoldWS;
+
+public class TestRNAalifoldWS {
+
+ FoldWS<RNAalifoldWS> foldws;
+
+// @BeforeTest(groups = {AllTestSuit.test_group_webservices})
+// void initConnection() {
+//
+// try {
+// JABAService client = Jws2Client.connect(
+// "http://localhost:8080/jabaws", Services.RNAalifoldWS);
+// foldws = (FoldWS<RNAalifoldWS>) client;
+// } catch (ConnectException e) {
+// e.printStackTrace();
+// fail(e.getMessage());
+// } catch (WebServiceException e) {
+// e.printStackTrace();
+// fail(e.getMessage());
+// }
+// }
+
+
+ @Test(groups = {AllTestSuit.test_group_webservices})
+ public void testFold() throws FileNotFoundException, IOException,
+ UnknownFileFormatException {
+
+ String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()
+ + File.separator;
+
+ Alignment aln = ClustalAlignmentUtil.readClustalFile(new FileInputStream(
+ CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"
+ + File.separator + "unfolded_RF00031.aln"));
+
+ try {
+ String jobId = foldws.fold(aln);
+ System.out.println("J: " + jobId);
+ RNAstruct result = foldws.getResult(jobId);
+ assertNotNull(result);
+
+ } catch (UnsupportedRuntimeException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } catch (LimitExceededException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } catch (JobSubmissionException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ } catch (ResultNotAvailableException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+}
+
+
+
--- /dev/null
+package compbio.data.msa;
+
+import java.security.InvalidParameterException;
+import java.util.List;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import javax.naming.ldap.UnsolicitedNotificationEvent;
+
+import compbio.data.sequence.Alignment;
+import compbio.data.sequence.RNAstruct;
+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;
+
+/*
+ * Interface for tools that results RNA secondary structure information
+ *
+ * Still Unsure whether It would be better to use just the aligned fastaList
+ * or the Alignment object
+ */
+
+// effect of a different targetNamespace?
+@WebService(targetNamespace = "http://msa.data.compbio/01/01/2010/")
+public interface FoldWS<T>
+ extends
+ JABAService,
+ JManagement,
+ Metadata<T> {
+
+
+ // Is Alignment object JaxB compatible?
+
+ String fold(
+ @WebParam(name = "alignment") Alignment alignment)
+ throws UnsupportedRuntimeException, LimitExceededException,
+ JobSubmissionException;
+
+ String customFold(
+ @WebParam(name = "alignment") Alignment alignment,
+ @WebParam(name = "options") List<Option<T>> options)
+ throws UnsupportedRuntimeException, LimitExceededException,
+ JobSubmissionException, WrongParameterException;
+
+ String presetFold(
+ @WebParam(name = "alignment") Alignment alignment,
+ @WebParam(name = "preset") Preset<T> preset)
+ throws UnsupportedRuntimeException, LimitExceededException,
+ JobSubmissionException, WrongParameterException;
+
+ RNAstruct getResult(@WebParam(name = "jobId") String jobId)
+ throws ResultNotAvailableException;
+
+}
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "cancelJob", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "cancelJob", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "cancelJob", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "cancelJob", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class CancelJob {\r
\r
@XmlElement(name = "jobId", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "cancelJobResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "cancelJobResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "cancelJobResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "cancelJobResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class CancelJobResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "customFold", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "customFold", namespace = "http://msa.data.compbio/01/01/2010/", propOrder = {
+ "alignment",
+ "options"
+})
+public class CustomFold {
+
+ @XmlElement(name = "alignment", namespace = "")
+ private compbio.data.sequence.Alignment alignment;
+ @XmlElement(name = "options", namespace = "")
+ private List<compbio.metadata.Option> options;
+
+ /**
+ *
+ * @return
+ * returns Alignment
+ */
+ public compbio.data.sequence.Alignment getAlignment() {
+ return this.alignment;
+ }
+
+ /**
+ *
+ * @param alignment
+ * the value for the alignment property
+ */
+ public void setAlignment(compbio.data.sequence.Alignment alignment) {
+ this.alignment = alignment;
+ }
+
+ /**
+ *
+ * @return
+ * returns List<Option>
+ */
+ public List<compbio.metadata.Option> getOptions() {
+ return this.options;
+ }
+
+ /**
+ *
+ * @param options
+ * the value for the options property
+ */
+ public void setOptions(List<compbio.metadata.Option> options) {
+ this.options = options;
+ }
+
+}
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "customFoldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "customFoldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+public class CustomFoldResponse {
+
+ @XmlElement(name = "return", namespace = "")
+ private String _return;
+
+ /**
+ *
+ * @return
+ * returns String
+ */
+ public String getReturn() {
+ return this._return;
+ }
+
+ /**
+ *
+ * @param _return
+ * the value for the _return property
+ */
+ public void setReturn(String _return) {
+ this._return = _return;
+ }
+
+}
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "fold", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "fold", namespace = "http://msa.data.compbio/01/01/2010/")
+public class Fold {
+
+ @XmlElement(name = "alignment", namespace = "")
+ private compbio.data.sequence.Alignment alignment;
+
+ /**
+ *
+ * @return
+ * returns Alignment
+ */
+ public compbio.data.sequence.Alignment getAlignment() {
+ return this.alignment;
+ }
+
+ /**
+ *
+ * @param alignment
+ * the value for the alignment property
+ */
+ public void setAlignment(compbio.data.sequence.Alignment alignment) {
+ this.alignment = alignment;
+ }
+
+}
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "foldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "foldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+public class FoldResponse {
+
+ @XmlElement(name = "return", namespace = "")
+ private String _return;
+
+ /**
+ *
+ * @return
+ * returns String
+ */
+ public String getReturn() {
+ return this._return;
+ }
+
+ /**
+ *
+ * @param _return
+ * the value for the _return property
+ */
+ public void setReturn(String _return) {
+ this._return = _return;
+ }
+
+}
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getJobStatus", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getJobStatus", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getJobStatus", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getJobStatus", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetJobStatus {\r
\r
@XmlElement(name = "jobId", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getJobStatusResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getJobStatusResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getJobStatusResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getJobStatusResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetJobStatusResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getLimit", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getLimit", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getLimit", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getLimit", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetLimit {\r
\r
@XmlElement(name = "presetName", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getLimitResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getLimitResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getLimitResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getLimitResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetLimitResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getLimits", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getLimits", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getLimits", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getLimits", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetLimits {\r
\r
\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getLimitsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getLimitsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getLimitsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getLimitsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetLimitsResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getPresets", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getPresets", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getPresets", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getPresets", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetPresets {\r
\r
\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getPresetsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getPresetsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getPresetsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getPresetsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetPresetsResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
public class GetResultResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
- private compbio.data.sequence.Alignment _return;\r
+ private compbio.data.sequence.RNAstruct _return;\r
\r
/**\r
* \r
* @return\r
- * returns Alignment\r
+ * returns RNAstruct\r
*/\r
- public compbio.data.sequence.Alignment getReturn() {\r
+ public compbio.data.sequence.RNAstruct getReturn() {\r
return this._return;\r
}\r
\r
* @param _return\r
* the value for the _return property\r
*/\r
- public void setReturn(compbio.data.sequence.Alignment _return) {\r
+ public void setReturn(compbio.data.sequence.RNAstruct _return) {\r
this._return = _return;\r
}\r
\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getRunnerOptions", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getRunnerOptions", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getRunnerOptions", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getRunnerOptions", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetRunnerOptions {\r
\r
\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "getRunnerOptionsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "getRunnerOptionsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "getRunnerOptionsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "getRunnerOptionsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class GetRunnerOptionsResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
* Generated source version: 2.2.3\r
* \r
*/\r
-@XmlRootElement(name = "JobSubmissionException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "JobSubmissionException", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "JobSubmissionException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "JobSubmissionException", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class JobSubmissionExceptionBean {\r
\r
private String message;\r
* Generated source version: 2.2.3\r
* \r
*/\r
-@XmlRootElement(name = "LimitExceededException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "LimitExceededException", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "LimitExceededException", namespace = "http://msa.data.compbio/01/12/2010/", propOrder = {\r
+@XmlType(name = "LimitExceededException", namespace = "http://msa.data.compbio/01/01/2010/", propOrder = {\r
"actualNumberofSequences",\r
"message",\r
"numberOfSequencesAllowed",\r
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "presetFold", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "presetFold", namespace = "http://msa.data.compbio/01/01/2010/", propOrder = {
+ "alignment",
+ "preset"
+})
+public class PresetFold {
+
+ @XmlElement(name = "alignment", namespace = "")
+ private compbio.data.sequence.Alignment alignment;
+ @XmlElement(name = "preset", namespace = "")
+ private compbio.metadata.Preset preset;
+
+ /**
+ *
+ * @return
+ * returns Alignment
+ */
+ public compbio.data.sequence.Alignment getAlignment() {
+ return this.alignment;
+ }
+
+ /**
+ *
+ * @param alignment
+ * the value for the alignment property
+ */
+ public void setAlignment(compbio.data.sequence.Alignment alignment) {
+ this.alignment = alignment;
+ }
+
+ /**
+ *
+ * @return
+ * returns Preset
+ */
+ public compbio.metadata.Preset getPreset() {
+ return this.preset;
+ }
+
+ /**
+ *
+ * @param preset
+ * the value for the preset property
+ */
+ public void setPreset(compbio.metadata.Preset preset) {
+ this.preset = preset;
+ }
+
+}
--- /dev/null
+
+package compbio.data.msa.jaxws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "presetFoldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "presetFoldResponse", namespace = "http://msa.data.compbio/01/01/2010/")
+public class PresetFoldResponse {
+
+ @XmlElement(name = "return", namespace = "")
+ private String _return;
+
+ /**
+ *
+ * @return
+ * returns String
+ */
+ public String getReturn() {
+ return this._return;
+ }
+
+ /**
+ *
+ * @param _return
+ * the value for the _return property
+ */
+ public void setReturn(String _return) {
+ this._return = _return;
+ }
+
+}
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "pullExecStatistics", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "pullExecStatistics", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "pullExecStatistics", namespace = "http://msa.data.compbio/01/12/2010/", propOrder = {\r
+@XmlType(name = "pullExecStatistics", namespace = "http://msa.data.compbio/01/01/2010/", propOrder = {\r
"jobId",\r
"position"\r
})\r
import javax.xml.bind.annotation.XmlRootElement;\r
import javax.xml.bind.annotation.XmlType;\r
\r
-@XmlRootElement(name = "pullExecStatisticsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "pullExecStatisticsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "pullExecStatisticsResponse", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "pullExecStatisticsResponse", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class PullExecStatisticsResponse {\r
\r
@XmlElement(name = "return", namespace = "")\r
* Generated source version: 2.2.3\r
* \r
*/\r
-@XmlRootElement(name = "ResultNotAvailableException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "ResultNotAvailableException", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "ResultNotAvailableException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "ResultNotAvailableException", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class ResultNotAvailableExceptionBean {\r
\r
private String message;\r
* Generated source version: 2.2.3\r
* \r
*/\r
-@XmlRootElement(name = "UnsupportedRuntimeException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "UnsupportedRuntimeException", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "UnsupportedRuntimeException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "UnsupportedRuntimeException", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class UnsupportedRuntimeExceptionBean {\r
\r
private String message;\r
* Generated source version: 2.2.3\r
* \r
*/\r
-@XmlRootElement(name = "WrongParameterException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlRootElement(name = "WrongParameterException", namespace = "http://msa.data.compbio/01/01/2010/")\r
@XmlAccessorType(XmlAccessType.FIELD)\r
-@XmlType(name = "WrongParameterException", namespace = "http://msa.data.compbio/01/12/2010/")\r
+@XmlType(name = "WrongParameterException", namespace = "http://msa.data.compbio/01/01/2010/")\r
public class WrongParameterExceptionBean {\r
\r
private String message;\r
+++ /dev/null
-package compbio.data.structure;
-
-import java.security.InvalidParameterException;
-import java.util.List;
-
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-
-import compbio.data.msa.JABAService;
-import compbio.data.msa.JManagement;
-import compbio.data.msa.Metadata;
-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;
-
-/*
- * Interface for tools that results RNA secondary structure information
- *
- * Still Unsure whether a new interface is needed or whether secondary structre
- * information could be exressed as a sequence annotation
- */
-
-// effect of a different targetNamespace?
-@WebService(targetNamespace = JABAService.V2_SERVICE_NAMESPACE)
-public interface FoldWS<T>
- extends
- JABAService,
- JManagement,
- Metadata<T> {
-
-
-
- @WebMethod
- String fold(
- @WebParam(name = )
-}
import javax.xml.ws.WebServiceException;\r
\r
import compbio.data.msa.JABAService;\r
+import compbio.data.msa.FoldWS;\r
import compbio.data.msa.Metadata;\r
import compbio.data.msa.MsaWS;\r
import compbio.data.msa.RegistryWS;\r
import compbio.data.msa.SequenceAnnotation;\r
import compbio.data.sequence.Alignment;\r
import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.RNAstruct;\r
import compbio.data.sequence.ScoreManager;\r
+import compbio.data.sequence.ClustalAlignmentUtil;\r
import compbio.data.sequence.SequenceUtil;\r
import compbio.data.sequence.UnknownFileFormatException;\r
import compbio.metadata.JobSubmissionException;\r
* @throws IOException\r
*/\r
<T> Jws2Client(String[] cmd) throws IOException {\r
+ \r
\r
String hostname = CmdHelper.getHost(cmd);\r
if (hostname == null) {\r
String presetName = CmdHelper.getPresetName(cmd);\r
\r
Metadata<T> msaws = (Metadata<T>) connect(hostname, service);\r
+ Metadata<T> foldws = (Metadata<T>) connect(hostname, service);\r
Preset<T> preset = null;\r
if (presetName != null) {\r
preset = MetadataHelper.getPreset(msaws, presetName);\r
msaws.getRunnerOptions());\r
}\r
Alignment alignment = null;\r
+ RNAstruct rnastruct = null;\r
if (inputFile != null) {\r
Writer writer = null;\r
if (outFile != null) {\r
((SequenceAnnotation<T>) msaws), preset, customOptions);\r
\r
IOHelper.writeOut(writer, result);\r
- } else {\r
+ } else if (service.getServiceType() == MsaWS.class) {\r
alignment = align(inputFile, (MsaWS<T>) msaws, preset,\r
customOptions);\r
IOHelper.writeOut(writer, alignment);\r
+ } else if (service.getServiceType() == FoldWS.class) {\r
+ rnastruct = fold(inputFile, (FoldWS<T>) foldws, preset, customOptions);\r
+ // No IOHelper method for rnastruct/String yet\r
+ if (writer != null) {\r
+ writer.write(rnastruct.toString());\r
+ }\r
}\r
writer.close();\r
}\r
}\r
return alignment;\r
}\r
-\r
+ \r
+ /**\r
+ * Return RNA secondary structure from a file using FoldWS\r
+ * \r
+ * @param <T>\r
+ * web service type e.g. Clustal\r
+ * @param file\r
+ * to read the results from\r
+ * @param foldws\r
+ * FoldWS required\r
+ * @param preset\r
+ * Preset to use optional\r
+ * @param customOptions\r
+ * file which contains new line separated list of options\r
+ * @return RNAstruct\r
+ */\r
+ \r
+ static <T> RNAstruct fold(File file, FoldWS<T> foldws, Preset<T> preset,\r
+ List<Option<T>> customOptions) {\r
+ FileInputStream instream = null;\r
+ Alignment alignment = null;\r
+ RNAstruct rnastruct = null;\r
+ try {\r
+ instream = new FileInputStream(file);\r
+ alignment = ClustalAlignmentUtil.readClustalFile(instream);\r
+ instream.close();\r
+ String jobId = null;\r
+ if (customOptions != null && preset != null) {\r
+ System.out.println("WARN: Parameters (-f) are defined together"\r
+ + "with a preset (-r), ignoring preset! ");\r
+ }\r
+ if (customOptions != null) {\r
+ jobId = foldws.customFold(alignment, customOptions);\r
+ } else if (preset != null) {\r
+ jobId = foldws.presetFold(alignment, preset);\r
+ } else {\r
+ jobId = foldws.fold(alignment);\r
+ }\r
+ System.out.println("\n\ncalling fold.........");\r
+ Thread.sleep(1000);\r
+ rnastruct = foldws.getResult(jobId);\r
+ log.info("log test print results:\n" + rnastruct.toString());\r
+ System.out.println("print test results:\n " + rnastruct.toString());\r
+ \r
+ } catch (IOException e) {\r
+ System.err.println("Exception while reading the input file. Exception details: ");\r
+ e.printStackTrace();\r
+ } catch (UnknownFileFormatException e) {\r
+ System.err.println("Exception while reading input file. Doesnt look like a Clustal format file");\r
+ e.printStackTrace();\r
+ } catch (JobSubmissionException e) {\r
+ System.err.println("Exception while submitting job to the web server. ");\r
+ e.printStackTrace();\r
+ } catch (ResultNotAvailableException e) {\r
+ System.err.println("Exception while waiting for results. Exception details: ");\r
+ e.printStackTrace();\r
+ } catch (InterruptedException ignored) {\r
+ // ignore and propagate an interruption\r
+ Thread.currentThread().interrupt();\r
+ } catch (WrongParameterException e) {\r
+ e.printStackTrace();\r
+ } finally {\r
+ if (instream != null) {\r
+ try {\r
+ instream.close();\r
+ } catch (IOException ignored) {\r
+ // ignore\r
+ }\r
+ }\r
+ }\r
+ return rnastruct;\r
+ }\r
+ \r
/**\r
* Prints Jws2Client usage information to standard out\r
* \r
import javax.xml.namespace.QName;\r
import javax.xml.ws.Service;\r
\r
+import compbio.data.msa.FoldWS;\r
import compbio.data.msa.JABAService;\r
import compbio.data.msa.MsaWS;\r
import compbio.data.msa.SequenceAnnotation;\r
* Make sure this class has NO references to runners or engines as it is a\r
* part of minimal client package. Such things should go into ServicesUtil\r
*/\r
- MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS;\r
+ MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS, RNAalifoldWS;\r
\r
public static Services getService(String servName) {\r
servName = servName.trim().toLowerCase();\r
case MuscleWS :\r
case ProbconsWS :\r
case TcoffeeWS :\r
-\r
return MsaWS.class;\r
+ \r
+ case RNAalifoldWS :\r
+ return FoldWS.class;\r
default :\r
throw new RuntimeException("Unrecognised Web Service Type "\r
+ this + " - Should never happened!");\r
return PROBCONS_INFO;\r
case TcoffeeWS :\r
return TCOFFEE_INFO;\r
+ case RNAalifoldWS :\r
+ return RNAALIFOLD_INFO;\r
default :\r
throw new RuntimeException("Unrecognised Web Service Type "\r
+ this + " - Should never happened!");\r
+ "Parallelization of the MAFFT multiple sequence alignment program. ",\r
"6.8.57", "http://mafft.cbrc.jp/alignment/software/").toString();;\r
\r
+ // TODO reference\r
+ public static final String RNAALIFOLD_INFO = new ServiceInfo(\r
+ RNAalifoldWS,\r
+ "Reference to come", "2.1.2",\r
+ "http://www.tbi.univie.ac.at/RNA/").toString();;\r
+ \r
@XmlAccessorType(XmlAccessType.FIELD)\r
static class ServiceInfo {\r
Services service;\r
import compbio.runner.msa.Muscle;\r
import compbio.runner.msa.Probcons;\r
import compbio.runner.msa.Tcoffee;\r
+import compbio.runner.structure.RNAalifold;\r
\r
public class ServicesUtil {\r
\r
return Jronn.class;\r
case IUPredWS :\r
return IUPred.class;\r
+ case RNAalifoldWS :\r
+ return RNAalifold.class;\r
default :\r
throw new RuntimeException(\r
"Unknown web service implementation class for service: "\r
import org.apache.log4j.Logger;
+import compbio.data.msa.FoldWS;
import compbio.data.msa.JABAService;
import compbio.data.msa.JManagement;
import compbio.data.msa.Metadata;
-import compbio.data.msa.MsaWS;
import compbio.data.sequence.Alignment;
+import compbio.data.sequence.RNAstruct;
import compbio.data.sequence.FastaSequence;
import compbio.engine.AsyncExecutor;
import compbio.engine.Configurator;
import compbio.metadata.RunnerConfig;
import compbio.metadata.WrongParameterException;
import compbio.runner.Util;
-import compbio.runner.msa.ClustalW;
import compbio.runner.structure.RNAalifold;
-@WebService(targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
-public class RNAalifoldWS implements JABAService, JManagement, Metadata<RNAalifold> {
+@WebService(endpointInterface = "compbio.data.msa.FoldWS", targetNamespace = JABAService.SERVICE_NAMESPACE, serviceName = "RNAalifoldWS")
+public class RNAalifoldWS implements FoldWS<RNAalifold> {
private static Logger log = Logger.getLogger(ClustalWS.class);
private static final LimitsManager<RNAalifold> limitMan = compbio.engine.client.Util
.getLimits(new RNAalifold().getType());
- //public String fold()
+
+ @Override
+ public String fold(Alignment alignment)
+ throws JobSubmissionException {
+
+ // Validate clustal input here?
+ ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
+ return WSUtil.fold(alignment, confRNAalifold, log, "fold", getLimit(""));
+ }
- ConfiguredExecutable<RNAalifold> init() throws JobSubmissionException {
+ ConfiguredExecutable<RNAalifold> init(Alignment dataset) throws JobSubmissionException {
RNAalifold rnaalifold = new RNAalifold();
rnaalifold.setInput(SkeletalExecutable.INPUT)
.setOutput(SkeletalExecutable.OUTPUT)
.setError(SkeletalExecutable.ERROR);
ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
- .configureExecutable(rnaalifold);
+ .configureExecutable(rnaalifold, dataset.getSequences());
return confRNAalifold;
}
+
+ @Override
+ public String presetFold(Alignment alignment,
+ Preset<RNAalifold> preset) throws JobSubmissionException,
+ WrongParameterException {
+ // validate
+ if (preset == null) {
+ throw new WrongParameterException("Preset must be Provided!");
+ }
+ Limit<RNAalifold> limit = getLimit(preset.getName());
+ ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
+ confRNAalifold.addParameters(preset.getOptions());
+ return WSUtil.fold(alignment, confRNAalifold, log, "presetFold", limit);
+ }
+ @Override
+ public String customFold(Alignment alignment,
+ List<Option<RNAalifold>> options) throws JobSubmissionException,
+ WrongParameterException {
+ // validate
+ ConfiguredExecutable<RNAalifold> confRNAalifold = init(alignment);
+ List<String> params = WSUtil.getCommands(options,
+ RNAalifold.KEY_VALUE_SEPARATOR);
+ confRNAalifold.addParameters(params);
+ log.info("Setting parameters: " + params);
+ return WSUtil.fold(alignment, confRNAalifold, log, "customFold",
+ getLimit(""));
+ }
+
@Override
public RunnerConfig<RNAalifold> getRunnerOptions() {
return rnaalifoldOptions;
}
@SuppressWarnings("unchecked")
- public String getResult(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException {
+ public RNAstruct getResult(String jobId) throws ResultNotAvailableException {
WSUtil.validateJobId(jobId);
AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);
\r
import org.apache.log4j.Logger;\r
\r
+import compbio.data.sequence.Alignment;\r
import compbio.data.sequence.FastaSequence;\r
import compbio.data.sequence.ScoreManager;\r
import compbio.engine.AsyncExecutor;\r
return jobId;\r
}\r
\r
- // Hardcoded gapchar '-'\r
+ // Hardcoded gapchar '-' in this method\r
\r
- public static <T> String fold(List<FastaSequence> sequences,\r
+ public static <T> String fold(Alignment alignment,\r
ConfiguredExecutable<T> confExec, Logger logger,\r
String callingMethod, Limit<T> limit)\r
throws LimitExceededException, JobSubmissionException {\r
\r
+ List<FastaSequence> sequences = alignment.getSequences();\r
if (limit != null && limit.isExceeded(sequences)) {\r
throw LimitExceededException.newLimitExceeded(limit, sequences);\r
}\r
compbio.runner.Util.writeClustalInput(sequences, confExec, '-');\r
+ System.out.println("WSUtil-fold: Writing the clustal input file on the server: to file: "\r
+ + confExec.getInput());\r
+ System.out.println("WSUtil-fold: The executable is configured with parameters: " \r
+ + confExec.getParameters());\r
+// System.out.println("WSUTil-fold: Dump the configured executable:\n" \r
+// + confExec.toString());\r
AsyncExecutor engine = Configurator.getAsyncEngine(confExec);\r
String jobId = engine.submitJob(confExec);\r
reportUsage(confExec, logger);\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2. -->
+<definitions targetNamespace="http://msa.data.compbio/01/01/2010/" name="RNAalifoldWS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:tns="http://msa.data.compbio/01/01/2010/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
+ <types>
+ <xsd:schema>
+ <xsd:import namespace="http://msa.data.compbio/01/01/2010/" schemaLocation="RNAalifoldWS_schema1.xsd"/>
+ </xsd:schema>
+ </types>
+ <message name="getResult">
+ <part name="parameters" element="tns:getResult"/>
+ </message>
+ <message name="getResultResponse">
+ <part name="parameters" element="tns:getResultResponse"/>
+ </message>
+ <message name="ResultNotAvailableException">
+ <part name="fault" element="tns:ResultNotAvailableException"/>
+ </message>
+ <message name="fold">
+ <part name="parameters" element="tns:fold"/>
+ </message>
+ <message name="foldResponse">
+ <part name="parameters" element="tns:foldResponse"/>
+ </message>
+ <message name="UnsupportedRuntimeException">
+ <part name="fault" element="tns:UnsupportedRuntimeException"/>
+ </message>
+ <message name="LimitExceededException">
+ <part name="fault" element="tns:LimitExceededException"/>
+ </message>
+ <message name="JobSubmissionException">
+ <part name="fault" element="tns:JobSubmissionException"/>
+ </message>
+ <message name="presetFold">
+ <part name="parameters" element="tns:presetFold"/>
+ </message>
+ <message name="presetFoldResponse">
+ <part name="parameters" element="tns:presetFoldResponse"/>
+ </message>
+ <message name="WrongParameterException">
+ <part name="fault" element="tns:WrongParameterException"/>
+ </message>
+ <message name="customFold">
+ <part name="parameters" element="tns:customFold"/>
+ </message>
+ <message name="customFoldResponse">
+ <part name="parameters" element="tns:customFoldResponse"/>
+ </message>
+ <message name="pullExecStatistics">
+ <part name="parameters" element="tns:pullExecStatistics"/>
+ </message>
+ <message name="pullExecStatisticsResponse">
+ <part name="parameters" element="tns:pullExecStatisticsResponse"/>
+ </message>
+ <message name="getJobStatus">
+ <part name="parameters" element="tns:getJobStatus"/>
+ </message>
+ <message name="getJobStatusResponse">
+ <part name="parameters" element="tns:getJobStatusResponse"/>
+ </message>
+ <message name="cancelJob">
+ <part name="parameters" element="tns:cancelJob"/>
+ </message>
+ <message name="cancelJobResponse">
+ <part name="parameters" element="tns:cancelJobResponse"/>
+ </message>
+ <message name="getRunnerOptions">
+ <part name="parameters" element="tns:getRunnerOptions"/>
+ </message>
+ <message name="getRunnerOptionsResponse">
+ <part name="parameters" element="tns:getRunnerOptionsResponse"/>
+ </message>
+ <message name="getLimit">
+ <part name="parameters" element="tns:getLimit"/>
+ </message>
+ <message name="getLimitResponse">
+ <part name="parameters" element="tns:getLimitResponse"/>
+ </message>
+ <message name="getPresets">
+ <part name="parameters" element="tns:getPresets"/>
+ </message>
+ <message name="getPresetsResponse">
+ <part name="parameters" element="tns:getPresetsResponse"/>
+ </message>
+ <message name="getLimits">
+ <part name="parameters" element="tns:getLimits"/>
+ </message>
+ <message name="getLimitsResponse">
+ <part name="parameters" element="tns:getLimitsResponse"/>
+ </message>
+ <portType name="FoldWS">
+ <operation name="getResult">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getResultRequest" message="tns:getResult"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getResultResponse" message="tns:getResultResponse"/>
+ <fault message="tns:ResultNotAvailableException" name="ResultNotAvailableException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getResult/Fault/ResultNotAvailableException"/>
+ </operation>
+ <operation name="fold">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/foldRequest" message="tns:fold"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/foldResponse" message="tns:foldResponse"/>
+ <fault message="tns:UnsupportedRuntimeException" name="UnsupportedRuntimeException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/fold/Fault/UnsupportedRuntimeException"/>
+ <fault message="tns:LimitExceededException" name="LimitExceededException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/fold/Fault/LimitExceededException"/>
+ <fault message="tns:JobSubmissionException" name="JobSubmissionException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/fold/Fault/JobSubmissionException"/>
+ </operation>
+ <operation name="presetFold">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFoldRequest" message="tns:presetFold"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFoldResponse" message="tns:presetFoldResponse"/>
+ <fault message="tns:UnsupportedRuntimeException" name="UnsupportedRuntimeException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFold/Fault/UnsupportedRuntimeException"/>
+ <fault message="tns:LimitExceededException" name="LimitExceededException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFold/Fault/LimitExceededException"/>
+ <fault message="tns:JobSubmissionException" name="JobSubmissionException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFold/Fault/JobSubmissionException"/>
+ <fault message="tns:WrongParameterException" name="WrongParameterException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/presetFold/Fault/WrongParameterException"/>
+ </operation>
+ <operation name="customFold">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFoldRequest" message="tns:customFold"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFoldResponse" message="tns:customFoldResponse"/>
+ <fault message="tns:UnsupportedRuntimeException" name="UnsupportedRuntimeException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFold/Fault/UnsupportedRuntimeException"/>
+ <fault message="tns:LimitExceededException" name="LimitExceededException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFold/Fault/LimitExceededException"/>
+ <fault message="tns:JobSubmissionException" name="JobSubmissionException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFold/Fault/JobSubmissionException"/>
+ <fault message="tns:WrongParameterException" name="WrongParameterException" wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/customFold/Fault/WrongParameterException"/>
+ </operation>
+ <operation name="pullExecStatistics">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/pullExecStatisticsRequest" message="tns:pullExecStatistics"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/pullExecStatisticsResponse" message="tns:pullExecStatisticsResponse"/>
+ </operation>
+ <operation name="getJobStatus">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getJobStatusRequest" message="tns:getJobStatus"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getJobStatusResponse" message="tns:getJobStatusResponse"/>
+ </operation>
+ <operation name="cancelJob">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/cancelJobRequest" message="tns:cancelJob"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/cancelJobResponse" message="tns:cancelJobResponse"/>
+ </operation>
+ <operation name="getRunnerOptions">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getRunnerOptionsRequest" message="tns:getRunnerOptions"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getRunnerOptionsResponse" message="tns:getRunnerOptionsResponse"/>
+ </operation>
+ <operation name="getLimit">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getLimitRequest" message="tns:getLimit"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getLimitResponse" message="tns:getLimitResponse"/>
+ </operation>
+ <operation name="getPresets">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getPresetsRequest" message="tns:getPresets"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getPresetsResponse" message="tns:getPresetsResponse"/>
+ </operation>
+ <operation name="getLimits">
+ <input wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getLimitsRequest" message="tns:getLimits"/>
+ <output wsam:Action="http://msa.data.compbio/01/01/2010/FoldWS/getLimitsResponse" message="tns:getLimitsResponse"/>
+ </operation>
+ </portType>
+ <binding name="RNAalifoldWSPortBinding" type="tns:FoldWS">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <operation name="getResult">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="ResultNotAvailableException">
+ <soap:fault name="ResultNotAvailableException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="fold">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="UnsupportedRuntimeException">
+ <soap:fault name="UnsupportedRuntimeException" use="literal"/>
+ </fault>
+ <fault name="LimitExceededException">
+ <soap:fault name="LimitExceededException" use="literal"/>
+ </fault>
+ <fault name="JobSubmissionException">
+ <soap:fault name="JobSubmissionException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="presetFold">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="UnsupportedRuntimeException">
+ <soap:fault name="UnsupportedRuntimeException" use="literal"/>
+ </fault>
+ <fault name="LimitExceededException">
+ <soap:fault name="LimitExceededException" use="literal"/>
+ </fault>
+ <fault name="JobSubmissionException">
+ <soap:fault name="JobSubmissionException" use="literal"/>
+ </fault>
+ <fault name="WrongParameterException">
+ <soap:fault name="WrongParameterException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="customFold">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ <fault name="UnsupportedRuntimeException">
+ <soap:fault name="UnsupportedRuntimeException" use="literal"/>
+ </fault>
+ <fault name="LimitExceededException">
+ <soap:fault name="LimitExceededException" use="literal"/>
+ </fault>
+ <fault name="JobSubmissionException">
+ <soap:fault name="JobSubmissionException" use="literal"/>
+ </fault>
+ <fault name="WrongParameterException">
+ <soap:fault name="WrongParameterException" use="literal"/>
+ </fault>
+ </operation>
+ <operation name="pullExecStatistics">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getJobStatus">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="cancelJob">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getRunnerOptions">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getLimit">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getPresets">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getLimits">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="RNAalifoldWS">
+ <port name="RNAalifoldWSPort" binding="tns:RNAalifoldWSPortBinding">
+ <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
+ </port>
+ </service>
+</definitions>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema version="1.0" targetNamespace="http://msa.data.compbio/01/01/2010/" xmlns:tns="http://msa.data.compbio/01/01/2010/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="JobSubmissionException" type="tns:JobSubmissionException"/>
+
+ <xs:element name="LimitExceededException" type="tns:LimitExceededException"/>
+
+ <xs:element name="ResultNotAvailableException" type="tns:ResultNotAvailableException"/>
+
+ <xs:element name="UnsupportedRuntimeException" type="tns:UnsupportedRuntimeException"/>
+
+ <xs:element name="WrongParameterException" type="tns:WrongParameterException"/>
+
+ <xs:element name="cancelJob" type="tns:cancelJob"/>
+
+ <xs:element name="cancelJobResponse" type="tns:cancelJobResponse"/>
+
+ <xs:element name="customFold" type="tns:customFold"/>
+
+ <xs:element name="customFoldResponse" type="tns:customFoldResponse"/>
+
+ <xs:element name="fold" type="tns:fold"/>
+
+ <xs:element name="foldResponse" type="tns:foldResponse"/>
+
+ <xs:element name="getJobStatus" type="tns:getJobStatus"/>
+
+ <xs:element name="getJobStatusResponse" type="tns:getJobStatusResponse"/>
+
+ <xs:element name="getLimit" type="tns:getLimit"/>
+
+ <xs:element name="getLimitResponse" type="tns:getLimitResponse"/>
+
+ <xs:element name="getLimits" type="tns:getLimits"/>
+
+ <xs:element name="getLimitsResponse" type="tns:getLimitsResponse"/>
+
+ <xs:element name="getPresets" type="tns:getPresets"/>
+
+ <xs:element name="getPresetsResponse" type="tns:getPresetsResponse"/>
+
+ <xs:element name="getResult" type="tns:getResult"/>
+
+ <xs:element name="getResultResponse" type="tns:getResultResponse"/>
+
+ <xs:element name="getRunnerOptions" type="tns:getRunnerOptions"/>
+
+ <xs:element name="getRunnerOptionsResponse" type="tns:getRunnerOptionsResponse"/>
+
+ <xs:element name="limits" type="tns:limitsManager"/>
+
+ <xs:element name="presetFold" type="tns:presetFold"/>
+
+ <xs:element name="presetFoldResponse" type="tns:presetFoldResponse"/>
+
+ <xs:element name="presets" type="tns:presetManager"/>
+
+ <xs:element name="pullExecStatistics" type="tns:pullExecStatistics"/>
+
+ <xs:element name="pullExecStatisticsResponse" type="tns:pullExecStatisticsResponse"/>
+
+ <xs:element name="runnerConfig" type="tns:runnerConfig"/>
+
+ <xs:complexType name="getJobStatus">
+ <xs:sequence>
+ <xs:element name="jobId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getJobStatusResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:jobStatus" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getRunnerOptions">
+ <xs:sequence/>
+ </xs:complexType>
+
+ <xs:complexType name="getRunnerOptionsResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:runnerConfig" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="runnerConfig">
+ <xs:sequence>
+ <xs:element name="options" type="tns:option" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="parameters" type="tns:parameter" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="prmSeparator" type="xs:string" minOccurs="0"/>
+ <xs:element name="runnerClassName" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="option">
+ <xs:sequence>
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="optionNames" type="xs:string" maxOccurs="unbounded"/>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="furtherDetails" type="xs:anyURI" minOccurs="0"/>
+ <xs:element name="defaultValue" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="isRequired" type="xs:boolean" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="parameter">
+ <xs:complexContent>
+ <xs:extension base="tns:option">
+ <xs:sequence>
+ <xs:element name="possibleValues" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="validValue" type="tns:valueConstrain" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="valueConstrain">
+ <xs:sequence>
+ <xs:element name="type" type="tns:type"/>
+ <xs:element name="max" type="xs:string" minOccurs="0"/>
+ <xs:element name="min" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="fold">
+ <xs:sequence>
+ <xs:element name="alignment" type="tns:alignment" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="alignment" final="extension restriction">
+ <xs:sequence>
+ <xs:element name="metadata" type="tns:alignmentMetadata" minOccurs="0"/>
+ <xs:element name="sequences" type="tns:fastaSequence" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="alignmentMetadata">
+ <xs:sequence>
+ <xs:element name="program" type="tns:program" minOccurs="0"/>
+ <xs:element name="gapchar" type="xs:unsignedShort"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="fastaSequence">
+ <xs:sequence>
+ <xs:element name="id" type="xs:string" minOccurs="0"/>
+ <xs:element name="sequence" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="foldResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="UnsupportedRuntimeException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="LimitExceededException">
+ <xs:sequence>
+ <xs:element name="actualNumberofSequences" type="xs:int"/>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ <xs:element name="numberOfSequencesAllowed" type="xs:int"/>
+ <xs:element name="sequenceLenghtActual" type="xs:int"/>
+ <xs:element name="sequenceLenghtAllowed" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="JobSubmissionException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getResult">
+ <xs:sequence>
+ <xs:element name="jobId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getResultResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:rnAstruct" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="rnAstruct" final="extension restriction">
+ <xs:sequence>
+ <xs:element name="sequence" type="xs:string" minOccurs="0"/>
+ <xs:element name="structure" type="xs:string" minOccurs="0"/>
+ <xs:element name="minEnergy" type="xs:float" minOccurs="0"/>
+ <xs:element name="energySum1" type="xs:float" minOccurs="0"/>
+ <xs:element name="energySum2" type="xs:float" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="ResultNotAvailableException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="customFold">
+ <xs:sequence>
+ <xs:element name="alignment" type="tns:alignment" minOccurs="0"/>
+ <xs:element name="options" type="tns:option" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="customFoldResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="WrongParameterException">
+ <xs:sequence>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getLimits">
+ <xs:sequence/>
+ </xs:complexType>
+
+ <xs:complexType name="getLimitsResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:limitsManager" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="limitsManager">
+ <xs:sequence>
+ <xs:element name="runnerClassName" type="xs:string" minOccurs="0"/>
+ <xs:element name="limit" type="tns:limit" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="limit">
+ <xs:sequence>
+ <xs:element name="preset" type="xs:string" minOccurs="0"/>
+ <xs:element name="seqNumber" type="xs:int"/>
+ <xs:element name="seqLength" type="xs:int"/>
+ </xs:sequence>
+ <xs:attribute name="isDefault" type="xs:boolean" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="getPresets">
+ <xs:sequence/>
+ </xs:complexType>
+
+ <xs:complexType name="getPresetsResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:presetManager" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="presetManager">
+ <xs:sequence>
+ <xs:element name="runnerClassName" type="xs:string"/>
+ <xs:element name="preset" type="tns:preset" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="preset">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="description" type="xs:string" minOccurs="0"/>
+ <xs:element name="optlist" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="option" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getLimit">
+ <xs:sequence>
+ <xs:element name="presetName" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="getLimitResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:limit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="cancelJob">
+ <xs:sequence>
+ <xs:element name="jobId" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="cancelJobResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:boolean"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="pullExecStatistics">
+ <xs:sequence>
+ <xs:element name="jobId" type="xs:string" minOccurs="0"/>
+ <xs:element name="position" type="xs:long"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="pullExecStatisticsResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:chunkHolder" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="chunkHolder">
+ <xs:sequence>
+ <xs:element name="chunk" type="xs:string" minOccurs="0"/>
+ <xs:element name="position" type="xs:long"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="presetFold">
+ <xs:sequence>
+ <xs:element name="alignment" type="tns:alignment" minOccurs="0"/>
+ <xs:element name="preset" type="tns:preset" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="presetFoldResponse">
+ <xs:sequence>
+ <xs:element name="return" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:simpleType name="jobStatus">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PENDING"/>
+ <xs:enumeration value="RUNNING"/>
+ <xs:enumeration value="CANCELLED"/>
+ <xs:enumeration value="FINISHED"/>
+ <xs:enumeration value="FAILED"/>
+ <xs:enumeration value="UNDEFINED"/>
+ <xs:enumeration value="STARTED"/>
+ <xs:enumeration value="SUBMITTED"/>
+ <xs:enumeration value="COLLECTED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Integer"/>
+ <xs:enumeration value="Float"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="program">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CLUSTAL"/>
+ <xs:enumeration value="MAFFT"/>
+ <xs:enumeration value="MUSCLE"/>
+ <xs:enumeration value="Tcoffee"/>
+ <xs:enumeration value="Probcons"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
+