The specification of a single cell type can be provided to Infobiotics in SBML format. Specifically, Infobiotics is compatible with the SBML v2.1 generated by CellDesigner.
Alternatively, the specific modelling language based on SP-systems provided by Infobiotics can be used. The skeleton of the specification of an individual cell type, identified with the name cellTypeName must be done in a text file with extension .sps for Stochastic P-system according to the following format:
SPSystem cellTypeName
alphabet
...
endAlphabet
compartments
...
endCompartments
initialMultisets
...
endInitialMultisets
ruleSets
...
endRuleSets
endSPSystem
In Ron Weiss’ synthetic pulse propagation, there exist two different bacterial strains or cell types. One of them acts a signal sender and the other one as a pulse generator in response to the signal produced by the first bacterial strain. In what follows we use the specification of the signal sender to introduce the format for the specification of the different components of an SP-system model enumerated above.
The molecular species described as string-objects are specified within the block molecules ... endMolecules. Each molecular species is identified with a name, moleculeName. For example, in our signal sender the following molecular species are present:
alphabet
Pconst_geneLuxI
rnaLuxI_RNAP
rnaLuxI
proteinLuxI_Rib
proteinLuxI
signal3OC6
endAlphabet
These objects represent the constitutively expressed gene LuxI, Pconst_geneLuxI, an RNA polymerase producing the RNA associated with LuxI, rnaLuxI_RNAP, the LuxI RNA, rnaLuxI, a ribosome translating the corresponding RNA into the protein LuxI, proteinLuxI_Rib, the LuxI protein, proteinLuxI and the molecula signal 3OC6, signal3OC6.
The different compartments and regions relevant in a model of an individual cell type are specified in the block compartments ... endCompartments. Each compartment is identified with a compartmentName and the keyword inside followed by another compartmentName is used to specify the inclusion of the first compartment in the second one. The declaration of a compartment identified with compartmentName1 inside a compartment identified with compartmentName2 is specified as follows:
compartmentName1 inside compartmentName2
If a compartment is not contained in any other compartment of the system the key word inside and the second compartment name are omitted.
Our example includes two relevant regions for a bacterium. Specifically, the media surronding an individual cell and the bacterium itself. Note how the compartment bacterium is declared as contained in the compartment media:
compartments
media
bacterium inside media
endCompartments
The initial number of molecules present at the beginning of the simulation in the different compartments must be specified using the block initialMultisets ... endInitialMultisets. For each compartment identified with compartmentName a different block initialMultiset compartmentName ... endInitialMultiset must be declared inside the block initiaLMultisets. This inner block contains a list of species names follow by an integer representing the initial number of molecules:
initialMultisets
initialMultiset compartmentName
speciesName numberOfMolecules
...
endInitialMultiset
...
endInitialMultisets
If a compartment is initiallly empty the block declaring its initial number of molecules can be omitted. For example, our signal sender consists of two compartments, the media and the bacterium. The media is initially empty whereas the bacterium has a molecule Pcons_geneLuxI represeting a specific gene:
initialMultisets
initialMultiset bacterium
Pconst_geneLuxI 1
endInitialMultiset
endInitialMultisets
The molecular interactions in a cell type are represented using rules specified within the block ruleSets ... endRuleSets. For each compartment identified with compName a different block ruleSet compName ... endRuleSet enumerating the molecular interactions associated with the compartment must be inserted in the previous block:
ruleSets
ruleSet compName
...
endRuleSet
...
endRuleSets
The sender cell in our example needs the specification of the molecualar interactions involving two different compartments, the media and the bacterium:
ruleSets
ruleSet media
...
endRuleSet
ruleSet bacterium
...
endRuleSet
endRuleSets
The molecular interactions taking place inside a compartment (first rule type below) or moving molecules outside a compartment (second rule type below) and inside a compartment (third rule type below) are specified using one of the rule types bellow. These must be specified within the corresponding block ruleSet compName ... endRuleSet:
ruleName: [ reactants ]_compName -const-> [ products ]_compName const = value
ruleName: [ reactants ]_compName -const-> products [ ]_compName const = value
ruleName: reactants [ ]_compName -const-> [ products ]_compName const = value
In the above declaration ruleName is an identifier of the rule, reactants and products are either a single moleculeName or two separated by a plus symbol, moleculeName + moleculeName; the compartment involved in the molecular interaction is identified with compName; const is used to represent the stochastic constant specifically associated with the rule and its value is specified in const = value.
In the sender cell of our running example there are two different compartments, the media and the bacterium. In the media the only molecular interactions are signal diffusion out of the media, signal diffusion inside the bacterium and signal degradation. These are represented using the rules r1, r2 and r3 specified in the correponding ruleSet block:
ruleSet media
r1: [ signal3OC6 ]_media -c1-> signal3OC6 [ ]_media c1 = 1
r2: signal3OC6 [ ]_bacterium -c2-> [ signal3OC6 ]_bacterium c2 = 2
r3: [ signal3OC6 ]_bacterium -c3-> [ ]_bacterium c3 = 1
endRuleSet
The molecular interactions associated with a compartment can be specified in a modular way by reusing sets of rules, modules, containing variables that can be instantiated with specific molecular species names, stochastic constant values and compartment names. A module is specified by stating its identifier moduleName and the molecular names, stochastic constant values and compartment names for the corresponding instantiations (objectInstantiation, constantInstantiation, compInstantiaton). Finally, the file containing the library of modules where the corresponding module is defined must be specified after the key word from:
moduleName( objectInstantiation, constantInstantiation, compInstantiation ) from moduleLibraryFile
For example, in our sender cell the molecular interactions associated with the bacterium compartment are specified using two modules defined in the module library library.plb. The first one called Pconst contains rules describing the constitutive expression of a gene X, instantiated in this case with LuxI, at a rate c, instantiated with 0.1, inside a compartment l, instantiated with bacterium here. The second one called PostTransc consists of rules representing the processes involved in the post-transcriptional regultion of a protein X, instantiated with LuxI here, taking place a the rates instantiated with the values 3.36,0.0667,0.004,3.78,0.0667 inside a compartment instantiated as bacterium in this case.
Three additional rules are added in order to represent signal synthesis by proteinLuxI, signal diffusion out of the compartment bacterium and signal degradation:
ruleSet bacterium
Pconst({LuxI},{0.1},{bacterium}) from library.plb
PostTransc({LuxI},{3.36,0.0667,0.004,3.78,0.0667},{bacterium}) from library.plb
r1: [ proteinLuxI ]_bacterium -c1-> [ proteinLuxI + signal3OC6 ]_bacterium c1 = 1
r2: [ signal3OC6 ]_bacterium -c2-> signal3OC6 [ ]_bacterium c2 = 2
r3: [ signal3OC6 ]_bacterium -c3-> [ ]_bacterium c3 = 2
endRuleSet
The use of modules is extensively described in the next section.