Difference between revisions of "Team:EPFL/Software CELLO"

Line 2: Line 2:
 
<html>
 
<html>
  
        <div class="simple-page centered-page">
+
      <div class="simple-page">
 
             <section class="">
 
             <section class="">
 
                 <div class="container">
 
                 <div class="container">
 
                     <div class="col-md-10 col-md-offset-1 text-center">
 
                     <div class="col-md-10 col-md-offset-1 text-center">
                         <h2 class="lead animate-box">intelligene.plus</h2>
+
                         <h2 class="lead animate-box">Cello</h2>
                        <p class="sub-lead text-center animate-box">
+
                            A Handy Database for Genetic Gates, Parts, and scRNAs
+
                        </p>
+
 
                         <div class="spacer h20"></div>
 
                         <div class="spacer h20"></div>
 
                         <hr class="animate-box"/>
 
                         <hr class="animate-box"/>
 
                         <div class="spacer h20"></div>
 
                         <div class="spacer h20"></div>
                         <p class="sub-lead justified animate-box">
+
                         <p class="sub-lead text-justify animate-box">
                             Although research around the creation of dCas9-based gate designs is exploding,  
+
                             Over the course of this summer, we developed a suite of tools intended to help users
                             finding these new gate structures can be surprisingly difficult, as they are
+
                             design their own biological circuits for their target systems. Our journey into the
                             often scurried away in papers or projects for competitions like iGEM. To combat
+
                            realm of bioinformatics began when we discovered Cello. Published on April 1<sup>st</sup>, 2016
                            this issue, we decided to create a database of dCas9-based logic gate designs. In
+
                             in <a href="http://science.sciencemag.org/content/352/6281/aac7341">
                             this database, the logic gates are described in terms of their parts - such as
+
                                Science</a>, Cello takes user inputs in the form of a circuit described using
                             promoters, terminators, and ribozymes - instead of just simple DNA sequences.  
+
                                <a href="https://en.wikipedia.org/wiki/Verilog">Verilog</a>
                             Parts can be easily added to the database through beautiful forms. intelligene.plus
+
                             code, and a user constraint file (UCF) that contains biological data pertaining to the  
                             features intuitive tools to allow users to create new gate designs and attribute
+
                            system chosen by the user and a list of gates that the user can put in that system. By
                             different functions to different areas of parts such as promoters, allowing complex
+
                            combining these two inputs with a series of algorithms, the program returns one or more
                            interactions within gates.
+
                             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.
 +
 
 
                         </p>
 
                         </p>
                         <br>
+
                         <div class="spacer h50"></div>
                         <p class="sub-lead justified animate-box">
+
                         <p class="animate-box">
                             Just as Cello seeks to democratize circuit design, intelligene.plus seeks to
+
                             <img src="https://static.igem.org/mediawiki/2016/d/d7/Cello_simple.png" />
                            democratize gate design. In order to allow programs like Cello to pick up these
+
                            new gate designs, APIs are available that allow these programs to retrieve data
+
                            from our databases.  
+
 
                         </p>
 
                         </p>
                    </div>
+
                         <div class="spacer h50"></div>
                </div>
+
                         <p class="sub-lead text-justify">
            </section>
+
                            Cello is immensely powerful, as well as accurate. In its original round of testing,
        </div>
+
                            the authors found that 75% of the 60 circuits texted acted exactly as expected for all
        <div class="simple-page">
+
                            input combinations. Cello is modular, which makes it adaptable to user requirements.
            <section class="">
+
                            These requirements are passed to it using a User Constraint File, which also contains
                <div class="container animate-box">
+
                            information specific to the biological system that is being used, such as gates that are
                    <div class="col-md-10 col-md-offset-1 text-center">
+
                             available to use.  
                        <h2 class="text-uppercase">Design</h2>
+
                         <div class="spacer h20"></div>
+
                         <hr class="animate-box"/>
+
                        <div class="spacer h20"></div>
+
                    </div>
+
                    <div class="spacer h30"></div>
+
                    <div class="col-md-8 col-md-push-2">
+
                        <p>
