SBML.org — the global portal for all things SBML

Adding Ports

In this scenario, someone has an existing external model, and wishes to add ports to it. Let us suppose that someone wishes to extend the Teusink model of yeast glycolysis (biomodels 64). In that model, there are a number of boundary species. We wish to create a model with ports for all these species, so that we can control them with a new model.

Because each port is an SBaseRef, this can be done very straightforwardly. First, we create a document with an ExternalModelDefinition which points to biomodels 64, and have the main SBML model instantiate that model as a submodel:

<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" 
 xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3"
 version="1" comp:required="true">
 <comp:listOfExternalModelDefinitions>
   <comp:externalModelDefinition comp:id="teusink_glycolysis"
    comp:source="urn:miriam:biomodels.db:BIOMD0000000064"/>
 </comp:listOfExternalModelDefinitions>
 <model id="glycolysis_with_ports">
   <comp:listOfSubmodels>
     <comp:submodel comp:id="glycolysis" comp:modelRef="teusink_glycolysis"/>
   </comp:listOfSubmodels>
 </model>
</sbml>

So far, the model 'glycolysis_with_ports' is exactly the same as the original.

Now, we add ports. Because each port is an SBaseRef, we can have the port's idRef point to the "glycolysis" submodel, with a child SBaseRef object that points to the particular element we wish to turn into a port. We do this for all the boundary species in the model, as well as the two compartments:

<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" 
 xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3"
 version="1" comp:required="true">
 <comp:listOfExternalModelDefinitions>
   <comp:externalModelDefinition comp:id="teusink_glycolysis"
    comp:source="urn:miriam:biomodels.db:BIOMD0000000064"/>
 </comp:listOfExternalModelDefinitions>
 <model id="glycolysis_with_ports">
   <comp:listOfSubmodels>
     <comp:submodel comp:id="glycolysis" comp:modelRef="teusink_glycolysis"/>
   </comp:listOfSubmodels>
   <comp:listOfPorts>
     <comp:port comp:idRef="glycolysis" comp:id="cytosol_port">
       <comp:sBaseRef comp:idRef="cytosol"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="extracellular_port">
       <comp:sBaseRef comp:idRef="extracellular"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="Glyc_port">
       <comp:sBaseRef comp:idRef="Glyc"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="Trh_port">
       <comp:sBaseRef comp:idRef="Trh"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="CO2_port">
       <comp:sBaseRef comp:idRef="CO2"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="SUCC_port">
       <comp:sBaseRef comp:idRef="SUCC"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="GLCo_port">
       <comp:sBaseRef comp:idRef="GLCo"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="ETOH_port">
       <comp:sBaseRef comp:idRef="ETOH"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="GLY_port">
       <comp:sBaseRef comp:idRef="GLY"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="ATP_port">
       <comp:sBaseRef comp:idRef="ATP"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="ADP_port">
       <comp:sBaseRef comp:idRef="ADP"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="AMP_port">
       <comp:sBaseRef comp:idRef="AMP"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="SUM_P_port">
       <comp:sBaseRef comp:idRef="SUM_P"/>
     </comp:port>
     <comp:port comp:idRef="glycolysis" comp:id="F26BP_port">
       <comp:sBaseRef comp:idRef="F26BP"/>
     </comp:port>
   </comp:listOfPorts>
 </model>
</sbml>

And that's it! This model may now be used as a submodel in a different model using the port interface instead of the idRef interface.

Retrieved from "http://sbml.org/SBML_Level_3_Proposals/comp/Adding_Ports"

This page was last modified 23:50, 24 June 2011.



Please use our issue tracking system for any questions or suggestions about this website. This page was last modified 23:50, 24 June 2011.