Circuit design
This page explains how to create a genetic circuit with Synergetica.
Block types¶
Promoter¶
A promoter controls the timing and strength of transcription for the downstream DNA sequence. Specific proteins can bind to it to either activate or repress transcription.
Protein¶
A protein is a functional molecule produced within a cell. In living organisms, proteins are essential components in various biological processes.
Terminator¶
A terminator marks the end of transcription and also plays a role in regulating the degradation rate of the resulting transcript.
Info
When multiple identical terminators are present, homologous recombination may occur, potentially altering the DNA sequence. To prevent this, Synergetica offers multiple terminator variants.
Building circuits¶
Method 1: Node-based design¶
Design a circuit using the graphical interface.
Placing a block¶
Drag any block from the block placement area at the top of the window and drop it onto the main area.
Deleting a block¶
There are two ways to delete a block.
- Select the block and press the Backspace key.
- Click the "" button and select "Delete".
Connecting blocks¶
When you drag a new block near an existing one, they will automatically connect.
Note
In Synergetica, this connected unit of blocks is called a chain.
Disconnecting blocks¶
When you hover the mouse cursor over the edge between blocks, an button will appear. Clicking this button disconnects the blocks.
Alternatively, you can also drag the block away from the chain to disconnect it.
Method 2: Code-based design¶
Circuits can also be designed using the Synergetica DSL, a custom domain-specific language developed exclusively for genetic circuit design.
Basic structure of the Synergetica DSL¶
- The code is written in YAML format.
- It is defined as an array of objects, each with a single key:
chain
. - Each
chain
is an array of elements, where each element contains:type
: the block type (Promoter
,Protein
, orTerminator
)name
: the part name
- chain:
- type: Promoter
name: PamtR
- type: Protein
name: BM3R1
- type: Terminator
name: L3S3P31
- chain:
- type: Promoter
name: Pbm3r1
- type: Protein
name: AmtR
- type: Terminator
name: L3S3P11
Tip
Because the node-based editor and the code-based editor are always synchronized, you can switch between them at any time.
Info
When the YAML-based circuit is loaded into the node-based editor, each chain is arranged vertically, and the blocks in each chain are arranged from left to right.
Importing and exporting YAML files¶
To import or export a YAML file, click the and buttons located in the top bar of the code palette.
Tip
You can save and share your circuit using a YAML file.
Completing valid circuits¶
Circuits are automatically validated for biological correctness. The validation results are displayed at the bottom of the code palette, and an icon indicating the result is shown in the node-based editor.
Valid
Invalid
Warning
If the designed circuit is invalid, you cannot run a simulation.
Here are the basic rules for a valid circuit.
- Chain rule: A chain must consist of one or more promoters, followed by one or more proteins, and end with exactly one terminator.
- Block rule: The part name must be included in the list of parts for each block type.
Valid circuit examples
-
Minimum valid circuit
-
Multiple proteins are allowed
-
Multiple promoters are allowed
Invalid circuit examples
-
A chain must start with promoter(s)
-
Protein(s) must follow promoter(s) before a terminator
-
Empty blocks are not allowed
-
Protein(s) must follow promoter(s) before a terminator