+
                             <img src="img/overoverview_intelligene.plus.png" alt="" />
+
 
                         </p>
 
                         </p>
                    </div>
+
                        <br>
                    <div class="spacer h30"></div>
+
                       
                    <div class="col-md-10 col-md-offset-1 text-center">
+
                        <p class="sub-lead text-justify">
                         <p class="sub-lead justified animate-box">
+
                        Cello does not work with all biochemistries, unfortunately. Although it works well with CRISPRi,
                             intelligene.plus is made to communicate directly with <a href="https://2016.igem.org/Team:EPFL/software_cello.html">Cello</a>,
+
                        it does not accept newer dCas9-based gate structures and technologies. We felt that we could make
                            a program which automates synthetic genetic network design. As such, when a request is made to
+
                        Cello even more powerful by introducing these new biochemistries, and scRNA specifically (link
                            it through its API, it returns an appropriate list of gates, based on the required number of gates
+
                        Zalatan). This is because dCas9 allows for the creation of “programmable” transcription factors.
                            for the circuit and user specifications, in the form of a JSON file. This JSON file contains all
+
                        Finding actual transcription factors that work well in the host, but also don’t interfere with its
                            of the necessary information for Cello to operate correctly, including: the construction of each  
+
                        genome is a real challenge. With dCas9, guide RNAs can be used to guide the dCas9 to specific
                            gate in terms of its parts, the sequences of each part, the response functions of each gate, and
+
                        23-nucleotide long targets. In addition, transcriptional effectors can be attached to the dCas9
                            a list of “associated parts” which are common to multiple gates. To understand how intelligene.plus
+
                        directly, or attached to the RNA directly using an architecture first described by
                            is able to return this data file, it is important to understand the structure of data in the  
+
                         <a href="https://www.ncbi.nlm.nih.gov/pubmed/25533786">Zalatan et al.
                            website. Although we refer to intelligene.plus as a single MySQL database, it is really more
+
                             (2015)</a>. See our <a href="https://2016.igem.org/Team:EPFL/Description">Project Description</a> for more details! Using this structure, we can have
                            important to think of it as a collection of databases. Various types of parts are divided amongst
+
                        multiple effectors in the same synthetic system, with varying degrees of repression and activation,  
                            these databases. When it is time to retrieve parts from the databases, the gate templates are used
+
                        effectively fine-tuning the transcriptional response to each promoter. This system is made even more
                            to rummage through the databases of each part type and fetch the correct number of each type of
+
                        powerful by the discovery of “programmable” promoters, which have certain known internal regions in
                            part to build the necessary gates. Although at the time of wikifreeze, we have not yet integrated
+
                        which the code can be changed without affecting the strength of the promoter. By modifying the code
                            methods into the database to create response functions for the generated gates, you can find a
+
                        in these regions, it is possible to give each promoter its own ‘barcode’, which can be targeted by
                            model that we have elucidated to do just this <a href="https://2016.igem.org/Team:EPFL/model.html">here</a>. Time permitting,
+
                        a unique guide RNA. <a href="https://2016.igem.org/Team:EPFL/Deskgen">Click here to see the barcodes we designed.</a></p>
                            we will integrate this functionality after wikifreeze.
+
                        <br>
                        </p>
+
                        <p class="sub-lead text-justify">
                    </div>
+
                            The current organization of information in the program could also be improved,
                    <div class="spacer h30"></div>
+
                             to the benefit of the program’s usability. The current implementation of the UCF
                    <div class="col-md-8 col-md-push-2">
+
                            has certain limitation. In particular, the only publically available UCFs are
                        <p>
+
                            defined in <em>E. coli</em>, meaning that it is not immediately usable in other systems.
                             <img src="img/table_gates.png" alt="" />
+
                            This brings up an even more important point: 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
 +
                            since it is likely that at any given point more gate structures would have been
 +
                            invented than someone would be aware of, since those structures might be locked away
 +
                            in another person’s local file. Finally, using Cello requires a basic understanding
 +
                            of how Verilog code works, meaning that understanding how to use a coding language
 +
                            is necessary before you can start to use the program.
 
                         </p>
 
                         </p>
 
                     </div>
 
                     </div>
