Construction of skeleton SBML model using a list of yeast ORF numbers
This workflow generates a skeleton SBML model consisting of the metabolic reactions for a given list of yeast enzymes ORF numbers
Preview
Run
Run this Workflow in the Taverna Workbench...
Option 1:
Copy and paste this link into File > 'Open workflow location...'
http://myexperiment.org/workflows/1197/download?version=1
[ More Info ]
Taverna is available from http://taverna.sourceforge.net/
If you are having problems downloading it in Taverna, you may need to provide your username and password in the URL so that Taverna can access the Workflow:
Replace http:// in the link above with http://yourusername:yourpassword@
Workflow Components
Peter Li |
Construction of skeleton SBML model |
This workflow generates a skeleton SBML model consisting of the metabolic reactions for a given list of yeast enzymes ORF numbers |
libsbmlj.jar |
graphviz-api-1.0.jar |
libsbml_helpers.jar |
Name | Description |
---|---|
yeast_orfs | A list of yeast orf numbers. |
Name | Type | Description |
---|---|---|
split | localworker |
ScriptList split = new ArrayList(); if (!string.equals("")) { String regexString = ","; if (regex != void) { regexString = regex; } String[] result = string.split(regexString); for (int i = 0; i < result.length; i++) { split.add(result[i]); } } |
regex | stringconstant |
Value, |
filterOrfs | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationfilterOrfs |
getReactionIdsByOrf | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetReactionIdsByOrf |
flatten | localworker |
Scriptflatten(inputs, outputs, depth) { for (i = inputs.iterator(); i.hasNext();) { element = i.next(); if (element instanceof Collection && depth > 0) { flatten(element, outputs, depth - 1); } else { outputs.add(element); } } } outputlist = new ArrayList(); flatten(inputlist, outputlist, 1); |
getReactantsByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetReactantsByReactionId |
getProductsByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetProductsByReactionId |
getModifiersByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetModifiersByReactionId |
merge | beanshell |
Script//Output ArrayList speciesIds = new ArrayList(); //Iterate thru reactants, products and modifiers for(ArrayList al: reactants) { for(String reactant: al) { if(!speciesIds.contains(reactant)) speciesIds.add(reactant); } } for(ArrayList al: products) { for(String product: al) { if(!speciesIds.contains(product)) speciesIds.add(product); } } for(ArrayList al: modifiers) { for(String modifier: al) { if(!speciesIds.contains(modifier)) speciesIds.add(modifier); } } //Final clean up - remove empty strings speciesIds.remove(""); |
getCompartmentIdBySpeciesId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetCompartmentIdBySpeciesId |
removeDuplicateCompIds | localworker |
ScriptList strippedlist = new ArrayList(); for (Iterator i = stringlist.iterator(); i.hasNext();) { String item = (String) i.next(); if (strippedlist.contains(item) == false) { strippedlist.add(item); } } |
mergeCompIds | beanshell |
Script//Output finalCompIds = new ArrayList(); //Copy items into final list for(int i = 0; i < compIds.size(); i++) { String compId = compIds.get(i); finalCompIds.add(compId); } //Copy outside compIds into final list for(int x = 0; x < outsideCompIds.size(); x++) { String outsideCompId = outsideCompIds.get(x); if(!finalCompIds.contains(outsideCompId)) finalCompIds.add(outsideCompId); } |
createCompartments | workflow | |
createCompMetaId | beanshell |
ScriptString compMetaId = "metaid_" + compId; |
getCompNameById | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetCompartmentNameById |
getOutsideCompById | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetOutsideCompartmentById |
getSboTermByCompId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetSboTermByCompartmentId |
getGOId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetGOIdById |
createModel | workflow | |
tag | stringconstant |
Valueglycolysis |
modelId | stringconstant |
Valuetaverna1 |
metaId | stringconstant |
Valuetaverna1a |
addCompartmentToModel | workflow | |
createSpecies | workflow | |
getKeggBySpId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetKeggBySpeciesId |
getChebiIdBySpId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetChebiIdBySpeciesId |
getInchiBySpId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetInchiBySpeciesId |
getSpSboTerm | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetSBOTermById |
filterSboTerm | beanshell |
Scriptif(sboTermIn.equals("")) { sboTermOut = "0"; } else { sboTermOut = sboTermIn; } |
getSgdBySpId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetSgdBySpeciesId |
getNameById | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetSpeciesNameById |
createSpMetaId | beanshell |
ScriptString speciesMetaId = "metaid_" + speciesId; |
getUniprotBySpId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetUniprotBySpeciesId |
addSpecies | apiconsumer | |
createReaction | workflow | |
getNameByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetNameByReactionId |
getSboTermByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetSboTermByReactionId |
filterSboTermForReaction | beanshell |
Scriptif(sboTermIn.equals("")) { sboTermOut = "0"; } else { sboTermOut = sboTermIn; } |
getECNumberByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetECNumberByReactionId |
getPubMedByReactionId | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetPubMedByReactionId |
getNumberOfReactants | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetNumberOfReactants |
wrapWithList1 | beanshell |
Scriptoutput = new ArrayList(); for(int i = 0 ; i < input.size(); i++) { String item = input.get(i); String number = reactantNumber.get(i); int x = Integer.parseInt(number); al = new ArrayList(); for(int y = 0; y < x; y++) { al.add(item); } output.add(al); } |
getReactantStoich | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetStoichiometry |
createReactantSpeciesRef | workflow | |
addReactantToReaction | workflow | |
getNumberOfProducts | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetNumberOfProducts |
wrapWithList2 | beanshell |
Scriptoutput = new ArrayList(); for(int i = 0 ; i < input.size(); i++) { String item = input.get(i); String number = reactantNumber.get(i); int x = Integer.parseInt(number); al = new ArrayList(); for(int y = 0; y < x; y++) { al.add(item); } output.add(al); } |
getProductStoich | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetStoichiometry |
createProductSpeciesRef | workflow | |
addProductToReaction | workflow | |
createModifierSpeciesRef | workflow | |
addModifierToReaction | workflow | |
addReactionToModel | apiconsumer | |
createSBMLDocument | apiconsumer | |
setModelToDocument | apiconsumer | |
createSBMLWriter | apiconsumer | |
writeToString | apiconsumer | |
createDot | beanshell |
Scriptimport org.kohsuke.graphviz.Graph; import org.kohsuke.graphviz.Node; import org.sbml.libsbml.*; boolean displayEnzymes = false; int cloneCount = 1; Graph graph = new Graph(); graph.id("SBML"); graph.addGlobalGraphAttr("ranksep","0.22"); graph.addGlobalGraphAttr("nodesep","0.05"); graph.addGlobalNodeAttr("fontname","Helvetica"); graph.addGlobalNodeAttr("fontsize","7"); graph.addGlobalNodeAttr("fontcolor","black"); graph.addGlobalNodeAttr("color","lightgoldenrodyellow"); graph.addGlobalNodeAttr("fillcolor","lightgoldenrodyellow"); graph.addGlobalNodeAttr("style","filled"); SBMLReader reader = new SBMLReader(); SBMLDocument doc = reader.readSBMLFromString(sbml); Model model = doc.getModel(); //Sort out metabolites ListOfSpecies specieslist = model.getListOfSpecies(); for(int i = 0; i < specieslist.size(); i++) { Species sp = (Species)specieslist.get(i); Node node = new Node(); String name = sp.getName(); //System.out.println(name); if(name.equals("ATP") || name.equals("ADP") || name.equals("Phosphate") || name.equals("H+") || name.equals("H2O") || name.equals("CO2") || name.equals("Nicotinamide adenine dinucleotide - reduced") || name.equals("Nicotinamide adenine dinucleotide") || name.equals("Nicotinamide adenine dinucleotide phosphate") || name.equals("Nicotinamide adenine dinucleotide phosphate - reduced")) continue; //For enzymes if(!name.startsWith("Y")) node.id("\"" + name + "\" [fillcolor = \"lightgoldenrodyellow\" shape=\"ellipse\"]"); else if(displayEnzymes) node.id("\"" + name + "\" [fillcolor = \"steelblue1\" shape=\"ellipse\"]"); else continue; graph.node(node); } //Sort out reactions ListOfReactions reactionslist = model.getListOfReactions(); for(int x = 0; x < reactionslist.size(); x ++) { Reaction r = (Reaction)reactionslist.get(x); Node reaction = new Node(); reaction.id("\"" + r.getId() + "\""); reaction.attr("shape", "rectangle"); reaction.attr("fillcolor", "darkolivegreen3"); graph.node(reaction); ListOfSpeciesReferences reactants = r.getListOfReactants(); for(int y = 0; y < reactants.size(); y++) { SpeciesReference sref = (SpeciesReference)reactants.get(y); Species sp = model.getSpecies(sref.getSpecies()); String rname = sp.getName(); Node n = new Node(); //Check if node needs cloning if(rname.equalsIgnoreCase("ATP") || rname.equals("ADP") || rname.equals("Phosphate") || rname.equals("H+") || rname.equals("Nicotinamide adenine dinucleotide - reduced") || rname.equals("Nicotinamide adenine dinucleotide") || rname.equals("Nicotinamide adenine dinucleotide phosphate - reduced") || rname.equals("Nicotinamide adenine dinucleotide phosphate") || rname.equals("H2O")) { continue; } else { n.id("\"" + rname + "\""); } graph.edge(n, reaction); } ListOfSpeciesReferences products = r.getListOfProducts(); for(int y = 0; y < products.size(); y++) { SpeciesReference sref = (SpeciesReference)products.get(y); Species sp = model.getSpecies(sref.getSpecies()); String pname = sp.getName(); Node n = new Node(); //Check if node needs cloning if(pname.equals("ATP") || pname.equals("ADP") || pname.equals("Phosphate") || pname.equals("H+") || pname.equals("Nicotinamide adenine dinucleotide - reduced") || pname.equals("Nicotinamide adenine dinucleotide") || pname.equals("Nicotinamide adenine dinucleotide phosphate - reduced") || pname.equals("Nicotinamide adenine dinucleotide phosphate") || pname.equals("H2O")) { continue; } else { n.id("\"" + pname + "\""); } graph.edge(reaction, n); } if(displayEnzymes) { //Add edges from enzyme species modifiers to reactions ListOfSpeciesReferences modifiers = r.getListOfModifiers(); for(int y = 0; y < modifiers.size(); y++) { SimpleSpeciesReference msref = (SimpleSpeciesReference)modifiers.get(y); String id = msref.getSpecies(); //Deal with empty list of modifier references if(id.equals("")) continue; Species species = model.getSpecies(id); String mname = species.getName(); Node n = new Node(); n.id("\"" + mname + "\""); graph.edge(n, reaction); } } } baos = new ByteArrayOutputStream(); graph.writeTo(baos); String dot = baos.toString(); |
display | beanshell |
Scriptimport java.io.*; import java.util.*; // GraphViz.java - a simple API to call dot from Java programs /*$Id$*/ /* ****************************************************************************** * * * (c) Copyright 2003 Laszlo Szathmary * * * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU Lesser General Public License as published by * * the Free Software Foundation; either version 2.1 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * * License for more details. * * * * You should have received a copy of the GNU Lesser General Public License * * along with this program; if not, write to the Free Software Foundation, * * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * ****************************************************************************** */ /** *
|
getOutsideCompartmentIds | wsdl |
Wsdlhttp://dbk-ed.mib.man.ac.uk:8080/YeastMetabolicNetwork/services/YeastMetabolicNetwork?wsdlWsdl OperationgetOutsideCompartmentIds |
flatten2 | localworker |
Scriptflatten(inputs, outputs, depth) { for (i = inputs.iterator(); i.hasNext();) { element = i.next(); if (element instanceof Collection && depth > 0) { flatten(element, outputs, depth - 1); } else { outputs.add(element); } } } outputlist = new ArrayList(); flatten(inputlist, outputlist, 1); |
Name | Description | Inputs | Outputs |
---|---|---|---|
merge |
reactants products modifiers |
speciesIds | |
mergeCompIds |
compIds outsideCompIds |
finalCompIds | |
createCompMetaId | compId | compMetaId | |
filterSboTerm | sboTermIn | sboTermOut | |
createSpMetaId | speciesId | speciesMetaId | |
filterSboTermForReaction | sboTermIn | sboTermOut | |
wrapWithList1 |
input reactantNumber |
output | |
wrapWithList2 |
input reactantNumber |
output | |
createDot | sbml | dot | |
display | dot | out | |
createMetaId | speciesId | metaId |
Name | Description |
---|---|
sbml_model | An SBML model |
sbml_graph | A png image of a graph representing the SBML model generated by this workflow |
Source | Sink |
---|---|
regex:value | split:regex |
yeast_orfs | split:string |
split:split | filterOrfs:orfs |
filterOrfs:filterOrfsReturn | getReactionIdsByOrf:orf |
getReactionIdsByOrf:getReactionIdsByOrfReturn | flatten:inputlist |
flatten:outputlist | getReactantsByReactionId:reactionId |
flatten:outputlist | getProductsByReactionId:reactionId |
flatten:outputlist | getModifiersByReactionId:reactionId |
getReactantsByReactionId:getReactantsByReactionIdReturn | merge:reactants |
getProductsByReactionId:getProductsByReactionIdReturn | merge:products |
getModifiersByReactionId:getModifiersByReactionIdReturn | merge:modifiers |
merge:speciesIds | getCompartmentIdBySpeciesId:speciesId |
getCompartmentIdBySpeciesId:getCompartmentIdBySpeciesIdReturn | removeDuplicateCompIds:stringlist |
removeDuplicateCompIds:strippedlist | mergeCompIds:compIds |
getOutsideCompartmentIds:getOutsideCompartmentIdsReturn | mergeCompIds:outsideCompIds |
createCompMetaId:compMetaId | createCompartments:compMetaId |
getCompNameById:getCompartmentNameByIdReturn | createCompartments:compName |
getOutsideCompById:getOutsideCompartmentByIdReturn | createCompartments:outsideCompId |
getSboTermByCompId:getSboTermByCompartmentIdReturn | createCompartments:compSboTerm |
getGOId:getGOIdByIdReturn | createCompartments:compGoId |
flatten2:outputlist | createCompartments:compId |
flatten2:outputlist | createCompMetaId:compId |
flatten2:outputlist | getCompNameById:compartmentId |
flatten2:outputlist | getOutsideCompById:compartmentId |
flatten2:outputlist | getSboTermByCompId:compartmentId |
flatten2:outputlist | getGOId:compartmentId |
tag:value | createModel:modelName |
modelId:value | createModel:modelId |
metaId:value | createModel:modelMetaId |
createModel:model | addCompartmentToModel:modelIn |
createCompartments:compartment | addCompartmentToModel:compartments |
getKeggBySpId:getKeggBySpeciesIdReturn | createSpecies:kegg |
getChebiIdBySpId:getChebiIdBySpeciesIdReturn | createSpecies:chebi |
getInchiBySpId:getInchiBySpeciesIdReturn | createSpecies:inchi |
filterSboTerm:sboTermOut | createSpecies:speciesSboTerm |
merge:speciesIds | createSpecies:speciesId |
getSgdBySpId:getSgdBySpeciesIdReturn | createSpecies:sgd |
getNameById:getSpeciesNameByIdReturn | createSpecies:speciesName |
createSpMetaId:speciesMetaId | createSpecies:speciesMetaId |
getCompartmentIdBySpeciesId:getCompartmentIdBySpeciesIdReturn | createSpecies:speciesCompId |
getUniprotBySpId:getUniprotBySpeciesIdReturn | createSpecies:uniprot |
merge:speciesIds | getKeggBySpId:speciesId |
merge:speciesIds | getChebiIdBySpId:speciesId |
merge:speciesIds | getInchiBySpId:speciesId |
merge:speciesIds | getSpSboTerm:speciesId |
getSpSboTerm:getSBOTermByIdReturn | filterSboTerm:sboTermIn |
merge:speciesIds | getSgdBySpId:speciesId |
merge:speciesIds | getNameById:speciesId |
merge:speciesIds | createSpMetaId:speciesId |
merge:speciesIds | getUniprotBySpId:speciesId |
createModel:model | addSpecies:object |
createSpecies:species | addSpecies:s |
flatten:outputlist | createReaction:id |
getNameByReactionId:getNameByReactionIdReturn | createReaction:name |
filterSboTermForReaction:sboTermOut | createReaction:sboTerm |
getECNumberByReactionId:getECNumberByReactionIdReturn | createReaction:ec_code |
getPubMedByReactionId:getPubMedByReactionIdReturn | createReaction:pubmedId |
flatten:outputlist | getNameByReactionId:reactionId |
flatten:outputlist | getSboTermByReactionId:reactionId |
getSboTermByReactionId:getSboTermByReactionIdReturn | filterSboTermForReaction:sboTermIn |
flatten:outputlist | getECNumberByReactionId:reactionId |
flatten:outputlist | getPubMedByReactionId:reactionId |
flatten:outputlist | getNumberOfReactants:reactionId |
flatten:outputlist | wrapWithList1:input |
getNumberOfReactants:getNumberOfReactantsReturn | wrapWithList1:reactantNumber |
wrapWithList1:output | getReactantStoich:reactionId |
getReactantsByReactionId:getReactantsByReactionIdReturn | getReactantStoich:speciesId |
getReactantsByReactionId:getReactantsByReactionIdReturn | createReactantSpeciesRef:speciesId |
getReactantStoich:getStoichiometryReturn | createReactantSpeciesRef:stoich |
createReactantSpeciesRef:speciesRef | addReactantToReaction:reactantSpeciesRef |
createReaction:reaction | addReactantToReaction:reactionIn |
flatten:outputlist | getNumberOfProducts:reactionId |
getNumberOfProducts:getNumberOfProductsReturn | wrapWithList2:reactantNumber |
flatten:outputlist | wrapWithList2:input |
getProductsByReactionId:getProductsByReactionIdReturn | getProductStoich:speciesId |
wrapWithList2:output | getProductStoich:reactionId |
getProductsByReactionId:getProductsByReactionIdReturn | createProductSpeciesRef:speciesId |
getProductStoich:getStoichiometryReturn | createProductSpeciesRef:stoich |
createReaction:reaction | addProductToReaction:reactionIn |
createProductSpeciesRef:speciesRef | addProductToReaction:productSpeciesRef |
getModifiersByReactionId:getModifiersByReactionIdReturn | createModifierSpeciesRef:speciesId |
createReaction:reaction | addModifierToReaction:reactionIn |
createModifierSpeciesRef:modifierSpeciesRef | addModifierToReaction:modifierSpeciesRef |
createReaction:reaction | addReactionToModel:r |
createModel:model | addReactionToModel:object |
createSBMLDocument:object | setModelToDocument:object |
createModel:model | setModelToDocument:m |
createSBMLWriter:object | writeToString:object |
setModelToDocument:object | writeToString:d |
writeToString:result | createDot:sbml |
createDot:dot | display:dot |
removeDuplicateCompIds:strippedlist | getOutsideCompartmentIds:compartmentId |
mergeCompIds:finalCompIds | flatten2:inputlist |
writeToString:result | sbml_model |
display:out | sbml_graph |
Controller | Target |
---|---|
addCompartmentToModel | addSpecies |
addReactantToReaction | addProductToReaction |
addModifierToReaction | addReactionToModel |
addSpecies | addReactionToModel |
addReactionToModel | setModelToDocument |
addProductToReaction | addModifierToReaction |
Workflow Type
Version 1 (of 1)
Log in to add Tags
Shared with Groups (0)
None
Log in to add to one of your Packs
Statistics
Reviews (0)
Other workflows that use similar services (2)
Construction of skeleton SBML model using ... (1)
Created: 2010-03-26 | Last updated: 2010-03-26
Credits: Peter Li
Created: 2010-03-26
Credits: Peter Li
Comments (0)
No comments yet
Log in to make a comment