<?xml version="1.0" encoding="UTF-8"?>
<definitions name="palign"
             targetNamespace="http://wsdl.sbc.su.se/palign"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:tns="http://wsdl.sbc.su.se/palign"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:ns="http://schemas.xmlsoap.org/wsdl/">
  <documentation> The ProteinALIGNment (Palign) programs are a set of programs
  for sequence searches. They can perform standard dynamic programming,
  heuristic fasta like searches and profile-profile alignments. Unfortunately
  the package is not very well documented, but is all available for free under
  a GPL like license. Palign can be used for many type of alignment problems,
  it is certainly not always the fastest of all programs but it is very
  flexible. This webservice can 1. Align two sequences with default values 2) Align two sequences with nonDefault parameters 3) Align two sequences and include their secondary structure information 4) Align a sequence and a structure and get the alignment and a CA-pdb-file 5) Align a sequence and a profile 6) Align two profiles. </documentation>

  <types>
    <xsd:schema elementFormDefault="qualified"
      targetNamespace="http://wsdl.sbc.su.se/palign">

      <xsd:element name="runPalignSeqSeqDefault">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="sequence1" type="xsd:string">
              <xsd:annotation>
                <documentation>Amino acid sequence in FASTA format as a string.</documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="sequence2" type="xsd:string">
              <xsd:annotation>
                <documentation>Amino acid sequence in FASTA format as a string.</documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      
      <xsd:element name="runPalignSeqSeqDefaultResponse">
        <xsd:complexType>
          <xsd:all>
            <xsd:element name="alignment" type="xsd:string" />
          </xsd:all>
        </xsd:complexType>
      </xsd:element>

     <xsd:element name="runPalignSeqSeq">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="sequence1"      type="xsd:string" />
            <xsd:element name="sequence2"      type="xsd:string" />
            <xsd:element name="alignment_type" type="xsd:string" />
            <xsd:element name="go"             type="xsd:int" />
            <xsd:element name="ge"             type="xsd:int" />
            <xsd:element name="gapmax1"         type="xsd:int" />
            <xsd:element name="gapmax2"         type="xsd:int" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignSeqSeqResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="alignment" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignSeqSeqSSDefault">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="aa_sequence1" type="xsd:string" />
            <xsd:element name="ss_sequence1" type="xsd:string" />
            <xsd:element name="aa_sequence2" type="xsd:string" />
            <xsd:element name="ss_sequence2" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

     <xsd:element name="runPalignSeqSeqSSDefaultResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="alignment" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <!--
      <xsd:element name="runPalignSeqStrDefault">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="sequence1"  type="xsd:string" />
            <xsd:element name="structure2" type="xsd:string" />

          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignSeqStrDefaultResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="alignment"     type="xsd:string" />
            <xsd:element name="CA_structure1" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignProfSeqDefault">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="profile"  type="xsd:string" />
            <xsd:element name="sequence" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignProfSeqDefaultResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="alignment" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

     <xsd:element name="runPalignProfProfDefault">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="profile1"  type="xsd:string" />
            <xsd:element name="profile2"  type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="runPalignProfProfDefaultResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="alignment" type="xsd:string" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

-->

</xsd:schema>
</types>

<message name="runPalignSeqSeqDefaultRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignSeqSeqDefault" />
</message>

<message name="runPalignSeqSeqDefaultResponseMsg">
 	<part name="outputWrapper" element="tns:runPalignSeqSeqDefaultResponse" />
 </message>

<message name="runPalignSeqSeqRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignSeqSeq" />
</message>

<message name="runPalignSeqSeqResponseMsg">
 	<part name="outputWrapper" element="tns:runPalignSeqSeqResponse" />
</message>

<message name="runPalignSeqSeqSSDefaultRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignSeqSeqSSDefault" />
</message>

<message name="runPalignSeqSeqSSDefaultResponseMsg">
	<part name="outputWrapper" element="tns:runPalignSeqSeqSSDefaultResponse" />
</message>
 <!--

<message name="runPalignSeqStrDefaultRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignSeqStrDefault" />
</message>

<message name="runPalignSeqStrDefaultResponseMsg">
	<part name="outputWrapper" element="tns:runPalignSeqStrDefaultResponse" />