Line 83: Line 79:
 
         <div class="simple-page">
 
         <div class="simple-page">
 
             <section class="">
 
             <section class="">
                 <div class="container animate-box">
+
                 <div class="container">
 
                     <div class="col-md-10 col-md-offset-1 text-center">
 
                     <div class="col-md-10 col-md-offset-1 text-center">
                         <h2 class="text-uppercase">Features</h2>
+
                         <h2 class="lead">Our modifications</h2>
 
                         <div class="spacer h20"></div>
 
                         <div class="spacer h20"></div>
                         <hr class="animate-box"/>
+
                         <hr />
 
                         <div class="spacer h20"></div>
 
                         <div class="spacer h20"></div>
                    </div>
+
                         <h3>Graphical User Interface</h3>
                    <div class="col-md-10 col-md-offset-1">
+
                         <h3>User interface</h3>
+
 
                         <p class="sub-lead text-justify">
 
                         <p class="sub-lead text-justify">
                             In line with our goal of making dCas9-based gate technology as easy as possible to  
+
                             The first modification we made was to eliminate the need to understand how to  
                            use, our user interface is remarkably simple. Buttons on the side-bar allow you to  
+
                             code in Verilog to be able to use Cello. Verilog is not a difficult programming
                             create standard parts of different types. Once these parts are on the workbench,
+
                             language, but learning any programming language can be challenging for beginners,
                             they can be dragged-and-dropped so that the user can rearrange them as they wish.  
+
                            and we wanted to open up Cello to people who had no other programming experience,
                             The possible relationships between parts include their genetic order and transcriptional
+
                            and eliminate the initial learning curve due to this technological barrier. The
                             activation or repression. These relationships can be defined by the users through
+
                             user interface we developed is based on an intuitive drag-and-drop interface. This
                             dragging-and-dropping links between the parts.  
+
                             interface is based on a template by <a href="https://github.com/edwardball/academo.org">
 +
                            edwardball</a>, and uses the jsPlump library. Some users may feel more at home
 +
                             using Verilog code, so the original input forms are still available on their original page.  
 
                         </p>
 
                         </p>
 
                     </div>
 
                     </div>
Line 106: Line 102:
 
         </div>
 
         </div>
 
         <div class="centered-page">
 
         <div class="centered-page">
             <section class="purple">
+
             <section class="sapphire">
 
                 <div class="container">
 
                 <div class="container">
 
                     <div class="col-md-12">
 
                     <div class="col-md-12">
 
                         <div class="spacer h40"></div>
 
                         <div class="spacer h40"></div>
 
                         <!--NTH: qualità -->
 
                         <!--NTH: qualità -->
                         <img class="video" src="img/videoGIF/intelligene_plus_ui.gif" alt="">
+
                         <img class="video" src="https://static.igem.org/mediawiki/2016/4/4a/Cello_designer_demo_and.gif" alt="">
 
                         <div class="spacer h40"></div>
 
                         <div class="spacer h40"></div>
 
                     </div>
 
                     </div>
Line 117: Line 113:
 
             </section>
 
             </section>
 
         </div>
 
         </div>
 +
        <div class="spacer h20"></div>
  
 
         <div class="simple-page">
 
         <div class="simple-page">
 
             <section class="">
 
             <section class="">
                 <div class="container animate-box">
+
                 <div class="container">
                     <div class="col-md-10 col-md-offset-1">
+
                     <div class="col-md-10 col-md-offset-1 text-center">
                         <h3>Part Forms</h3>
+
                         <h3>Accepting External Inputs</h3>
 
                         <p class="sub-lead text-justify">
 
                         <p class="sub-lead text-justify">
                            When selecting the parts that have to be used for each gate
+
                        In order to add the new biochemistries to Cello, we first had to delve into its
                            two options are given: users can choose parts that have already
+
                        inner workings. A large part of our time was spent trying to understand what each
                            been submitted to the database, or they may choose to submit new
+
                        part of the program did, and how it interacted with its libraries. It was during
                            parts. In the case of submitting new parts, the relevant entry
