SatelliteG-language: getFasta2gcskew.t2flow

File getFasta2gcskew.t2flow, 22.2 KB (added by t07122ko, 15 years ago)

G-language Taverna Workflow (Example)

Line 
1<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1"><dataflow id="8c24ae0c-5db9-4cdc-8aa8-15e10cefd334" role="top"><name>dataflow0</name><inputPorts><port><name>id</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>window</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>cumulative</name><depth>0</depth><granularDepth>0</granularDepth></port></inputPorts><outputPorts><port><name>image_gcskew</name></port><port><name>outseq</name></port><port><name>param</name></port></outputPorts><processors><processor><name>Get_Nucleotide_FASTA</name><inputPorts><port><name>id</name><depth>0</depth></port></inputPorts><outputPorts><port><name>outputText</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="id" to="id" /></inputMap><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
2  <script>if ((id == void) || (id == null) || id.equals("")) {
3        throw new RunTimeException("port id must have a non-empty value");
4}
5
6URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&amp;db=nucleotide&amp;retmode=text&amp;id=" + id);
7
8BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));
9StringWriter writer = new StringWriter();
10
11char[] buffer = new char[1024];
12    while (true) {
13        int r = reader.read(buffer);
14        if (r &lt;= 0) {
15            break;
16        }
17        writer.write(buffer, 0, r);
18    }
19outputText = writer.toString();
20</script>
21  <dependencies />
22  <classLoaderSharing>workflow</classLoaderSharing>
23  <localDependencies />
24  <artifactDependencies />
25  <inputs>
26    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
27      <handledReferenceSchemes />
28      <translatedElementType>java.lang.String</translatedElementType>
29      <allowsLiteralValues>true</allowsLiteralValues>
30      <name>id</name>
31      <depth>0</depth>
32      <mimeTypes>
33        <string>'text/plain'</string>
34      </mimeTypes>
35    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
36  </inputs>
37  <outputs>
38    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
39      <granularDepth>0</granularDepth>
40      <name>outputText</name>
41      <depth>0</depth>
42      <mimeTypes>
43        <string>'text/plain'</string>
44      </mimeTypes>
45    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
46  </outputs>
47</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
48  <maxJobs>1</maxJobs>
49</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
50  <backoffFactor>1.0</backoffFactor>
51  <initialDelay>1000</initialDelay>
52  <maxDelay>5000</maxDelay>
53  <maxRetries>0</maxRetries>
54</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="id" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>gcskew</name><inputPorts><port><name>in0</name><depth>0</depth></port><port><name>params</name><depth>0</depth></port></inputPorts><outputPorts><port><name>result</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>wsdl-activity</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.activities.wsdl.WSDLActivity</class><inputMap><map from="in0" to="in0" /><map from="params" to="params" /></inputMap><outputMap><map from="result" to="result" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.wsdl.WSDLActivityConfigurationBean xmlns="">
55  <wsdl>http://www.g-language.org/g-language.wsdl</wsdl>
56  <operation>gcskew</operation>
57</net.sf.taverna.t2.activities.wsdl.WSDLActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
58  <maxJobs>1</maxJobs>
59</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
60  <backoffFactor>1.0</backoffFactor>
61  <initialDelay>1000</initialDelay>
62  <maxDelay>5000</maxDelay>
63  <maxRetries>0</maxRetries>
64</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="in0" depth="0" /><port name="params" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Get_Image_From_URL</name><inputPorts><port><name>url</name><depth>0</depth></port></inputPorts><outputPorts><port><name>image</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="url" to="url" /></inputMap><outputMap><map from="image" to="image" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
65  <script>URL inputURL = null;
66if (base != void) {
67        inputURL = new URL(new URL(base), url);
68} else {
69        inputURL = new URL(url);
70}
71
72byte[] contents;
73if (inputURL.openConnection().getContentLength() == -1) {
74        // Content size unknown, must read first...
75        byte[] buffer = new byte[1024];
76        int bytesRead = 0;
77        int totalBytesRead = 0;
78        InputStream is = inputURL.openStream();
79        while (bytesRead != -1) {
80                totalBytesRead += bytesRead;
81                bytesRead = is.read(buffer, 0, 1024);
82        }
83        contents = new byte[totalBytesRead];
84} else {
85        contents = new byte[inputURL.openConnection().getContentLength()];
86}
87int bytesRead = 0;
88int totalBytesRead = 0;
89InputStream is = inputURL.openStream();
90while (bytesRead != -1) {
91        bytesRead = is.read(contents, totalBytesRead, contents.length - totalBytesRead);
92        totalBytesRead += bytesRead;
93        if (contents.length==totalBytesRead) break;
94}
95
96image = contents;
97</script>
98  <dependencies />
99  <classLoaderSharing>workflow</classLoaderSharing>
100  <localDependencies />
101  <artifactDependencies />
102  <inputs>
103    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
104      <handledReferenceSchemes />
105      <translatedElementType>java.lang.String</translatedElementType>
106      <allowsLiteralValues>true</allowsLiteralValues>
107      <name>url</name>
108      <depth>0</depth>
109      <mimeTypes>
110        <string>'text/x-taverna-web-url'</string>
111      </mimeTypes>
112    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
113    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
114      <handledReferenceSchemes />
115      <translatedElementType>java.lang.String</translatedElementType>
116      <allowsLiteralValues>true</allowsLiteralValues>
117      <name>base</name>
118      <depth>0</depth>
119      <mimeTypes>
120        <string>'text/x-taverna-web-url'</string>
121      </mimeTypes>
122    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
123  </inputs>
124  <outputs>
125    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
126      <granularDepth>0</granularDepth>
127      <name>image</name>
128      <depth>0</depth>
129      <mimeTypes>
130        <string>'image/*'</string>
131      </mimeTypes>
132    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
133  </outputs>
134</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
135  <maxJobs>1</maxJobs>
136</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
137  <backoffFactor>1.0</backoffFactor>
138  <initialDelay>1000</initialDelay>
139  <maxDelay>5000</maxDelay>
140  <maxRetries>0</maxRetries>
141</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="url" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>gcskew_params</name><inputPorts><port><name>window</name><depth>0</depth></port><port><name>cumulative</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>wsdl-activity</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterActivity</class><inputMap><map from="window" to="window" /><map from="cumulative" to="cumulative" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLSplitterConfigurationBean xmlns="">
142  <wrappedTypeXML>&lt;s:extensions xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha"&gt;&lt;s:complextype optional="false" unbounded="false" typename="gcskewInputParams" name="params" qname="{http://www.g-language.org/GLANG}gcskewInputParams"&gt;&lt;s:elements&gt;&lt;s:basetype optional="false" unbounded="false" typename="int" name="window" qname="gcskewInputParams&amp;gt;window" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="string" name="filename" qname="gcskewInputParams&amp;gt;filename" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="int" name="at" qname="gcskewInputParams&amp;gt;at" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="int" name="purine" qname="gcskewInputParams&amp;gt;purine" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="string" name="output" qname="gcskewInputParams&amp;gt;output" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="int" name="cumulative" qname="gcskewInputParams&amp;gt;cumulative" /&gt;&lt;s:basetype optional="false" unbounded="false" typename="int" name="keto" qname="gcskewInputParams&amp;gt;keto" /&gt;&lt;/s:elements&gt;&lt;/s:complextype&gt;&lt;/s:extensions&gt;</wrappedTypeXML>
143  <inputs>
144    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
145      <allowsLiteralValues>false</allowsLiteralValues>
146      <name>window</name>
147      <depth>0</depth>
148      <mimeTypes class="java.util.Collections$SingletonList">
149        <element class="string">'text/plain'</element>
150      </mimeTypes>
151    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
152    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
153      <allowsLiteralValues>false</allowsLiteralValues>
154      <name>filename</name>
155      <depth>0</depth>
156      <mimeTypes class="java.util.Collections$SingletonList">
157        <element class="string">'text/plain'</element>
158      </mimeTypes>
159    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
160    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
161      <allowsLiteralValues>false</allowsLiteralValues>
162      <name>at</name>
163      <depth>0</depth>
164      <mimeTypes class="java.util.Collections$SingletonList">
165        <element class="string">'text/plain'</element>
166      </mimeTypes>
167    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
168    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
169      <allowsLiteralValues>false</allowsLiteralValues>
170      <name>purine</name>
171      <depth>0</depth>
172      <mimeTypes class="java.util.Collections$SingletonList">
173        <element class="string">'text/plain'</element>
174      </mimeTypes>
175    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
176    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
177      <allowsLiteralValues>false</allowsLiteralValues>
178      <name>output</name>
179      <depth>0</depth>
180      <mimeTypes class="java.util.Collections$SingletonList">
181        <element class="string">'text/plain'</element>
182      </mimeTypes>
183    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
184    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
185      <allowsLiteralValues>false</allowsLiteralValues>
186      <name>cumulative</name>
187      <depth>0</depth>
188      <mimeTypes class="java.util.Collections$SingletonList">
189        <element class="string">'text/plain'</element>
190      </mimeTypes>
191    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
192    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
193      <allowsLiteralValues>false</allowsLiteralValues>
194      <name>keto</name>
195      <depth>0</depth>
196      <mimeTypes class="java.util.Collections$SingletonList">
197        <element class="string">'text/plain'</element>
198      </mimeTypes>
199    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
200  </inputs>
201  <outputs>
202    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
203      <granularDepth>0</granularDepth>
204      <name>output</name>
205      <depth>0</depth>
206      <mimeTypes class="java.util.Collections$SingletonList">
207        <element class="string">'text/xml'</element>
208      </mimeTypes>
209    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
210  </outputs>
211</net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLSplitterConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
212  <maxJobs>1</maxJobs>
213</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
214  <backoffFactor>1.0</backoffFactor>
215  <initialDelay>1000</initialDelay>
216  <maxDelay>5000</maxDelay>
217  <maxRetries>0</maxRetries>
218</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2</group><artifact>workflowmodel-impl</artifact><version>0.4</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="window" depth="0" /><port name="cumulative" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Get_Nucleotide_FASTA</processor><port>id</port></sink><source type="dataflow"><port>id</port></source></datalink><datalink><sink type="processor"><processor>gcskew</processor><port>in0</port></sink><source type="processor"><processor>Get_Nucleotide_FASTA</processor><port>outputText</port></source></datalink><datalink><sink type="processor"><processor>gcskew</processor><port>params</port></sink><source type="processor"><processor>gcskew_params</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>Get_Image_From_URL</processor><port>url</port></sink><source type="processor"><processor>gcskew</processor><port>result</port></source></datalink><datalink><sink type="processor"><processor>gcskew_params</processor><port>window</port></sink><source type="dataflow"><port>window</port></source></datalink><datalink><sink type="processor"><processor>gcskew_params</processor><port>cumulative</port></sink><source type="dataflow"><port>cumulative</port></source></datalink><datalink><sink type="dataflow"><port>image_gcskew</port></sink><source type="processor"><processor>Get_Image_From_URL</processor><port>image</port></source></datalink><datalink><sink type="dataflow"><port>outseq</port></sink><source type="processor"><processor>Get_Nucleotide_FASTA</processor><port>outputText</port></source></datalink><datalink><sink type="dataflow"><port>param</port></sink><source type="processor"><processor>gcskew</processor><port>result</port></source></datalink></datalinks><annotations /></dataflow></workflow>