lucian smith - modular modeling: standards and tools (imag)

64
MODULAR MODELING: STANDARDS AND TOOLS L UCIAN S MITH SBML T EAM HTTP :// SBML . ORG / C ALTECH IMAG WEBINAR , M ARCH 8 TH , 2013

Upload: lucian-smith

Post on 05-Dec-2014

476 views

Category:

Technology


1 download

DESCRIPTION

An overview of modularity in modeling, and what standards and tools are out there that support it.

TRANSCRIPT

MODULAR MODELING:

STANDARDS AND TOOLSLUCIAN SMITH

SBML TEAM

HTTP://SBML.ORG/

CALTECH

IMAG WEBINAR, MARCH 8TH, 2013

FORMS OF MODULARITY

FORMS OF MODULARITY

• WITHIN-MODEL

ORGANIZATION

FORMS OF MODULARITY

• WITHIN-MODEL

ORGANIZATION

FORMS OF MODULARITY

• MODEL IMPORT

FORMS OF MODULARITY

• MODEL IMPORT

FORMS OF MODULARITY

• MODEL IMPORT

FORMS OF MODULARITY

• MODEL IMPORT

FORMS OF MODULARITY

• MIMIC REALITY

FORMS OF MODULARITY

• SYNTHETIC DESIGN

FORMS OF MODULARITY

• LARGE-SCALE AND

MULTI-SCALE MODEL

DESIGN

FORMS OF MODULARITY

• LARGE-SCALE AND

MULTI-SCALE MODEL

DESIGN

FORMS OF MODULARITY

• LARGE-SCALE AND

MULTI-SCALE MODEL

DESIGN

FORMS OF MODULARITY

• LARGE-SCALE AND

MULTI-SCALE MODEL

DESIGN

FORMS OF MODULARITY

• LARGE-SCALE AND

MULTI-SCALE MODEL

DESIGN

BASIC MODULARITY REQUIREMENTS

BASIC MODULARITY REQUIREMENTS

• DEFINE/IMPORT MODULES

BASIC MODULARITY REQUIREMENTS

• DEFINE/IMPORT MODULES

• CONNECT ELEMENTS

BASIC MODULARITY REQUIREMENTS

• DEFINE/IMPORT MODULES

• CONNECT ELEMENTS

• RUN SIMULATION

DEFINE MODULES

mod3 mod4

mod1 mod2

IMPORT MODULES

mod3 mod4

mod1

extmodel

CONNECT ELEMENTS

Q

B C

A

D

P

R

CONNECT ELEMENTS

Q

B C

A

D

P

R

CONNECT ELEMENTS

Q

B Q

A

D

P

R

CONNECT ELEMENTS

Q

B

A

D

P

R

SIMULATE: FLATTEN

SIMULATE MODULARLY

SIMULATE MODULARLY

SIMULATE MODULARLY

STANDARDS: CELLML

STANDARDS: CELLML

<component name="environment">

<variable units="ms" public_interface="out" name="time" cmeta:id="environment_time"/>

</component>

<component name="membrane">

<variable units="mV" public_interface="out" cmeta:id="membrane_V" name="V" initial_value="-84.624"/>

<variable units="uF_per_mm2" cmeta:id="membrane_C" name="C" initial_value="0.01"/>

<variable units="ms" public_interface="in" name="time"/>

<variable units="uA_per_mm2" public_interface="in" name="i_Na"/>

<variable units="uA_per_mm2" public_interface="in" name="i_s"/>

<variable units="uA_per_mm2" public_interface="in" name="i_x1"/>

<variable units="uA_per_mm2" public_interface="in" name="i_K1"/>

<variable units="uA_per_mm2" public_interface="in" name="Istim"/>

<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="membrane_voltage_diff_eq">

<apply>

<eq/>

<apply>

<diff/>

<bvar>

STANDARDS: CELLML

<component name="environment">

<variable units="ms" public_interface="out" name="time" cmeta:id="environment_time"/>

</component>

<component name="membrane">

<variable units="mV" public_interface="out" cmeta:id="membrane_V" name="V" initial_value="-84.624"/>

<variable units="uF_per_mm2" cmeta:id="membrane_C" name="C" initial_value="0.01"/>

<variable units="ms" public_interface="in" name="time"/>

<variable units="uA_per_mm2" public_interface="in" name="i_Na"/>

<variable units="uA_per_mm2" public_interface="in" name="i_s"/>