+
                        this point that we identified two bugs in the program which we reported to the  
                            information is prompted by neat forms. This information generally
+
                        development team of Cello, through Prashant Vaidyanathan at Boston University.  
                            includes, but is not limited, to the name and sequence of the part.  
+
                        This led to an updated version of the NetSynth library being made to deal with
 +
                        gates that were not NOT, NOR, or AND.  
 
                         </p>
 
                         </p>
                    </div>
+
                         <br>
                </div>
+
            </section>
+
        </div>
+
        <div class="centered-page">
+
            <section class="blue">
+
                <div class="container">
+
                    <div class="col-md-12">
+
                         <div class="spacer h40"></div>
+
                        <!--NTH: qualità -->
+
                        <img class="video" src="img/videoGIF/intelligene_plus_select_create.gif" alt="">
+
                        <div class="spacer h40"></div>
+
                    </div>
+
                </div>
+
            </section>
+
        </div>
+
 
+
        <div class="simple-page">
+
            <section class="">
+
                <div class="container animate-box">
+
                    <div class="col-md-10 col-md-offset-1">
+
                        <h3>Sequence Highlighter</h3>
+
 
                         <p class="sub-lead text-justify">
 
                         <p class="sub-lead text-justify">
                             In the case of promoters, multiple functional areas may exist. For example,
+
                             We felt that the best way to integrate the aforementioned biochemistries and  
                            certain regions of the promoter may be known to be particularly effective
+
                             to also make the program more open-sourced would be to move the storage of  
                            targets for repression, and others for activation. In addition, some areas
+
                            information about dCas9-based gates to the web. Since we did not find an extant database
                             may be known to be able to modified, without changing the function of the  
+
                             for parts with this biochemistry that returns data that is usable by Cello,
                             promoter. We have a developed a fun tool with a clean design which helps
+
                             we decided to make an open and free database for these parts.
                             users define these regions in new promoters. By dragging the cursor over
+
                             <a href="https://2016.igem.org/Team:EPFL/software_database">You can find out more about
                             certain areas of the promoter, these areas can be defined as activating,
+
                                our databases here!</a> Cello had to be modified, however, to accept inputs from
                            repressing, or variable regions.</p>
+
                            this third source. As the UCF is written in <a href="http://www.json.org/">JSON</a> (JavaScript Object Notation),
                    </div>
+
                            we decided that we would also pass information to Cello through JSON files.
                </div>
+
                            These files also allow dCas9-based gates to work correctly in the target system, by appreciating
            </section>
+
                            the particularities specific to dCas9-based gates. For example, all these gates would require
        </div>
+
                            dCas9 to be expressed in the host cells to function, and many gates would have overlapping effector
        <div class="centered-page">
+
                            molecules. Recopying these "associated sequences" multiple times into the plasmids would constitute a massive waste of
            <section class="black">
+
                            space, so these sequences are copied <em>just once</em> into a separate plasmid. 
                <div class="container">
+
                         </p>
                    <div class="col-md-12">
+
                         <figure>
                        <div class="spacer h40"></div>
+
                            <img id="associated-plasmid-gif" src="https://static.igem.org/mediawiki/2016/a/a0/Cello_associated_plasmid_output.gif">  
                         <!--NTH: qualità -->
+
                            <figcaption id='associated-plasmid-caption'>The "associated sequences" are visible in Cello's output as part of a separate plasmid.</figcaption>
                         <img class="video" src="img/videoGIF/intelligene_plus_sequence_highlighter.gif" alt="">
+
                           
                        <div class="spacer h40"></div>
+
                         </figure>
                    </div>
+
                </div>
+
            </section>
+
        </div>
+
 
+
        <div class="simple-page">
+
            <section class="">
+
                <div class="container animate-box">
+
                    <div class="col-md-10 col-md-offset-1">
+
                         <h3>Gate designer: Saving Elements</h3>
+
 
                         <p class="sub-lead text-justify">
 
                         <p class="sub-lead text-justify">
                             Once parts are submitted through the user interface, they are immediately uploaded
