Cello
Over the course of this summer, we developed a suite of tools intended to help users design their own biological circuits for their target systems. Our journey into the realm of bioinformatics began when we discovered Cello. Published on March 31, 2016 in Nature, Cello takes user inputs in the form of a circuit described using Verilog code, and a user constraint file (UCF) that contains biological data pertaining to the system chosen by the user and a list of gates that the user can put in that system. By combining these two inputs with a series of algorithms, the program returns one or more plasmids that, once put in a host cell, will recreate the circuit the user has defined. By choosing the input promoters, the user can decide what molecules or transcription factors to use as inputs to the logical circuit. This circuit can allow the cell to make novel decisions and calculations based on its environment, metabolism, and health.
This tool is immensely powerful, as well as accurate. In its original round of testing, the authors found that 71% of the tested circuits acted as expected on the first try. The program has certain limitations, however. Cello is modular, which makes it adaptable to the user’s requirements. Currently, the only publically available UCFs are defined in E. Coli, meaning that it is not immediately usable in other systems. This brings up an even more important point: currently, UCFs are treated as completely local files, meaning that for one researcher to use information obtained by another, that information has to be passed directly from one to the other. This is inefficient, of course, since it is likely that at any given point a user could obtain or build more gates than they are actually aware of. Finally, using Cello requires a basic understanding of how Verilog code works, meaning that there is a slight learning code before you can start to use the program.
We also felt that we could make Cello even more powerful by introducing new biochemistries to it. It is currently only built to work with transcription factors and CRISPRi, but the future in gate-building technology may very well lie with dCas9-based gates. This is because dCas9 allows for the creation of “programmable” transcription factors. Finding actual transcription factors that work well in the host, but also don’t interfere with its genome is a real challenge. With dCas9, guide RNAs can be used to guide the dCas9 to specific 23-nucleotide long targets. In addition, transcriptional effectors can be attached to the dCas9 directly, or attached to the RNA directly using an architecture first described by Zalatan et al. (2015). See our Biological Project Page for more details! Using this structure, we can have multiple effectors in the same synthetic system, with varying degrees of repression and activation, effectively fine-tuning the transcriptional response to each promoter. This system is made even more powerful by the discovery of “programmable” promoters, which have certain known internal regions in which the code can be changed without affecting the strength of the promoter. By modifying the code in these regions, it is possible to give each promoter its own barcode, which can be targeted by a unique guide RNA.
Our modifications
Cello is made to function with the UCF as its only source of external data regarding the gate library available. We therefore also modified the program to include new external inputs. In our version, the collection of gates taken from the UCF and from the database are combined into a single collection within the program. Since multiple dCas9-based gates could depend on common features – the dCas9 protein, activators, and repressors, for example – these “associated parts” are also taken into account by the program and built into a separate plasmid.
Just as our databases our user-friendly, we also created a refined user interface for circuit creation in Cello. This user interface relies on an intuitive drag-and-drop system, eliminating the need to understand structural code in Verilog. For those circuits best described using case statements, the original input forms still exist.