Cello is a free web-based application for the designing of genetic logic gates using a high-level language known as Verilog. Verilog is a programming language for designing logic gates. A genetic logic gate is just like logic gates used in electronics—however, the gate is implemented with genes, and is “run” within bacteria or any given target cell. This makes it possible to program a cell the way you would program a computer. The Verilog specification is then used to generate a genetic sequence known as a plasmid, which can be inserted into bacteria that will then perform the functions defined in Verilog. The process of generating the genetic sequence from the circuit (according to the readme specification) is done “using experimentally characterized genetic gates. In assignment, a predicted circuit score guides a breadth-first search, or a Monte Carlo simulated annealing search.” source
Note that the default target organism is E. Coli. (This can be changed by specifying another organism, but the process will not be covered in this post.) Cello can also be run locally by following the instructions in the readme.
Use Case
A simple use case for Cello would be designing bacteria that produces green fluorescence (green light) when it detects two chemicals. In this case, the presence of the two chemicals would serve as the input with the green fluorescence as the output. The logic will first be programmed in Verilog. The output genetic sequence will then be inserted into the bacteria to perform the said function.
Generating a Genetic Circuit
To create a genetic logic circuit, the user needs to sign up for an account on the website. The user can then specify the genetic sequences to serve as inputs (promoters) and outputs (bioindicators). Cello provides some default genetic sequences as well, plus the option of adding your own; however, only the default genetic sequences will be used in this example.
The desired genetic sequences are selected from the dropdowns in the sections labelled inputs and outputs. The pTac and pBAD sequences were chosen as inputs, and NowGFP, which is used to produce green fluorescence, was chosen as the output. The two inputs and the output were then used to produce an AND logic, such that green fluorescence is produced when pTac and pBAD are activated. Selecting the full demo from the dropdown above the code area produces some code that performs the AND logic. Note that the input and output variables map onto the selected sequences by their index—that is, pTac and pBAD map onto in1 and in2 respectively and out1 maps onto NowGFP.
The Verilog code generated by selecting the full demo from the dropdown above the code area can be found below.
module A(output out1, input in1, in2); always@(in1,in2) begin case({in1,in2}) 2'b00: {out1} = 1'b0; 2'b01: {out1} = 1'b0; 2'b10: {out1} = 1'b0; 2'b11: {out1} = 1'b1; endcase end endmodule
For those not familiar with Verilog, the following code:
2'b10: {out1} = 1'b0;
simply indicates that the output should be off (1’b0), when input 1 is on and input 2 is off (2’b10). You can explore other ways of specifying your logic gates by selecting one of the options in the dropdown above the code section.
After specifying the logic you want your genetic sequence to perform, you can generate your genetic sequence by giving your design a name and clicking the Run button.
Conclusion
If all goes well, a zip file containing the genetic sequence (plasmid) as well as the expression levels of the selected genes and a host of other useful information can be downloaded by clicking the Download Zip button. This information can also be viewed in the web interface by selecting one of the options in the top left. Your genetic sequence is now ready to be visualized with your desired software and synthesized.