<variable units="uA_per_mm2" public_interface="in" name="i_x1"/>

<variable units="uA_per_mm2" public_interface="in" name="i_K1"/>

<variable units="uA_per_mm2" public_interface="in" name="Istim"/>

<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="membrane_voltage_diff_eq">

<apply>

<eq/>

<apply>

<diff/>

<bvar>

STANDARDS: CELLML

<component name="environment">

<variable units="ms" public_interface="out" name="time" cmeta:id="environment_time"/>

</component>

<component name="membrane">

<variable units="mV" public_interface="out" cmeta:id="membrane_V" name="V" initial_value="-84.624"/>

<variable units="uF_per_mm2" cmeta:id="membrane_C" name="C" initial_value="0.01"/>

<variable units="ms" public_interface="in" name="time"/>

<variable units="uA_per_mm2" public_interface="in" name="i_Na"/>

<variable units="uA_per_mm2" public_interface="in" name="i_s"/>

<variable units="uA_per_mm2" public_interface="in" name="i_x1"/>

<variable units="uA_per_mm2" public_interface="in" name="i_K1"/>

<variable units="uA_per_mm2" public_interface="in" name="Istim"/>

<math xmlns="http://www.w3.org/1998/Math/MathML" cmeta:id="membrane_voltage_diff_eq">

<apply>

<eq/>

<apply>

<diff/>

<bvar>

STANDARDS: CELLML

<connection>

<map_components component_2="environment" component_1="membrane"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="sodium_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="slow_inward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="time_dependent_outward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

STANDARDS: CELLML

<connection>

<map_components component_2="environment" component_1="membrane"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="sodium_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="slow_inward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="time_dependent_outward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

STANDARDS: CELLML

<connection>

<map_components component_2="environment" component_1="membrane"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="sodium_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="slow_inward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

<connection>

<map_components component_2="environment" component_1="time_dependent_outward_current"/>

<map_variables variable_2="time" variable_1="time"/>

</connection>

TOOLS: CELLML

• OPENCELL 0.8

TOOLS: CELLML

• OPENCOR V0.0

STANDARDS: SBML

STANDARDS: SBML<sbml xmlns="http://www.sbml.org/sbml/level2/version4" level="2" version="4">

<model id="bistable">

<listOfCompartments>

<compartment id="default_compartment" size="1"/>

</listOfCompartments>

<listOfSpecies>

<species id="s1" compartment="default_compartment"/>

<species id="s2" compartment="default_compartment"/>

</listOfSpecies>

<listOfParameters>

<parameter id="k1" value="1"/>

<parameter id="k2" value="1"/>

</listOfParameters>

<listOfReactions>

<reaction id="g1">

<listOfProducts>

<speciesReference species="s1"/>

</listOfProducts>

<listOfModifiers>

<modifierSpeciesReference species="s2"/>

</listOfModifiers>

STANDARDS: SBML<sbml xmlns="http://www.sbml.org/sbml/level2/version4" level="2" version="4">

<model id="bistable">

<listOfCompartments>

<compartment id="default_compartment" size="1"/>

</listOfCompartments>

<listOfSpecies>

<species id="s1" compartment="default_compartment"/>

<species id="s2" compartment="default_compartment"/>

</listOfSpecies>

<listOfParameters>

<parameter id="k1" value="1"/>

<parameter id="k2" value="1"/>

</listOfParameters>

<listOfReactions>

<reaction id="g1">

<listOfProducts>

<speciesReference species="s1"/>

</listOfProducts>

<listOfModifiers>

<modifierSpeciesReference species="s2"/>

</listOfModifiers>

STANDARDS: SBML-COMPOSITION*<model>

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef2“ comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</model>

<comp:listOfModelDefinitions>

<comp:modelDefinition id="moddef2">

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef1" comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</comp:modelDefinition>

<comp:modelDefinition id="moddef1">

<listOfParameters>

<parameter id="t1" constant="false"/>

</listOfParameters>*HIERARCHICAL MODEL COMPOSITION

STANDARDS: SBML-COMPOSITION*<model>

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef2“ comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</model>

<comp:listOfModelDefinitions>

<comp:modelDefinition id="moddef2">

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef1" comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</comp:modelDefinition>

<comp:modelDefinition id="moddef1">

<listOfParameters>

<parameter id="t1" constant="false"/>

</listOfParameters>*HIERARCHICAL MODEL COMPOSITION

STANDARDS: SBML-COMPOSITION*<model>

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef2“ comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</model>