+
                             To know how to use these new gates, Cello requires their response functions.
                             to the database. After this point they can be suggested to users when they search
+
                            Since many of these gates would be created at the moment they are needed,
                             for the part again.
+
                             they might not have experimentally confirmed response functions, but it would
 +
                            still be important to know how they react. We worked on a model to help
 +
                             explain their behavior, which you can find <a href="https://2016.igem.org/Team:EPFL/Model">here</a>.
 
                         </p>
 
                         </p>
                    </div>
+
                         <br>
                </div>
+
            </section>
+
        </div>
+
        <div class="centered-page">
+
            <section class="green">
+
                <div class="container">
+
                    <div class="col-md-12">
+
                         <div class="spacer h40"></div>
+
                        <!--NTH: qualità -->
+
                        <img class="video" src="img/videoGIF/intelligene_plus_saving.gif" alt="">
+
                        <div class="spacer h40"></div>
+
                    </div>
+
                </div>
+
            </section>
+
        </div>
+
 
+
        <div class="simple-page">
+
            <section class="">
+
                <div class="container animate-box">
+
                    <div class="col-md-10 col-md-offset-1">
+
                        <h3>Gate designer: APIs</h3>
+
 
                         <p class="sub-lead text-justify">
 
                         <p class="sub-lead text-justify">
                             intelligene.plus comes with handy APIs, which can be used to call the database from an external source, such as an application like Cello.
+
                             Cello serves to make the design of synthetic biological genetic circuits easier than ever; our
                        </p>
+
                            modifications to Cello continue in the same vein, by making the software more usable, and the  
                        <pre class="">http://intelligene.plus/<b class="text-success">api</b>/<b class="text-info">apidef</b>?<b>t</b>=typeofdata&<b>query</b>=query&<b>organism</b>=organismName&<b>strain</b>=strainName&<b>format</b>=format</pre>
+
                             information it uses more transferable. Although the impementation of these new features is not
                        <hr />
+
                             perfect yet – the integration of new genetic material from json files is subject to bugs, and  
                        <h6>Example:</h6>
+
                             Cello is not yet connected with intelligene.plus we are working diligently past wiki freeze
                        <pre class="">http://intelligene.plus/<b class="text-success">api</b>/<b class="text-info">db</b>?<b>t</b>=pem&<b>query</b>=m&<b>organism</b>=yeast&<b>strain</b>=w303&<b>format</b>=json</pre>
+
                             to give the synthetic biology community the best tools possible!
                        <pre>
+
{"status":true,"response":[
+
    {
+
        "id":"1",
+
        "name":"PCP-MxiI",
+
        "sequence":"atgtccaaaaccatcgttctttcggtcggcgaggctactcgcactctgactgagatccagtccaccgcagaccgtcagatcttcgaagagaaggtcgggcctctggtgggtcggctgcgcctcacggcttcgctccgtcaaaacggagccaagaccgcgtatcgcgtcaacctaaaactggatcaggcggacgtcgttgattccggacttccgaaagtgcgctacactcaggtatggtcgcacgacgtgacaatcgttgcgaatagcaccgaggcctcgcgcaaatcgttgtacgatttgaccaagtccctcgtcgcgacctcgcaggtcgaagatcttgtcgtcaaccttgtgccgctgggccgtGGCTCCATGGAACGTGTGAGAATGATTAATGTGCAAAGGCTGTTAGAAGCCGCAGAGTTTTTAGAAAGAAGAGAAAGAGAATGCGAACACGGGTATGCCAGTTCTTTCCCTAGCATGCCCTCTCCCAGA",
+
        "description":"Linear DNA encoding for the fused protein PCP-MxiI. PCP is an RNA binding protein for the sequence PP7, MxiI: gene encoding for MAX-interacting protein I, a mammalian transcriptional repressor domain that is reported to interact with the histone deacetylase Sin3 homolog in yeast."
+
    },
+
    {
+
        "id":"2",
+
        "name":"activator PEM",
+
        "sequence":"CGATCGATTGCTAGCTGAGCATCAGCTAGCAC",
+
        "description":"test dev"
+
    },
+
    {
+
        "id":"3",
+
        "name":"repressor PEM",
+
        "sequence":"CGATGCTATGCGGCGGCGCGCATCGATCAGCATCG",
+
        "description":"test dev"
+
    },
+
    {
+
        "id":"4",
+
        "name":"MCP-VP64",
+
        "sequence":"CGATGCTATGCGGCGGCGCGCATCGATCAGCATCGCGATGCTATGCGGCGGCGCGCATCGATCAGCATCGCGATGCTATGCGGCGGCGCGCATCGATCAGCATCGCGATGCTATGCGGCGGCGCGCATCGATCAGCATCGCGATGCTATGCGGCGGCGCGCATCGATCAGCATCGCGATGCTATGCGGCGGCGCGCATCGATCAGCATCG",
+
        "description":"linear DNA encoding for the RNA binding protein MCP fused to the transcriptional activation domain VP64. VP64 is a transcriptional activator composed of four tandem copies of VP16 connected with glycine-serine linkers. When fused to another protein domain that can bind near the promoter of a gene, VP64 acts as a strong transcriptional activator"
+
    }
+
]}
+
                        </pre>
