libSBOL
2.3.3
|
See Full Code Example for full example code.
LibSBOL can help synthetic biologists design modular systems of biochemical interactions. Following is an example of such a circuit adapted from Synthesizing AND gate genetic circuits based on CRISPR-Cas9 for identification of bladder cancer cells. This circuit consists of a NAND gate coupled to a NOT gate. The NAND gate turns off in the presence of specific tumor markers and tissue markers, thus its behavior is targeted to specific tissue and tumor sites in the human body. When the NAND gate is shut off, the downstream NOT gate is turned on, thus the coupled effect of the two modules will activate the apoptotic (self-destruct) protein hBAX. Thus, the entire system behaves as a targeted tumor-killer.
A representation of this system in SBOL can be programmatically constructed. Starting at the highest level of abstraction, a tumor-killer circuit will be constructed from the NAND and NOT gates. At this stage the modules are black boxes without any internal specifications.
In order to connect these black boxes, their inputs and outputs must be defined. The following process defines an interface for the modules, while their internal workings still remain abstract. First, configure the NAND gate:
Next configure the NOT gate. Note that LacI's ComponentDefinition was already defined above.
Finally, these two modules can be connected with a metaphorical, yet very satisfying, "click"."
The preceding example demonstrated how black-box modules may be connected in terms of their inputs and outputs. In order to enable computer-aided engineering (model-based design and simulation of biochemical systems), libSBOL also supports detailed description of biochemical interactions and pathways. The SBOL standard was designed to be closely interoperable with SBML (Systems Biology Markup Language) so that information about structural components can be associated with mathematical descriptions of their behavior. Let's now look at defining modules at a deeper level of scrutiny.
Above is a representation of a template module for CRISPR gene-editing that consists of three biochemical interactions. As described previously (see template_design), template designs may be re-used in many different contexts. For example, a synthetic biologist may want to substitute many different sequences for a guideRNA depending on the actual downstream target. In this example, each component has a specifed functional role while detailed information about its sequence is to be filled in at a later time. Starting at a high level we define the template module and its three member interactions using Systems Biology Ontology (SBO) terms. In the first interaction, Cas9 protein and a guideRNA form a complex. This activated complex targets the promoter cognate to the guideRNA and disables gene expression. The third interaction is expression of the target gene which is normally on by default, but switched off in the presence of activated complex.
Now let's break the Interactions down into their member species, starting with the reaction for complex formation. Note the use of SBO terms to define the role of each species in the reaction.
The components which participate in an interaction must be assigned:
Similarly, the repression and production interactions are defined:
A complete design can be realized from a template design by overriding components. In the CRISPR template above, the lacI-gRNA and LacI components override the generic guideRNA and gene product. The dashed lines here have a different meaning than they did in the tumor-killer example. There the dashed lines indicate that a module's output component is identical to another module's input component. Here the dashed lines indicate that a template component is being substituted with the LacI protein in this specific design variant. Thus it is possible to make many possible variant designs from a template design. To create a variant from a template design, nest the template module inside the variant module. Then mask the inner module's component with the outer module's component.