<comp:listOfModelDefinitions>

<comp:modelDefinition id="moddef2">

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef1" comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</comp:modelDefinition>

<comp:modelDefinition id="moddef1">

<listOfParameters>

<parameter id="t1" constant="false"/>

</listOfParameters>*HIERARCHICAL MODEL COMPOSITION

STANDARDS: SBML-COMPOSITION*<model>

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef2“ comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</model>

<comp:listOfModelDefinitions>

<comp:modelDefinition id="moddef2">

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef1" comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</comp:modelDefinition>

<comp:modelDefinition id="moddef1">

<listOfParameters>

<parameter id="t1" constant="false"/>

</listOfParameters>*HIERARCHICAL MODEL COMPOSITION

STANDARDS: SBML-COMPOSITION*<model>

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef2“ comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</model>

<comp:listOfModelDefinitions>

<comp:modelDefinition id="moddef2">

<listOfParameters>

<parameter id="timeconv" value="60" constant="true"/>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id="sub1" comp:modelRef="moddef1" comp:timeConversionFactor="timeconv"/>

</comp:listOfSubmodels>

</comp:modelDefinition>

<comp:modelDefinition id="moddef1">

<listOfParameters>

<parameter id="t1" constant="false"/>

</listOfParameters>*HIERARCHICAL MODEL COMPOSITION

STANDARDS: SBML-COMPOSITION<model id="foo" name="foo">

<listOfParameters>

<parameter id=“Q" value="3" constant="true">

<comp:listOfReplacedElements>

<comp:replacedElement comp:idRef=“C" comp:submodelRef=“sub1"/>

</comp:listOfReplacedElements>

</parameter>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id=“sub1" comp:modelRef="bar"/>

</comp:listOfSubmodels>

</model>

STANDARDS: SBML-COMPOSITION<model id="foo" name="foo">

<listOfParameters>

<parameter id=“Q" value="3" constant="true">

<comp:listOfReplacedElements>

<comp:replacedElement comp:idRef=“C" comp:submodelRef=“sub1"/>

</comp:listOfReplacedElements>

</parameter>

</listOfParameters>

<comp:listOfSubmodels>

<comp:submodel comp:id=“sub1" comp:modelRef="bar"/>

</comp:listOfSubmodels>

</model>

TOOLS: ANTIMONY

TOOLS: ANTIMONY

TOOLS: ANTIMONY

TOOLS: ANTIMONY

TOOLS: ANTIMONY

• TRANSLATION TO

CELLML

TOOLS: ANTIMONY

• TRANSLATION TO

SBML

TOOLS: ANTIMONY

• TRANSLATION TO

FLATTENED SBML

TOOLS: ANTIMONY

• TRANSLATION TO

FLATTENED SBML

TOOLS: IBIOSIM

• CREATION OF

MODULAR

MODELS

TOOLS: TINKERCELL

• CREATION OF

MODULAR

SYNTHETIC

CIRCUITS

TOOLS: JIGCELL

• HAD CUSTOM

MODULAR SBML

IN 2007

REFERENCES

• CELLML, OPENCELL, OPENCOR: HTTP://CELLML.ORG

• SBML: HTTP://SBML.ORG

• ANTIMONY: HTTP://ANTIMONY.SF.NET

• IBIOSIM: HTTP://WWW.ASYNC.ECE.UTAH.EDU/IBIOSIM

• JIGCELL: HTTP://JIGCELL.CS.VT.EDU

• TINKERCELL: HTTP://WWW.TINKERCELL.COM

QUESTIONS?

BLACK-BOX VS. WHITE-BOX

• CELLML IS ‘BLACK-BOX’

• CANNOT MODIFY NON-INTERFACE ELEMENTS WITHOUT

CHANGING MODEL

• SBML-COMPOSITION IS ‘WHITE-BOX’

• AN INTERFACE IS SUGGESTED, BUT YOU ARE ALLOWED TO

ACCESS ANY INTERNAL ELEMENT

• BLACK BOX

• STRICTER CONTROL

• MORE PREDICTABLE

BEHAVIOR

• WHITE BOX

• EASIER TO RE-USE MODELS

IN NEW CONTEXTS

• CAN RE-USE INTERNAL

CONSTANTS MORE READILY

ULTIMATELY SMALL DIFFERENCES: EDITS CAN CHANGE ONE TO THE OTHER

BLACK-BOX VS. WHITE-BOX

PROCESS VS. MATH