+
                    </div>
+
                </div>
+
            </section>
+
        </div>
+
 
+
        <div class="simple-page">
+
            <section class="">
+
                <div class="container animate-box">
+
                    <div class="col-md-10 col-md-offset-1 text-center">
+
                        <h2 class="text-uppercase">Technical specifications</h2>
+
                        <div class="spacer h20"></div>
+
                        <hr class="animate-box"/>
+
                        <div class="spacer h20"></div>
+
                    </div>
+
                    <div class="col-md-10 col-md-offset-1">
+
                        <h3>System requirements</h3>
+
                        <p class="">
+
                             The software can run on almost any web server featuring PHP & MySQL.
+
                        </p>
+
                        <p class="">
+
                            More specifically, it runs on the LAMP platform. This means your web server (or web hosting account) should be featured with the following software: Linux + Apache + MySQL + PHP.
+
                        </p>
+
                        <p class="">
+
                             For all practical purposes, it will run on the vast majority of current web hosting offers.
+
                        </p>
+
                        <h5>Software Requirements</h5>
+
 
+
                        <p>Your web server / web hosting account should have the following software versions:</p>
+
 
+
                        <ul>
+
                            <li> <strong>Linux</strong>: any modern distribution will work. </li>
+
                            <ul>
+
                                <li> On shared hosting accounts, you should not even need to worry about this. </li>
+
                                <li> For dedicated servers, we like to use <a target="_blank" href="https://www.centos.org/">CentOS</a> but RedHat, Debian and others will work just as well. </li>
+
                                <li> Note: it is possible to run the software on <strong>Windows</strong>, especially for development. This is not an officially supported platform though and we do not recommend it for production servers, especially regarding performance &amp; security.</li>
+
                                <li> Note: running on <strong>Mac OS X</strong> works fine, especially with a package like MAMP.</li>
+
                             </ul>
+
                            <li> <strong>Apache</strong>: version 2.0 or above. </li>
+
                            <ul>
+
                                <li> Note: it is possible to run intelligene.plus on <a target="_blank" href="http://www.lighttpd.net/">Lighttpd</a> or <a href="http://nginx.org/">NginX</a> but these are not officially supported configurations and will likely require manual configuration as these servers will not read our <a href="http://intelligene.plus/info/htaccess">.htaccess File</a>.</li>
+
                            </ul>
+
                            <li> <strong>MySQL</strong>: version 5.0.3 or above. </li>
+
                            <ul>
+
                                <li> InnoDB MUST be enabled (All decent web hosts offer InnoDB)</li>
+
                                <li> Note: At this point we do not believe that <a target="_blank" href="https://en.wikipedia.org/wiki/Database_abstraction_layer">database abstraction</a> is a practical proposition.</li>
+
                             </ul>
+
                            <li> <strong>PHP</strong>: version 5.2 or above. No additional requirements.</li>
+
                        </ul>
+
                    </div>
+
                    <div class="col-md-10 col-md-offset-1">
+
                        <hr/>
