<?xml version="1.0" encoding="UTF-8"?>
<s:scufl xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" version="0.1" log="3">

<!-- Get HGBASE record -->

<s:source>SNP_Id</s:source>
<s:link><s:output>SNP_Id</s:output><s:input>SrsEbiQuery:usa</s:input></s:link>

<s:processor name="SrsEbiQuery">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/SrsEbiQuery?wsdl</s:wsdl>
  <s:porttype>SrsEbiQuery</s:porttype>
  <s:operation>queryById</s:operation>
  </s:arbitrarywsdl>
  </s:processor>

<s:link>
<s:input>Hgvbase_getEmblAccNumber:hgvbaseEntry</s:input>
<s:output>SrsEbiQuery:queryByIdReturn</s:output>
</s:link>

<!-- Extract EMBL accession number from HGBASE record -->

<s:processor name="Hgvbase_getEmblAccNumber">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/Hgvbase?wsdl</s:wsdl>
  <s:porttype>Hgvbase</s:porttype>
  <s:operation>getEmblAccNumber</s:operation>
  </s:arbitrarywsdl>
  </s:processor>

<!-- Extract SNP position from HGBASE record -->

<s:link>
<s:input>Hgvbase_getSnpPosition:hgvbaseEntry</s:input>
<s:output>SrsEbiQuery:queryByIdReturn</s:output>
</s:link>

<s:processor name="Hgvbase_getSnpPosition">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/Hgvbase?wsdl</s:wsdl>
  <s:porttype>Hgvbase</s:porttype>
  <s:operation>getSnpPosition</s:operation>
  </s:arbitrarywsdl>
  </s:processor>


<!-- Generate primers using Eprimer3 -->

<s:link>
<s:input>eprimer3:sequence_usa</s:input>
<s:output>Hgvbase_getEmblAccNumber:getEmblAccNumberReturn</s:output>
</s:link>

<s:link>
<s:input>eprimer3:target</s:input>
<s:output>Hgvbase_getSnpPosition:getSnpPositionReturn</s:output>
</s:link>

<s:processor name="eprimer3">
    <s:soaplabwsdl>http://industry.ebi.ac.uk/soap/soaplab/nucleic_primers::eprimer3</s:soaplabwsdl>
</s:processor>

<!-- Parse primer set from eprimer outfile -->

<s:link>
<s:input>Eprimer_getPrimers:outfile</s:input>
<s:output>eprimer3:outfile</s:output>
</s:link>

<s:processor name="Eprimer_getPrimers">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/Eprimer?wsdl</s:wsdl>
  <s:porttype>Eprimer</s:porttype>
  <s:operation>getPrimers</s:operation>
  </s:arbitrarywsdl>
  </s:processor>


<!-- Get Embl record -->

<s:source>output_format</s:source>
<s:link><s:output>output_format</s:output><s:input>seqret_getEmblRecord:osformat</s:input></s:link>

<s:source>featuresOn</s:source>
<s:link><s:output>featuresOn</s:output><s:input>seqret_getEmblRecord:feature</s:input></s:link>

<s:link>
<s:input>seqret_getEmblRecord:sequence_usa</s:input>
<s:output>Hgvbase_getEmblAccNumber:getEmblAccNumberReturn</s:output>
</s:link>

<s:processor name="seqret_getEmblRecord">
    <s:soaplabwsdl>http://industry.ebi.ac.uk/soap/soaplab/edit::seqret</s:soaplabwsdl>
</s:processor>

<!-- Get snp nucleotide -->

<s:link>
<s:input>Hgvbase_getSnpNucleotide:hgvbaseEntry</s:input>
<s:output>SrsEbiQuery:queryByIdReturn</s:output>
</s:link>

<s:processor name="Hgvbase_getSnpNucleotide">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/Hgvbase?wsdl</s:wsdl>
  <s:porttype>Hgvbase</s:porttype>
  <s:operation>getSnpNucleotide</s:operation>
  </s:arbitrarywsdl>
  </s:processor>


<!-- merge info -->

<s:link><s:output>SNP_Id</s:output>
<s:input>Embl_mergeInfo:snpDbXRef</s:input></s:link>

<s:link>
<s:input>Embl_mergeInfo:primers</s:input>
<s:output>Eprimer_getPrimers:getPrimersReturn</s:output>
</s:link>

<s:link>
<s:input>Embl_mergeInfo:emblRecord</s:input>
<s:output>seqret_getEmblRecord:outseq</s:output>
</s:link>

<s:link>
<s:input>Embl_mergeInfo:snpNucleotide</s:input>
<s:output>Hgvbase_getSnpNucleotide:getSnpNucleotideReturn</s:output>
</s:link>

<s:link>
<s:input>Embl_mergeInfo:snpLocation</s:input>
<s:output>Hgvbase_getSnpPosition:getSnpPositionReturn</s:output>
</s:link>

<s:processor name="Embl_mergeInfo">
  <s:arbitrarywsdl>
  <s:wsdl>http://mygrid.ncl.ac.uk/axis/services/Embl?wsdl</s:wsdl>
  <s:porttype>Embl</s:porttype>
  <s:operation>addSnpWithPrimersFeature</s:operation>
  </s:arbitrarywsdl>
  </s:processor>

  <s:sink>results_merge</s:sink>
<s:link><s:input>results_merge</s:input>
       <s:output>Embl_mergeInfo:addSnpWithPrimersFeatureReturn</s:output>
</s:link>

</s:scufl>