</message>

<message name="runPalignProfSeqDefaultRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignProfSeqDefault" />
</message>

<message name="runPalignProfSeqDefaultResponseMsg">
    	<part name="outputWrapper" element="tns:runPalignProfSeqDefaultResponse" />
</message>

<message name="runPalignProfProfDefaultRequestMsg">
	<part name="inputWrapper"  element="tns:runPalignProfProfDefault" />
</message>

<message name="runPalignProfProfDefaultResponseMsg">
    	<part name="outputWrapper" element="tns:runPalignProfProfDefaultResponse" />
</message>

-->

<portType name="palignPortType">

    	<operation name="runPalignSeqSeqDefault">
	<documentation> "Aligns two sequences with default parameters.
	</documentation>
      	<input message ="tns:runPalignSeqSeqDefaultRequestMsg" />
      	<output message="tns:runPalignSeqSeqDefaultResponseMsg" />
    	</operation>

 	<operation name="runPalignSeqSeq">
	<documentation> Aligns two sequences with user defined parameters. Sequence inputs should be given as strings. Alignment type can be "global", "local" or "gloloc" if not it is set to "global".go,ge and gapmax are integer values.
	</documentation>
	<input message ="tns:runPalignSeqSeqRequestMsg" />
 	<output message="tns:runPalignSeqSeqResponseMsg" />
    	</operation>

        <operation name="runPalignSeqSeqSSDefault">
	<documentation> Aligns two sequences and include secondary structure information (profile files from psiblast). 
	</documentation>
        <input message="tns:runPalignSeqSeqSSDefaultRequestMsg" />
        <output message="tns:runPalignSeqSeqSSDefaultResponseMsg" />
    	</operation>

        <!--

    	<operation name="runPalignSeqStrDefault">
	<documentation> Aligns a sequence against a structure (pdb format). Outputs an amino acid sequence alignment and a CA-pdb-file.
	</documentation>
      	<input message ="tns:runPalignSeqStrDefaultRequestMsg" />
      	<output message="tns:runPalignSeqStrDefaultResponseMsg" />
    	</operation>

  	<operation name="runPalignProfSeqDefault">
	<documentation> Aligns one sequence and a profile. This operation is curently not working.
	</documentation>
      	<input message ="tns:runPalignProfSeqDefaultRequestMsg" />
      	<output message="tns:runPalignProfSeqDefaultResponseMsg" />
    	</operation>

  	<operation name="runPalignProfProfDefault">
	<documentation> Aligns two profiles. This operation is curently not working.
	</documentation>
      	<input message ="tns:runPalignProfProfDefaultRequestMsg" />
      	<output message="tns:runPalignProfProfDefaultResponseMsg" />
    	</operation>
        -->

</portType>

 <binding name="palignBinding" type="tns:palignPortType">
	<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
 
    	<operation name="runPalignSeqSeqDefault">
      	<soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignSeqSeqDefault" />
      	<input>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
      	</input>
      	<output>	
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
      	</output>
    	</operation>

    	<operation name="runPalignSeqSeq">
          <soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignSeqSeq" />
      	<input>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
      	</input>
      	<output>	
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
      	</output>
    	</operation>

   	<operation name="runPalignSeqSeqSSDefault">
      	<soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignSeqSeqSSDefault" />
      	<input>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</input>
      	<output>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</output>
    	</operation>

        <!--

    	<operation name="runPalignSeqStrDefault">
      	<soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignSeqStrDefault" />
      	<input>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
	</input>
      	<output>
        	<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</output>
    	</operation>

  	<operation name="runPalignProfSeqDefault">
      	<soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignProfSeqDefault" />
      	<input>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</input>
      	<output>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</output>
    	</operation>

  	<operation name="runPalignProfProfDefault">
      	<soap:operation soapAction="http://wsdl.sbc.su.se/palign/runPalignProfProfDefault" />
      	<input>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</input>
      	<output>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" />
      	</output>
    	</operation>

        -->

  </binding>

  <service name="Palign">
    <port binding="tns:palignBinding" name="palignPort">
      <soap:address location="http://wsdl.sbc.su.se/cgi-bin/palign.cgi" />
    </port>
  </service>
</definitions>