+
                        <h3>Installation</h3>
+
                        <p class="">
+
                            Just download the code from <a href="http://intelligene.plus/info/code">here</a> and put it on a server.
+
                            Dump the database (<a href="http://intelligene.plus/info/dumpdatabase">link</a>) and then load the index.php.
+
                            <br/><br/>
+
                            <kbd>Note that intelligene.plus can be used with no downloads/installations required at <a href="http://intelligeen.plus">www.intelligene.plus</a>.</kbd>
+
 
                         </p>
 
                         </p>
 
                     </div>
 
                     </div>

Revision as of 00:49, 20 October 2016

iGEM EPFL 2016

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 April 1st, 2016 in Science, 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.

Cello is immensely powerful, as well as accurate. In its original round of testing, the authors found that 75% of the 60 circuits texted acted exactly as expected for all input combinations. Cello is modular, which makes it adaptable to user requirements. These requirements are passed to it using a User Constraint File, which also contains information specific to the biological system that is being used, such as gates that are available to use.


Cello does not work with all biochemistries, unfortunately. Although it works well with CRISPRi, it does not accept newer dCas9-based gate structures and technologies. We felt that we could make Cello even more powerful by introducing these new biochemistries, and scRNA specifically (link Zalatan). 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 Project Description 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. Click here to see the barcodes we designed.


The current organization of information in the program could also be improved, to the benefit of the program’s usability. The current implementation of the UCF has certain limitation. In particular, 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: 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 since it is likely that at any given point more gate structures would have been invented than someone would be aware of, since those structures might be locked away in another person’s local file. Finally, using Cello requires a basic understanding of how Verilog code works, meaning that understanding how to use a coding language is necessary before you can start to use the program.

Our modifications


Graphical User Interface

The first modification we made was to eliminate the need to understand how to code in Verilog to be able to use Cello. Verilog is not a difficult programming language, but learning any programming language can be challenging for beginners, and we wanted to open up Cello to people who had no other programming experience, and eliminate the initial learning curve due to this technological barrier. The user interface we developed is based on an intuitive drag-and-drop interface. This interface is based on a template by edwardball, and uses the jsPlump library. Some users may feel more at home using Verilog code, so the original input forms are still available on their original page.

Accepting External Inputs

In order to add the new biochemistries to Cello, we first had to delve into its inner workings. A large part of our time was spent trying to understand what each part of the program did, and how it interacted with its libraries. It was during this point that we identified two bugs in the program which we reported to the development team of Cello, through Prashant Vaidyanathan at Boston University. This led to an updated version of the NetSynth library being made to deal with gates that were not NOT, NOR, or AND.


We felt that the best way to integrate the aforementioned biochemistries and to also make the program more open-sourced would be to move the storage of information about dCas9-based gates to the web. Since we did not find an extant database for parts with this biochemistry that returns data that is usable by Cello, we decided to make an open and free database for these parts. You can find out more about our databases here! Cello had to be modified, however, to accept inputs from this third source. As the UCF is written in JSON (JavaScript Object Notation), we decided that we would also pass information to Cello through JSON files. These files also allow dCas9-based gates to work correctly in the target system, by appreciating the particularities specific to dCas9-based gates. For example, all these gates would require dCas9 to be expressed in the host cells to function, and many gates would have overlapping effector molecules. Recopying these "associated sequences" multiple times into the plasmids would constitute a massive waste of space, so these sequences are copied just once into a separate plasmid.

The "associated sequences" are visible in Cello's output as part of a separate plasmid.

To know how to use these new gates, Cello requires their response functions. Since many of these gates would be created at the moment they are needed, they might not have experimentally confirmed response functions, but it would still be important to know how they react. We worked on a model to help explain their behavior, which you can find here.


Cello serves to make the design of synthetic biological genetic circuits easier than ever; our modifications to Cello continue in the same vein, by making the software more usable, and the information it uses more transferable. Although the impementation of these new features is not perfect yet – the integration of new genetic material from json files is subject to bugs, and Cello is not yet connected with intelligene.plus – we are working diligently past wiki freeze to give the synthetic biology community the best tools possible!