Team:UCSD Software/Project
From 2014.igem.org
(Difference between revisions)
(163 intermediate revisions not shown) | |||
Line 11: | Line 11: | ||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> | <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> | ||
<Style> | <Style> | ||
+ | .stuck { | ||
+ | position: fixed; | ||
+ | } | ||
+ | |||
+ | .jumbotron{ | ||
+ | margin-top: -20px; | ||
+ | } | ||
+ | |||
+ | ul.a { | ||
+ | list-style-type: disc; | ||
+ | } | ||
+ | ul.b { | ||
+ | list-style-type: circle; | ||
+ | } | ||
+ | |||
+ | |||
+ | /* ------------------RYAN'S CSS ----------------------------------*/ | ||
+ | #page_1 {position:relative; overflow: hidden;margin: 97px 0px 32px 94px;padding: 0px;border: none;width: 722px;} | ||
+ | #page_1 #id_1 {border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 628px;overflow: hidden;} | ||
+ | #page_1 #id_2 {border:none;margin: 590px 0px 0px 311px;padding: 0px;border:none;width: 411px;overflow: hidden;} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | #page_2 {position:relative; overflow: hidden;margin: 52px 0px 32px 94px;padding: 0px;border: none;width: 722px;} | ||
+ | #page_2 #id_1 {border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 722px;overflow: hidden;} | ||
+ | #page_2 #id_2 {border:none;margin: 8px 0px 0px 34px;padding: 0px;border:none;width: 688px;overflow: hidden;} | ||
+ | #page_2 #id_2 #id_2_1 {float:left;border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 391px;overflow: hidden;} | ||
+ | #page_2 #id_2 #id_2_2 {float:left;border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 297px;overflow: hidden;} | ||
+ | #page_2 #id_3 {border:none;margin: 7px 0px 0px 0px;padding: 0px;border:none;width: 722px;overflow: hidden;} | ||
+ | #page_2 #id_4 {border:none;margin: 64px 0px 0px 311px;padding: 0px;border:none;width: 411px;overflow: hidden;} | ||
+ | |||
+ | #page_2 #dimg1 {position:absolute;top:658px;left:29px;z-index:-1;width:439px;height:215px;} | ||
+ | #page_2 #dimg1 #img1 {width:439px;height:215px;} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | #page_3 {position:relative; overflow: hidden;margin: 55px 0px 32px 94px;padding: 0px;border: none;width: 722px;} | ||
+ | #page_3 #id_1 {border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 722px;overflow: hidden;} | ||
+ | #page_3 #id_2 {border:none;margin: 46px 0px 0px 311px;padding: 0px;border:none;width: 411px;overflow: hidden;} | ||
+ | |||
+ | #page_3 #dimg1 {position:absolute;top:39px;left:196px;z-index:-1;width:244px;height:871px;} | ||
+ | #page_3 #dimg1 #img1 {width:244px;height:871px;} | ||
+ | |||
+ | |||
+ | |||
+ | #page_3 #tx1 {position:absolute;top:488px;left:224px;width:206px;height:16px;} | ||
+ | #page_3 #tx2 {position:absolute;top:265px;left:242px;width:183px;height:16px;} | ||
+ | |||
+ | #page_4 {position:relative; overflow: hidden;margin: 58px 0px 32px 94px;padding: 0px;border: none;width: 722px;} | ||
+ | #page_4 #id_1 {border:none;margin: 0px 0px 0px 0px;padding: 0px;border:none;width: 722px;overflow: hidden;} | ||
+ | #page_4 #id_2 {border:none;margin: 521px 0px 0px 311px;padding: 0px;border:none;width: 411px;overflow: hidden;} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | .ft0{font: 1px 'Arial';line-height: 1px;} | ||
+ | .ft1{font: 17px 'Arial';line-height: 19px;} | ||
+ | .ft2{font: 16px 'Arial';line-height: 18px;} | ||
+ | .ft3{font: 19px 'Arial';line-height: 22px;} | ||
+ | .ft4{font: 13px 'Arial';line-height: 16px;} | ||
+ | .ft5{font: 8px 'Arial';line-height: 11px;position: relative; bottom: 5px;} | ||
+ | .ft6{font: 12px 'Arial';line-height: 16px;} | ||
+ | .ft7{font: italic 13px 'Arial';line-height: 16px;} | ||
+ | .ft8{font: 9px 'Arial';line-height: 12px;position: relative; bottom: 5px;} | ||
+ | .ft9{font: 9px 'Arial';line-height: 12px;position: relative; bottom: -1px;} | ||
+ | .ft10{font: italic 9px 'Arial';line-height: 12px;position: relative; bottom: -1px;} | ||
+ | .ft11{font: italic 12px 'Arial';line-height: 16px;} | ||
+ | .ft12{font: 8px 'Arial';line-height: 11px;position: relative; bottom: -1px;} | ||
+ | .ft13{font: 12px 'Arial';line-height: 15px;} | ||
+ | .ft14{font: 13px 'Arial';line-height: 17px;position: relative; bottom: -2px;} | ||
+ | .ft15{font: 13px 'Arial';line-height: 17px;} | ||
+ | .ft16{font: 12px 'Arial';margin-left: 3px;line-height: 16px;} | ||
+ | .ft17{font: italic 13px 'Arial';line-height: 16px;position: relative; bottom: 9px;} | ||
+ | .ft18{font: italic 13px 'Arial';line-height: 16px;position: relative; bottom: -8px;} | ||
+ | .ft19{font: 8px 'Arial';line-height: 7px;} | ||
+ | .ft20{font: 8px 'Arial';line-height: 9px;} | ||
+ | .ft21{font: 1px 'Arial';line-height: 4px;} | ||
+ | .ft22{font: 9px 'Arial';line-height: 9px;} | ||
+ | .ft23{font: 8px 'Arial';line-height: 8px;} | ||
+ | .ft24{font: 8px 'Arial';line-height: 10px;position: relative; bottom: -4px;} | ||
+ | .ft25{font: 8px 'Arial';line-height: 10px;} | ||
+ | .ft26{font: 13px 'Arial';margin-left: 6px;line-height: 16px;} | ||
+ | .ft27{font: 12px 'Arial';margin-left: 6px;line-height: 15px;} | ||
+ | .ft28{font: italic 12px 'Arial';line-height: 15px;} | ||
+ | |||
+ | .p0{text-align: left;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p1{text-align: right;padding-right: 213px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p2{text-align: right;padding-right: 258px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p3{text-align: left;padding-left: 13px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p4{text-align: right;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p5{text-align: left;padding-left: 7px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p6{text-align: left;margin-top: 0px;margin-bottom: 0px;} | ||
+ | .p7{text-align: justify;padding-right: 89px;margin-top: 13px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p8{text-align: justify;padding-right: 94px;margin-top: 0px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p9{text-align: left;margin-top: 23px;margin-bottom: 0px;} | ||
+ | .p10{text-align: justify;padding-right: 94px;margin-top: 13px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p11{text-align: left;padding-left: 229px;margin-top: 16px;margin-bottom: 0px;} | ||
+ | .p12{text-align: justify;padding-right: 89px;margin-top: 8px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p13{text-align: justify;padding-right: 89px;margin-top: 0px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p14{text-align: left;margin-top: 22px;margin-bottom: 0px;} | ||
+ | .p15{text-align: left;padding-left: 20px;margin-top: 14px;margin-bottom: 0px;} | ||
+ | .p16{text-align: left;margin-top: 19px;margin-bottom: 0px;} | ||
+ | .p17{text-align: justify;padding-right: 89px;margin-top: 10px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p18{text-align: right;padding-right: 10px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p19{text-align: left;padding-left: 33px;margin-top: 0px;margin-bottom: 0px;} | ||
+ | .p20{text-align: justify;padding-right: 184px;margin-top: 16px;margin-bottom: 0px;} | ||
+ | .p21{text-align: left;padding-left: 20px;margin-top: 0px;margin-bottom: 0px;} | ||
+ | .p22{text-align: left;margin-top: 20px;margin-bottom: 0px;} | ||
+ | .p23{text-align: justify;padding-right: 94px;margin-top: 9px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p24{text-align: left;padding-right: 89px;margin-top: 10px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p25{text-align: left;padding-left: 20px;margin-top: 1px;margin-bottom: 0px;} | ||
+ | .p26{text-align: left;padding-left: 20px;padding-right: 89px;margin-top: 0px;margin-bottom: 0px;text-indent: -20px;} | ||
+ | .p27{text-align: justify;padding-right: 94px;margin-top: 0px;margin-bottom: 0px;} | ||
+ | .p28{text-align: justify;padding-right: 94px;margin-top: 14px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p29{text-align: left;padding-left: 210px;margin-top: 11px;margin-bottom: 0px;} | ||
+ | .p30{text-align: left;padding-left: 218px;margin-top: 2px;margin-bottom: 0px;} | ||
+ | .p31{text-align: left;margin-top: 3px;margin-bottom: 0px;} | ||
+ | .p32{text-align: justify;padding-right: 94px;padding-top: 1px;margin-top: 0px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p33{text-align: left;padding-left: 260px;margin-top: 9px;margin-bottom: 0px;} | ||
+ | .p34{text-align: left;padding-left: 20px;margin-top: 21px;margin-bottom: 0px;} | ||
+ | .p35{text-align: left;padding-left: 205px;margin-top: 11px;margin-bottom: 0px;} | ||
+ | .p36{text-align: left;padding-left: 206px;margin-top: 3px;margin-bottom: 0px;} | ||
+ | .p37{text-align: justify;padding-right: 94px;margin-top: 3px;margin-bottom: 0px;} | ||
+ | .p38{text-align: right;padding-right: 4px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p39{text-align: center;padding-right: 20px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p40{text-align: right;padding-right: 11px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p41{text-align: left;margin-top: 0px;margin-bottom: 0px;-webkit-transform: rotate(270deg);-moz-transform: rotate(270deg);filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);direction: rtl;block-progression: lr;width:47px;height:8px;} | ||
+ | .p42{text-align: right;padding-right: 16px;margin-top: 0px;margin-bottom: 0px;white-space: nowrap;} | ||
+ | .p43{text-align: left;padding-left: 20px;margin-top: 23px;margin-bottom: 0px;} | ||
+ | .p44{text-align: left;padding-left: 229px;margin-top: 11px;margin-bottom: 0px;} | ||
+ | .p45{text-align: justify;padding-right: 94px;margin-top: 16px;margin-bottom: 0px;text-indent: 20px;} | ||
+ | .p46{text-align: justify;padding-left: 29px;padding-right: 94px;margin-top: 14px;margin-bottom: 0px;text-indent: -22px;} | ||
+ | .p47{text-align: justify;padding-left: 29px;padding-right: 94px;margin-top: 10px;margin-bottom: 0px;text-indent: -22px;} | ||
+ | .p48{text-align: justify;padding-left: 29px;padding-right: 94px;margin-top: 11px;margin-bottom: 0px;text-indent: -22px;} | ||
+ | .p49{text-align: justify;padding-left: 7px;margin-top: 10px;margin-bottom: 0px;} | ||
+ | .p50{text-align: justify;padding-left: 29px;padding-right: 89px;margin-top: 10px;margin-bottom: 0px;text-indent: -22px;} | ||
+ | |||
+ | .td0{padding: 0px;margin: 0px;width: 7px;vertical-align: bottom;} | ||
+ | .td1{padding: 0px;margin: 0px;width: 37px;vertical-align: bottom;} | ||
+ | .td2{padding: 0px;margin: 0px;width: 172px;vertical-align: bottom;} | ||
+ | .td3{padding: 0px;margin: 0px;width: 412px;vertical-align: bottom;} | ||
+ | .td4{padding: 0px;margin: 0px;width: 216px;vertical-align: bottom;} | ||
+ | .td5{padding: 0px;margin: 0px;width: 209px;vertical-align: bottom;} | ||
+ | .td6{padding: 0px;margin: 0px;width: 129px;vertical-align: bottom;} | ||
+ | .td7{padding: 0px;margin: 0px;width: 22px;vertical-align: bottom;} | ||
+ | .td8{padding: 0px;margin: 0px;width: 112px;vertical-align: bottom;} | ||
+ | .td9{padding: 0px;margin: 0px;width: 72px;vertical-align: bottom;} | ||
+ | .td10{padding: 0px;margin: 0px;width: 12px;vertical-align: bottom;} | ||
+ | .td11{padding: 0px;margin: 0px;width: 54px;vertical-align: bottom;} | ||
+ | .td12{padding: 0px;margin: 0px;width: 75px;vertical-align: bottom;} | ||
+ | .td13{padding: 0px;margin: 0px;width: 218px;vertical-align: bottom;} | ||
+ | .td14{padding: 0px;margin: 0px;width: 151px;vertical-align: bottom;} | ||
+ | .td15{padding: 0px;margin: 0px;width: 9px;vertical-align: bottom;} | ||
+ | .td16{padding: 0px;margin: 0px;width: 26px;vertical-align: bottom;} | ||
+ | .td17{padding: 0px;margin: 0px;width: 49px;vertical-align: bottom;} | ||
+ | .td18{padding: 0px;margin: 0px;width: 48px;vertical-align: bottom;} | ||
+ | .td19{padding: 0px;margin: 0px;width: 65px;vertical-align: bottom;} | ||
+ | .td20{padding: 0px;margin: 0px;width: 32px;vertical-align: bottom;} | ||
+ | .td21{padding: 0px;margin: 0px;width: 51px;vertical-align: bottom;} | ||
+ | |||
+ | .tr0{height: 33px;} | ||
+ | .tr1{height: 64px;} | ||
+ | .tr2{height: 61px;} | ||
+ | .tr3{height: 27px;} | ||
+ | .tr4{height: 29px;} | ||
+ | .tr5{height: 16px;} | ||
+ | .tr6{height: 30px;} | ||
+ | .tr7{height: 10px;} | ||
+ | .tr8{height: 14px;} | ||
+ | .tr9{height: 4px;} | ||
+ | .tr10{height: 12px;} | ||
+ | .tr11{height: 20px;} | ||
+ | .tr12{height: 31px;} | ||
+ | .tr13{height: 47px;} | ||
+ | .tr14{height: 32px;} | ||
+ | .tr15{height: 15px;} | ||
+ | .tr16{height: 37px;} | ||
+ | .tr17{height: 11px;} | ||
+ | .t0{width: 628px;font: 13px 'Arial';} | ||
+ | .t1{width: 347px;margin-left: 32px;font: 13px 'Arial';} | ||
+ | .t2{width: 280px;margin-left: 164px;margin-top: 40px;font: 8px 'Arial';} | ||
+ | /********************************** RYAN's CSS ENDS **************************/ | ||
body{ | body{ | ||
Line 170: | Line 356: | ||
display: none; | display: none; | ||
} | } | ||
+ | |||
+ | |||
/******************************DEFAULT WIKI SETTINGS CSS: CHANGING IT TO REFLECT OUR OWN PAGE******************** | /******************************DEFAULT WIKI SETTINGS CSS: CHANGING IT TO REFLECT OUR OWN PAGE******************** | ||
Line 207: | Line 395: | ||
background-color: #003D99;//#efefef;//#383838; | background-color: #003D99;//#efefef;//#383838; | ||
border: 0 none; | border: 0 none; | ||
- | height: | + | height: 1px; // 46 px |
z-index: 100; | z-index: 100; | ||
top: 0; | top: 0; | ||
Line 257: | Line 445: | ||
color: #727272; | color: #727272; | ||
text-decoration: none; | text-decoration: none; | ||
- | background-color: ; | + | background-color: transparent; |
} | } | ||
Line 274: | Line 462: | ||
width: 100%; | width: 100%; | ||
height: 100%; | height: 100%; | ||
- | background-color: #efefef;//#003D99;//transparent; | + | background-color: #efefef;//#efefef;//#003D99;//transparent; |
} | } | ||
Line 289: | Line 477: | ||
} | } | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | </style> | |
- | + | </head> | |
- | + | <body> | |
- | + | ||
- | + | <nav class="navbar nav-justified" role="navigation" id='nav'> | |
- | + | <div class="btn-group btn-group btn-group-justified"> | |
- | + | <div class="btn btn-lg " id="home">Home</div> | |
- | + | <div class="btn btn-lg " id="team">Team</div> | |
- | + | <div class="btn btn-lg " id="project">Project</div> | |
- | + | <div class="btn btn-lg " id="doc">Documentation</div> | |
- | + | <div class="btn btn-lg" id="notebook">Notebook</div> | |
- | + | <div class="btn btn-lg" id="safety">Safety</div> | |
+ | <div class="btn btn-lg" id="attributions">Sponsors</div> | ||
+ | <div class="btn btn-lg" id="achieve">Achievements</div> | ||
+ | <div class="btn btn-lg" id="logo"><a href = "https://igem.org/Main_Page"><img src = "http://i.imgur.com/mGHw11P.png?1"></a></div> | ||
+ | |||
+ | </div> | ||
+ | |||
+ | </nav> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | <div class="jumbotron" > | |
- | + | <div class = "row"> | |
+ | <div class = "col-md-3"> | ||
+ | <h2>Topics</h2> | ||
+ | <!-- FIXED NAV BAR --- <ul class="nav nav-pills nav-stacked stuck"> --> | ||
+ | <ul class="nav nav-pills nav-stacked"> | ||
+ | <li id = "w1click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000" weight="normal">Project Description</font></a></li> | ||
+ | <li id = "w5click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Database</font></a></li> | ||
+ | <li id = "w4click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Traversal</font></a></li> | ||
+ | <li id = "w3click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Web Application</font></a></li> | ||
+ | <li id = "w6click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Modeling</font></a></li> | ||
+ | <li id = "w7click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Network Analysis</font></a></li> | ||
+ | <li id = "w9click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Validation</font></a></li> | ||
+ | <li id = "w8click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Supported Standards</font></a></li> | ||
+ | <li id = "w2click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Future Directions</font></a></li> | ||
+ | <li id = "w10click"><a href = "#" class = "list_items"><font size = "4px" color = "#000000">Human Practices</font></a></li> | ||
+ | |||
+ | </ul> | ||
+ | </div> | ||
+ | <div class = "col-md-9"><h2 class = "text-center">Description</h2> | ||
- | div | + | <div id = "w10"> |
- | + | <h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Human Practices</b></h2> | |
- | + | ||
- | border- | + | |
- | + | ||
- | text- | + | |
- | + | ||
- | a. | + | Neil Gershenfeld, a physicist who is the director of the Center for Bits and Atoms, said that the improvement in the capacity to read and write biological genes has given rise to the possibility of “spectacular advances,” like <b>the ability to use a computer to design a complete genome, output it, insert it in a cell and in effect create life from scratch. -<a href = "http://www.nytimes.com/2014/05/09/science/a-synthetic-biology-conference-lures-an-intriguing-audience.html">NY Times</a></b> <br><br> |
- | . | + | It is clear that the field of synthetic biology has made leaps and bounds in recent years, from the introduction of genetically modified food to the cellular production of polymers with incredible tensile strength. What Gershenfeld is stating in the above quote is that previously, to make a significant contribution to the field of synthetic biology, there was a certain element of trial and error. What does this gene do? How does it interact with other species within the cell? How can I make my output more efficient and effective? And the biology community has come up with significant answers for each of these: gene sequencing and indexing to understand gene presence and function, documentation of chemical interactions, and investigations into crosstalk and modeling of the in vivo cellular environment.<br><br> |
- | + | SBiDer is the spectacular advance to which Gershenfeld is referring. Our application allows synthetic biologists of all levels to contribute in a significant way and to develop their ideas and streamline the synthetic design process. SBiDer is built upon the established body of work in the field of synthetic biology to not only simplify the design of biological circuits, but to increase the ability of users to visualize their circuits in silico. By simplifying the design and visualization process, our application allows users to explore the myriad of papers that compose our database simultaneously, without having to traverse typical scientific jargon that usually precludes young scientists from fully fleshing out their ideas. In this way, SBiDer has opened the field of synthetic biology for users of all levels, from high school freshmen to private investigators. <br><br> | |
- | + | By opening the field to aspiring synthetic biologists and decreasing the time between idea conceptualization and wet lab production, SBiDer has removed the barriers of entry into the world of synthetic genetic production, thereby not only establishing a comprehensive database of operons and their interactions with one another, but also enabling new, novel discoveries between operons in new, novel ways.<br><br> | |
- | . | + | Enabling young scientists to enter the field of synthetic biology means nothing if they are unable to generate data of some significance, but it is important to understand that SBiDer enables just that. <br><br> |
- | + | ||
- | + | The Defense Advanced Research Projects Agency (DARPA) started the Living Foundries project to fund many scientific endeavors to aid in the transformation of biology into an engineering endeavor by pursuing biological projects with efficiency and efficacy and establishing the technical means for other scientists to do so. DARPA funds projects in the hope that some will aid in the government in its continual pursuit of national security. One recent project to emerge from the Living Foundries project is called <a href = "https://www.fbo.gov/index?s=opportunity&mode=form&id=0b24ed21b4d8d000caee78ee1b0c452f&tab=core&_cview=1">1,000 Molecules</a>, aimed at building a “scalable, integrated, rapid design and prototyping infrastructure for the facile engineering of biology.” SBiDer itself meets these criteria by aiding users in the pursuit of novel circuits by combining operons in previously unimagined ways, but it also allows others to complete projects that fall within this criteria as well. One such project that would have benefitted from the service that the SBiDer application provides is the <a href="http://pubs.acs.org/doi/pdf/10.1021/cr010194g">Spider Silk project</a> from the Lewis lab. The project focused on genetically engineering E. Coli to produce spider silk in mass quantities to be potentially used in protective equipment similar to kevlar. Their polymer relies highly on arabinose, which is a species with many connections within the web of SBiDer database.<br><br> | |
- | + | ||
- | + | ||
- | . | + | The SBiDer application has a variety of potential uses within the synthetic biology community. The cultivation of algae for <a href = "http://biodynamics.ucsd.edu/pubs/articles/Ferry12.pdf ">biofuels</a> is an inefficient process that could be aided by genetically engineered colonies that produce high lipid content but also grow efficiently in culture could drastically reduce international dependence upon fossil fuels.<br><br> |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | . | + | Synthetic biology also has the potential for significant impacts in the field of agriculture. Drought resistant wheat has made the year-round cultivation of wheat a possibility, and has made cheap food for many available. Of the potential inhibitors to proper and sustained crop growth, drought is the most prohibitive. By reducing the dependence of crops on water, food production could be expanded to previously unexplored regions. The ability of our application to accept new operons to our database means that the wide acceptance and use of the SBiDer application will enable projects such as the drought tolerance of plants to build on the success of previous endeavors and to integrate information from other synthetic biology projects. <br><br> |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | . | + | In addition to defense, biofuels, and agriculture, SBiDer also has the potential to advance health care. The ability to genetically engineer cells to produce specific outputs in response to specific small molecules cannot be understated. One recent development in this field is the production of glucose in genetically engineered cells. These implantable cells have the potential to <a href = "http://www.pbs.org/wgbh/nova/next/body/insulin-producing-stem-cells-provide-lasting-diabetes-treatments/ |
- | + | ">reduce the prevalence of diabetes</a>, which has become a significant health challenge for adults and adolescents alike. | |
- | + | <br><br> | |
- | + | Many more interesting and current uses of synthetic biology in various industries are also described by the <a href=”http://www.bio.org/articles/current-uses-synthetic-biology” >Biotechnology Industry Organization</a>. We hope that as our database increases in size and the more operons we implement, SBiDer will be involved more frequently in the discovery of new and novel uses of existing biology to help drive the field of synthetic biology and society forward. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | </div> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | . | + | <div id = "w9"> |
- | + | <h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Validation</b></h2> | |
- | + | We first validated the SBiDer application by searching for circuits described in the literature sources we used to construct the SBiDer database. As expected we were able to successfully retrieve all the circuits used to for the database. We also used this set of devices during the development of our web application; minimally our application should be able to find known circuits used to construct our database. The full list is below: | |
- | + | <table> | |
- | + | <tr> | |
- | + | <th>Inputs</th> | |
+ | <th>Outputs</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> OHHL,luxR</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> yfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> araC</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> yfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> tetR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lasR,PAI-1</td> | ||
+ | <td> yfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> lasR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> aTc,tetR</td> | ||
+ | <td> yfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> araC,tetR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> araC,lasR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lasR,</td> | ||
+ | <td> PAI-1</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> tetR,lasR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> aTc,tetR</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lasR,PAI-1</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> cI</td> | ||
+ | <td> LacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> tetR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> cI,gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> LacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> tetR,gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacIq,IPTG</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> lacIq</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> luxR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LuxR,AHL</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacIq,IPTG</td> | ||
+ | <td> hrpR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LuxR,AHL</td> | ||
+ | <td> hrpR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacIq,IPTG</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> hrpR,hrpS</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> hrpR,hrpS</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> Sal</td> | ||
+ | <td> supD</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> nahR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> T7ptag</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> T7ptag,supD</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> AHL,luxR</td> | ||
+ | <td> lacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> AHL,lacI</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> IPTG,lacI</td> | ||
+ | <td> ecfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> na</td> | ||
+ | <td> lacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> IPTG,lacI</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> IPTG,LacI</td> | ||
+ | <td> gfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> IPTG,LacI</td> | ||
+ | <td> lacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> lacI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> luxR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> AHL_luxR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> AHL_luxR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> AHL,luxR</td> | ||
+ | <td> lacZalpha-ccdB</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> aTc,</td> | ||
+ | <td> tetR</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LuxR,</td> | ||
+ | <td> PAI-2</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lacI,IPTG</td> | ||
+ | <td> cI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lacI,IPTG</td> | ||
+ | <td> yfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> lacI,IPTG</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> luxR,AHL</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> invF</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> sicA</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> mxiE</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> araC,Lara</td> | ||
+ | <td> ipgC</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> ipgC,mxiE</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> tetR,aTc</td> | ||
+ | <td> exsDA</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> luxR,AHL</td> | ||
+ | <td> exsC</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> exsC,exsDA</td> | ||
+ | <td> rfp</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> exsC,exsDA</td> | ||
+ | <td> invF</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> ipgC,mxiE</td> | ||
+ | <td> sicA</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> mxiE</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> LacI,IPTG</td> | ||
+ | <td> luxR,luxI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> luxR,AHL</td> | ||
+ | <td> lacZalpha-ccdB</td> | ||
+ | </tr> | ||
+ | </table> | ||
- | . | + | While many circuits are contained within the SBiDer database, there were new circuits published in the literature that we could not include in our database due to time constraints. However, supposing that circuits contained within the SBiDer database represent the majority of mechanisms by which synthetic circuits can be constructed (which they do), then SBiDer can predict novel circuits that may eventually be constructed and published. |
- | . | + | Validating predictions of novel circuits described by our database constituted a search of relevant publications. The list of relevant publications that may have explored and validated at least one of our predicted circuits is described by the set of all papers citing more than 1 paper cited by our database. SBiDer gathered circuitry from n=17 publications. |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | . | + | The most recent circuit contained in our database was published in 2012. Interestingly, SBiDer was able to discover several aTc and AHL based circuit recently validated and published by the <a href="http://www.nature.com/nbt/journal/v31/n5/pdf/nbt.2510.pdf"> Piro et al in 2014</a> in our database. We are excited to find that we have predicted novel circuits that are relevant to active research projects that have been published and submit this as justification of the validity of SBiDer’s capacity to predict novel genetic circuitry. |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | </div> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | <div id = "w8"> | |
- | . | + | <h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Supported Standards</b></h2><br> |
- | < | + | <img src = "http://i.imgur.com/EfgO55I.png?1" align="left" height = "400" width = "550"> |
+ | <h4><b>Synthetic Biology Open Language</b></h4> | ||
+ | Synthetic Biology Open Language (<a href = "http://www.sbolstandard.org/about">SBOL</a>) Visua; is an open source graphical notation that allows the user to communicate sequences of genetic parts visually using a set of standard symbols which represent common features of operons. The specific symbols used in our application are the promoter, coding sequence, and terminator. A promoter is a DNA segment that regulates the transcription of a gene. There are two types of promoters that appear in the database: regulated and constitutive. A regulated promoter must be triggered, usually by a small molecule. A constitutive promoter is always activated. In this case, both regulated and constitutive promoters are represented the same way: with a bent, right-facing arrow. Coding sequences are DNA regions that produce some protein when transcribed and are regulated by promoters, and are represented by elongated pentagonal arrowheads. Lastly, there are terminators, which are DNA segments that signal for transcription to cease, and are represented with capital T. Promoter, coding sequence, and terminator symbols which appear on the same line are all part of the same operon. To indicate sequences that are oriented in the 3’ to 5’ direction, arrows point in the opposite direction. The symbols are generated using a language called Pigeon[link], which is specific to SBOL Visual. <br><br> | ||
+ | |||
+ | Using SBOL Visual, it is possible for us to communicate the exact structure of the design generated by the SBiDer application, thereby enhancing user understanding. This way, the user can design and visualize their desired output in silico, prior to wet lab production. <br> | ||
- | < | + | <h4><b>Systems Biology Markup Language</b></h4> |
- | < | + | |
- | + | ||
+ | Systems Biology Markup Language (SBML) captures qualitative models using standardized syntax and semantics established by the SBML community and developers. By specifying the "Level”, "Qualitative Species”, and "Transitions" of a qualitative model, practitioners are capable of conveying the entirety of their model to a large community without sacrificing any nuance in their modeling of a biological network. Level is an integer value that refers to the current state of the network entities that are being model [<a href = "http://co.mbine.org/specifications/sbml.level-3.version-1.qual.version-1.release-1.pdf">ref</a>]. In our Petri-Boolean model, network entities, chemical species and operons, have a basal level of 0 with a maximum capacity of 1. Qualitative Species refer to entities that are compartmentalized and characterized by the qualitative influence of their components; compartments allow one to pool entities of similar composition [<a href = "http://co.mbine.org/specifications/sbml.level-3.version-1.qual.version-1.release-1.pdf">ref</a>]. In our Petri-Boolean model, chemical species and operons are referred to as qualitative species with species and plasmid as their respective compartments. Transitions alter the level of entities in a network at given conditions by a fixed amount such conditions involve the fluctuation between levels falling below or above an established threshold [<a href = "http://co.mbine.org/specifications/sbml.level-3.version-1.qual.version-1.release-1.pdf">ref</a>]. Transitions in our network govern the binary state of its entities thus a network entity can assume a level of 0 or 1 depending on current state conditions. | ||
+ | By converting every network entity, qualitative species or transition, in our database to its corresponding SBML description we not only make our qualitative model accessible to the public but also our entire database. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | </div> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | <div id = "w7"> | ||
- | + | <h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Network Analysis</b></h2> | |
- | + | ||
- | + | ||
- | + | Gene circuit design often involves the laborious extension of existing circuitry through the development of new devices. Device development is a taxing biological endeavor to which SBiDer offers an alternative. SBIDer facilitates circuit design by integrating knowledge across existing genetic modules. We provide evidence for an increase in functional motifs relative to the circuitry input into our database by examining common network attributes and executing more sophisticated network analysis.<br><br> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | In analyzing our database, we demonstrated and quantified the increased number of genetic circuits relative to the input circuits. Connectivity served as a preliminary indicator of the increase in potential circuits. We compared the connectivity, measured by “in-degree” and “out-degree,” of the input circuitry to the degree measure of the integrated database. The increase in degree indicates a combinatorial increase in potential circuits. <br><br> | ||
+ | <img src = "http://i.imgur.com/u4WT8An.png?1"><br><br><img src = "http://i.imgur.com/JZH2iri.png?1"> | ||
+ | <br> | ||
- | < | + | This increase is observed as the rightward shift of the In-Degree(v) and Out-Degree(v) distributions. The degree comparison between the input circuitry and the database demonstrated an increase in modulators and modulations in the database. Theoretically, every in-degree increase represents a novel modulation of that node, every out-degree increase represents a novel opportunity for that node to modulate another. The increase in modulators and modulations is important because every combination of these novel inputs and outputs constitutes a new circuit. Further, each ancestor and descendant of a node increase the count of novel circuits exponentially, as a function of the degree. In addition to analyzing the connectivity of our network, we implemented network motif analysis techniques in attempt to identify topological motifs. |
- | + | ||
- | + | <br><br> | |
- | + | ||
- | + | <img src = "http://i.imgur.com/HGJIpzR.png?1" align="left"> Topological motifs can map to functional motifs which are the subunits of genetic circuitry [<a href = "http://www.nature.com/nrg/journal/v8/n6/abs/nrg2102.html">Alon, 2007</a>]. We considered this correspondence and applied CytoKavosh [<a href = "http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0043287">Masoudi-Nejad et.al., 2012</a>] to identify topological motifs that occurred significantly relative to a random graph. CytoKavosh is a visual implementation of the Kavosh motif finding algorithm [<a href = "http://www.biomedcentral.com/1471-2105/10/318">Kashani, et.al, 2009</a>] constructed on the <a href = "http://www.cytoscape.org/">Cytoscape</a> platform. We report an increase in the number of topological motifs after analysis of the input circuitry. The bi-fan network motif 1 (Kavosh motif 204) showed a 1.98 fold increase from the input circuitry to the integrated database. In our most extreme cases, motifs 540 and 16920 (not included in the graph) had a 7.89 and 6.75 fold increase, respectively. The cumulative increase in fold change across discussed motifs is 24.57. Increases in the counts of selected motifs are shown below: <br><br> | |
- | + | <figure> | |
- | + | <img src = "http://i.imgur.com/uU1GXoF.png?1"> <!-- CAPTION: A display of counts of selected motifs, grouped by motif IDs generated by CytoKavosh --> | |
- | + | <figcaption><font size = "2px">A display of counts of selected motifs, grouped by motif IDs generated by CytoKavosh</font></figcaption> | |
- | + | </figure> | |
- | + | <br> | |
- | + | ||
- | + | A comparison of CytoKavosh analyzed motifs between the input circuitry and the databases shows a clear increase in the number of known motifs. The observed increase in network motifs validates our expectation that integrating related circuits would increase their potential. <br><br> | |
- | + | ||
- | + | <figure> | |
- | + | <img src = "http://i.imgur.com/C0rsLQ4.png" height = "300" width = "700"> | |
- | + | <figcaption><font size = "2px">CytoKavosh ID: Motif 6</font></figcaption> | |
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/ZRO3UeV.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 28</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/Oom4rFn.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 30</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/mh5XSKu.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 34</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/Yr2ih31.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 36</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/q4nxmaV.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 74</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/4gUKB7y.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 154</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/nNIRQM6.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 204</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/TyPMdP5.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 402</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/9HRBUnr.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 540</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/xFuUUtI.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 648</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/prwiIi3.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 1080</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/EEdmMm3.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 16920</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/xzMuGqM.png?1" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 526864</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/yyTSoMk.png" height = "300" width = "700"> | ||
+ | <figcaption><font size = "2px">CytoKavosh ID: Motif 540940</font></figcaption> | ||
+ | </figure> <br> | ||
+ | |||
+ | </div> | ||
- | <div id = "w1"><h3><b> | + | <div id = "w1"> |
+ | |||
+ | Genetic circuits are often difficult to engineer, requiring months to design, build, and test each individual genetic device involved in the circuit. SBiDer, a web tool developed by the UCSD Software iGEM team, will leverage existing devices to construct a database with consideration for the function of each device interpreted as boolean logic. The data can be queried by the user through SBiDer's visual interface to explore circuit designs. Users can search for existing circuits that can be used to assemble a complex circuit. The displayed circuit's literature reference, characterization data, and images of included devices can be viewed through the built-in table. We also provide a standalone modelling Python package that can be used to model circuits given by our online webtool. SBiDer's web of information can be expanded through user-generated additions to the database to improve the efficiency of the application and the accuracy of the models. <br> | ||
+ | <h3 class = "text-center">List of definitions for terms used in various sections of this page:</h3> | ||
+ | |||
+ | <ul class = "a"> | ||
+ | <li><b>Nodes by context</b> | ||
+ | <ul><!-- (2) START --> | ||
+ | <li>Search Algorithm | ||
+ | <ul><!-- (3) --> | ||
+ | <li>Operon node: A combination of the input transition, operon, and output transition nodes as described in the Petri Net model.</li> | ||
+ | </ul></li> | ||
+ | <li>SBiDer Petri Net Model <ul><li>Operon node: A reciever and producer of species through input and output transitions. | ||
+ | </li></ul></li> | ||
+ | |||
+ | <li>Web Application | ||
+ | <ul><!-- (3) --> | ||
+ | <li>Operon node: A set of genes that are regulated by DNA sequences known as cis or trans regulating elements. Under the sbider Petri net adaptation operons are places</li> | ||
+ | <li>Species node: A node that contains only the species information which is similar to its usage in the algorithm.</li> | ||
+ | <li>Transition node (see Input Transition and Output Transition): Graphical representation of the Petri Net Transitions. | ||
+ | </li> | ||
+ | </ul></li> | ||
+ | </ul><!-- (2) END--> | ||
+ | </li> | ||
+ | |||
+ | |||
+ | <li><b>Input (for search)</b> <ul><li>A set of desired initial species to start the search algorithm. </li></ul></li> | ||
+ | |||
+ | <li><b>Output (for search)</b><ul><li>A set of desired final species produced by the search algorithm.</li></ul></li> | ||
+ | |||
+ | <li><b>Paths</b>: <ul><li>Operon paths:<ul><li>composed of operon nodes as defined within the algorithm representation of the network and species nodes. The network condenses to a directed tree graph from a Petri Net representation. | ||
+ | </li></ul></li></ul> | ||
+ | |||
+ | <ul><li>Petri Net paths:<ul><li>The cyclic movement from a place (species) to an input transition to another place (operon) to an output transition to an ultimate place(species). </li></ul></li></ul> | ||
+ | </li> | ||
+ | |||
+ | <li><b>Petri net</b>:<ul><li>Consists of operon nodes, species nodes, and transitions. All logic required to activate an operon is encompassed within the transition. Species nodes always point to an input transition, which points to one operon, which points to a singular output transition, which points to a species node.</li></ul></li> | ||
+ | |||
+ | <li><b>Places</b><ul><li>Conditions to be met in order to enable a transition in the Petri Net model.</li></ul></li> | ||
+ | |||
+ | <li><b>Transitions</b><ul><li>Activated events that allow movement from Place to Place in a Petri Net model.</li></ul></li> | ||
+ | |||
+ | |||
+ | <li><b>SBML</b><ul><li>a free and open interchange format for computer models of biological processes, which is based on the XML standard. SBML is useful for models of metabolism, cell signaling, and more. It continues to be evolved and expanded by an international community. </li></ul></li> | ||
+ | |||
+ | <li><b>SBOL</b><ul><li>Synthetic Biology Open Language Visual is an open source graphical notation that allows the user to communicate sequences of genetic parts visually using a set of standard symbols which represent common features of operons.</li></ul></li> | ||
+ | |||
+ | <li><b>Plasmids</b><ul><li>The structure of bacterial DNA. Plasmids are circular, closed loops of DNA that contain functioning genes used by the organism.</li></ul></li> | ||
+ | |||
+ | <li><b>Species</b><ul><li>Any chemicals and stimuli affecting gene production. Under the SBiDer Petri net adaptation species are places.</li></ul></li> | ||
+ | |||
+ | <li><b>Input transitions</b><ul><li>Species-regulated regions of the DNA which are formalized into boolean logic operations under the sbider Petri net adaptation. | ||
+ | </li></ul></li> | ||
+ | |||
+ | <li><b>Operons</b><ul><li>are a set of genes that are regulated by DNA sequences known as cis or trans regulating elements.</li></ul></li> | ||
+ | |||
+ | <li><b>Output transitions</b><ul><li>Describe the events and species produced after operon activation namely, RNA and protein production.</li></ul></li> | ||
+ | </ul> | ||
- | |||
Line 517: | Line 1,038: | ||
</div> | </div> | ||
- | <div id = "w2">< | + | <div id = "w2"><h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Future Directions</b></h2> |
+ | <h3><b>Database - Integrating NDEx</b></h3> | ||
- | + | NDEx is a breeding ground for network sharing, discussion, analysis and storage. By acting like the Facebook of networks, NDEx serves a medium for the discovery, sharing and discussion of networks. Networks are commonly used for their ability to capture the biology as a system of particular molecular interactions with interaction types varying between the type of networks built by scientist. The discussion of networks offered by NDEx provides a means for researchers to share their ideas behind network construction and analysis as well as sharing a copy of the network. NDEx also provides what is know as provenance history which means that history of the network construction is saved and the development of the network can be seen. As a means of further connection the biological network community NDEx offers an API and has plans for further integration with the network visualizer, Cytoscape (www.ndexbio.org). <br><br> | |
+ | |||
+ | SBiDer was developed with the intention to involve the biology community with the SBiDer Network. Discussion of genetic circuits is imperative for the proper use of a circuit as well as to give the proper context of the circuit. NDex would give a discussion board to the SBiDer network where biologist can discuss topics regarding optimal genetic circuits, the potential to experimentally create new circuits from the existing network or a range of many other topics. As said before, genetic device building is not an easy task and provenance history provides useful backtracking to understand the development of genetic circuit networks and due to the ability of network sharing it becomes possible for the SBiDer network to exist in different versions with the purpose of displaying genetic circuit networks with specific functionalities. NDEx API functionality then provides the means to create tools with which SBiDer networks can be better analyzed. | ||
+ | |||
+ | <h3><b>Traversal</b></h3> | ||
+ | SBiDer’s three main pillars - database, search algorithm, and web application - intertwine effectively and make SBiDer a robust tool for the synthetic biology community. Furthermore, the database, search algorithm, and web application are modularly developed so that each component can be easily updated, extended, and optimized by the global synthetic biology community. In the development, there was a focus on minimizing the barrier of collaboration by using an open source platform and generating a comprehensive usage and implementation documents. SBiDer was developed on the consideration to encourage the synthetic biology community to collaborate and drive the field forward. In the course of the development, various tools that could further develop SBiDer were discovered. In future iterations of SBiDer, the following functionalities should be considered for extending SBiDer: | ||
+ | |||
+ | <br> | ||
+ | |||
+ | <h4><b>Web Ontology Language (OWL)</b></h4> | ||
+ | <h4><u>What OWL is</u></h4> | ||
+ | The Web Ontology Language (OWL) is a family of knowledge representation languages or ontology languages for authoring ontologies or knowledge bases (W3C). The data described by an ontology in the OWL family is interpreted as a set of "individuals" and a set of "property assertions" which relate these individuals to each other. An ontology consists of a set of axioms which place constraints on sets of individuals (called "classes") and the types of relationships permitted between them. These axioms provide semantics by allowing systems to infer additional information based on the data explicitly provided. | ||
+ | |||
+ | <h4><u>Integration of OWL into SBiDer</u></h4> | ||
+ | SBiDer can describe all of the components in the database using OWL by creating a unique ontological hierarchy that suits the field of synthetic biology. Using OWL relationships, SBiDer can better connect its components through more complex fashion that better captures the biological reality underlying synthetic biology. For example, an ontology describing components used by SBiDer, or individuals in the semantics of ontology, might include axioms stating that a "activatePromotor" property is only present between two individuals when "isBiochecmicalSpecies" is also present, and individuals of class "activatePromotor" are never related via "isBiochemicalSpecies" to of the "transcribeRNA" class. If it is stated that the individual green fluorescent protein (GFP) is related via "produceLight" to the individual yellow fluorescent protein (YFP), and that GFP is a member of the "isProtein" class, then it can be inferred that YFP is not a member of "isPromotor" class. In this fashion, OWL allows the use of more sophisticated relationships amongst database components. Furthermore, there already exists various ontological hierarchy optimized for biology such as genetic interaction ontology, protein interaction ontology, and cancer genomics ontology. And OWL allows potential interaction of multiple ontologies. So, the integration of OWL into SBiDer allows SBiDer to potentially interact with many other aspect of biology such as genetic interaction, protein interaction, and RNA processing. As a result of OWL integration, SBiDer can represent the biological reality of synthetic biology in a much more complex, sophisticated, and realistic manner. | ||
+ | |||
+ | |||
+ | <h4><b>Factor Graph</b></h4> | ||
+ | <h4><u>What Factor Graph is</u></h4> | ||
+ | In probability theory and its applications, a factor graph is a particular type of graphical model, with applications in Bayesian inference, that enables efficient computation of marginal distributions through the sum-product algorithm (H. Loeliger). Factor graph can capture a system as Markov networks or Bayesian networks, and represent mathematical relationships of elements of a system. | ||
+ | |||
+ | |||
+ | <h4><u>Integration of Factor Graph into SBiDer</u></h4> | ||
+ | SBiDer currently implements its network representation of the database as a Petri-Net, which allows modeling of our complex biological system. SBiDer can also capture the network using factor graph, which provides additional statistical tools for analyzing, interpreting, and prediction of the behaviour of our network. Integration of the factor graph can also provide us with machine learning tools to further advance our tools quantitatively and qualitatively. | ||
+ | |||
+ | <h3><b>Web App</b></h3> | ||
+ | The current SBiDer web tool has been constructed with consideration for expansion in all its components from the structure of the source code to the allowance of users to contribute to the database. It is the latter improvement that allows SBiDer to become more efficient as time progresses. As more information becomes available, the SBiDer application can begin to transition from a qualitative description of how its proposed genetic circuits behave to a more quantitative model. | ||
</div> | </div> | ||
Line 528: | Line 1,076: | ||
<h4><b>Structure Overview</b></h4> | <h4><b>Structure Overview</b></h4> | ||
- | SBiDer was developed off of <a href = "http://idekerlab.github.io/cy-net-share/#">CyNetShare</a>, a HTML5 application designed to make utilizing and visualizing <a href = "http://cytoscape.github.io/cytoscape.js/">CytoscapeJS</a> graphs simple and intuitive through use of the javascript library <a href = "https://docs.angularjs.org/api">AngularJS</a>. The object of the SBiDer web tool is to visually present genetic circuits and possible interactions between them in addition to providing relative information about each device’s construction and function through reference material. Images of devices and image data, in Systems Biology Markup Language (<a href = "http://sbml.org/Main_Page">SBML</a>), are provided by a Synthetic Biology Open Language (<a href = "http://www.sbolstandard.org/about">SBOL</a>) visual rendered through use of the popular <a href = "http://pubs.acs.org/doi/abs/10.1021/sb400024s">PigeonCad</a> for intuitive understanding and universal sharing. Users are also provided with the PubMed ID’s of all genetic devices so that they may be able to access and verify entries information in the <a href = "http://www.ebi.ac.uk/miriam/main/">PubMed journal service</a>. | + | SBiDer was developed off of <a href = "http://idekerlab.github.io/cy-net-share/#">CyNetShare</a>, a HTML5 application designed to make utilizing and visualizing <a href = "http://cytoscape.github.io/cytoscape.js/">CytoscapeJS</a> graphs simple and intuitive through use of the javascript library <a href = "https://docs.angularjs.org/api">AngularJS</a>. The object of the SBiDer web tool is to visually present genetic circuits and possible interactions between them in addition to providing relative information about each device’s construction and function through reference material. Images of devices and image data, in Systems Biology Markup Language (<a href = "http://sbml.org/Main_Page">SBML</a>), are provided by a Synthetic Biology Open Language (<a href = "http://www.sbolstandard.org/about">SBOL</a>) visual rendered through use of the popular <a href = "http://pubs.acs.org/doi/abs/10.1021/sb400024s">PigeonCad</a> for intuitive understanding and universal sharing. Users are also provided with the PubMed ID’s of all genetic devices so that they may be able to access and verify entries information in the <a href = "http://www.ebi.ac.uk/miriam/main/">PubMed journal service</a>. SBiDer utilizes and extends the web-application architecture used by the Owl Datasheet generator project from iGEM 2013. |
<br> | <br> | ||
<h4><b>Visualizing the Network</b></h4> | <h4><b>Visualizing the Network</b></h4> | ||
Line 543: | Line 1,091: | ||
The language chosen for the server was Java since it's easier for other developers to use, is extremely common and is compatible with a lot of languages including but not limited to Python, JavaScript and SQL. In essence, all of the languages that we made use of are very well documented, modern and easy to use languages. | The language chosen for the server was Java since it's easier for other developers to use, is extremely common and is compatible with a lot of languages including but not limited to Python, JavaScript and SQL. In essence, all of the languages that we made use of are very well documented, modern and easy to use languages. | ||
<br><br> | <br><br> | ||
- | |||
- | |||
- | |||
</div> | </div> | ||
Line 553: | Line 1,098: | ||
<h3><b>Introduction to the SBiDer Search Algorithm</b></h3> | <h3><b>Introduction to the SBiDer Search Algorithm</b></h3> | ||
<h4><b>Purpose of the Algorithm</b></h4> | <h4><b>Purpose of the Algorithm</b></h4> | ||
- | SBiDer is fundamentally constructed on a manually curated database of existing genetic devices, or operons. This SBiDer database stores operons, species, and most importantly the biochemical interactions of these elements. Also, the database can be represented as an operon interaction network via species. Using this network representation of the database, SBiDer’s search algorithm searches for feasible operon paths connecting a set of species to another set of species. As a result, given a set of input species and a set of output species, the search algorithm returns a subnetwork of operon paths connecting the input species to the output species. Each path within the subnetwork is an operon path that can be used to produce the output species from the input species. In other words, placing operons from a returned operon path as well as the input species into a system can produce the output species.<br> | + | SBiDer is fundamentally constructed on a manually curated database of existing genetic devices, or operons. This SBiDer database stores operons, species, and most importantly the biochemical interactions of these elements. Also, the database can be represented as an operon interaction network via species. Using this network representation of the database, SBiDer’s search algorithm searches for feasible operon paths connecting a set of species to another set of species. As a result, given a set of input species and a set of output species, the search algorithm returns a subnetwork of operon paths connecting the input species to the output species. Each path within the subnetwork is an operon path that can be used to produce the output species from the input species. In other words, placing operons from a returned operon path as well as the input species into a system can produce the output species. |
- | + | <br> | |
<h4><b>Biology Captured by the Algorithm</b></h4> | <h4><b>Biology Captured by the Algorithm</b></h4> | ||
- | The search algorithm conducts a complex, effective, and robust operon path search over the network representation of the database, ultimately generating single or multiple operon paths connecting a set of input species to a set of output species. A resulting path represents a system that can produce the output species given the input species. Also, each path attempts to capture biological reality by considering two major mechanisms of operon activation (detailed description below). | + | The search algorithm conducts a complex, effective, and robust operon path search over the network representation of the database, ultimately generating single or multiple operon paths connecting a set of input species to a set of output species. A resulting path represents a system that can produce the output species given the input species. Also, each path attempts to capture biological reality by considering two major mechanisms of operon activation (detailed description below). |
- | + | ||
- | + | ||
- | + | ||
+ | <h4>Robustness and Modularity of the Algorithm</h4> | ||
+ | Due to the current number of operons in the database, the search algorithm should scale with the increasing size of the database, which will expand as the synthetic biology community adds more species, operons, and plasmids to the database (see complexity analysis of the algorithm is located below). In addition to this robustness, the search algorithm is easily modifiable since it has been implemented independently from the database and the SBiDer web application. Therefore, the search algorithm can be applied to a broad range of networks. Furthermore, the search algorithm was developed on an open source platform to encourage global collaboration in further optimizing the search algorithm and minimizing the barrier for algorithm improvement. As a result, the database as well as the search algorithm will be easily, effectively, and accurately expanded, extended, and optimized by the global synthetic biology community - together. | ||
+ | <br> | ||
<h3><b>Algorithm</b></h3> | <h3><b>Algorithm</b></h3> | ||
<h4><b>Overview of the Algorithm</b></h4> | <h4><b>Overview of the Algorithm</b></h4> | ||
Line 569: | Line 1,114: | ||
<h4><b>Nonlinear Successional Activation Search (NLSAS)</b></h4> | <h4><b>Nonlinear Successional Activation Search (NLSAS)</b></h4> | ||
- | An operon may not produce all of the input species required for an activation of another operon. Yet, multiple operons may together produce all of the required input species for the other operon. Here, each of the activating operons produces some, but not all, of the required species for the activated operon. The search algorithm captures such operon activation mechanism using nonlinear successional search (NLSAS) in building an operon path. As LSAS, NLSAS also uses a tree data structure, but appends an operon whose input species, or activation requirements, are produced by any of the preceding operons in the path. While NLSAS assumes no degradation of the species in the system, it allows for a wider range of operon sets that could produce our desired output from our given input. As a result, each resulting operon path can be linear or nonlinear. Since a NLSAS result captures operon activation in which a single or multiple preceding operons produce species required for the activation of a succeeding operon, LSAS result is a subset of a corresponding NLSAS result. <br> | + | An operon may not produce all of the input species required for an activation of another operon. Yet, multiple operons may together produce all of the required input species for the other operon. Here, each of the activating operons produces some, but not all, of the required species for the activated operon. The search algorithm captures such operon activation mechanism using nonlinear successional search (NLSAS) in building an operon path. As LSAS, NLSAS also uses a tree data structure, but appends an operon whose input species, or activation requirements, are produced by any of the preceding operons in the path. While NLSAS assumes no degradation of the species in the system, it allows for a wider range of operon sets that could produce our desired output from our given input. As a result, each resulting operon path can be linear or nonlinear. Since a NLSAS result captures operon activation in which a single or multiple preceding operons produce species required for the activation of a succeeding operon, LSAS result is a subset of a corresponding NLSAS result. |
+ | <br> | ||
<h4><b>Overview of LSAS and NLSAS</b></h4> | <h4><b>Overview of LSAS and NLSAS</b></h4> | ||
- | Overall, LSAS generates a single or multiple operon paths in which a preceding operon directly activates a succeeding operon, and NLSAS paths in which any of the preceding operons can activate a succeeding operon. In general, a resulting LSAS operon path includes operons mined from same or similarly conducted experimental protocols, where the operons are optimized to coexist in a system. As a result, LSAS can return well optimized operon paths and interactions, which may be used in biochemical reactions with higher confidence. The SBiDer web application can further facilitate the use of such operons paths by providing literature and other published resources. NLSAS, on the other hand, can generate an operon path by including operons from dissimilar experimental protocols. So, using NLSAS can potentially lead to the discovery of novel operon paths and thus new biochemical systems. By providing LSAS and NLSAS variations of the search algorithm, SBiDer assists a user in capturing the biological reality underlying an operon activation as accurately as possible, and provides a means to evaluate, analyze, and apply the results. <br><br> | + | Overall, LSAS generates a single or multiple operon paths in which a preceding operon directly activates a succeeding operon, and NLSAS paths in which any of the preceding operons can activate a succeeding operon. In general, a resulting LSAS operon path includes operons mined from same or similarly conducted experimental protocols, where the operons are optimized to coexist in a system. As a result, LSAS can return well optimized operon paths and interactions, which may be used in biochemical reactions with higher confidence. The SBiDer web application can further facilitate the use of such operons paths by providing literature and other published resources. NLSAS, on the other hand, can generate an operon path by including operons from dissimilar experimental protocols. So, using NLSAS can potentially lead to the discovery of novel operon paths and thus new biochemical systems. By providing LSAS and NLSAS variations of the search algorithm, SBiDer assists a user in capturing the biological reality underlying an operon activation as accurately as possible, and provides a means to evaluate, analyze, and apply the results. |
+ | <br><br> | ||
<h3><b>Complexity Analysis</b></h3> | <h3><b>Complexity Analysis</b></h3> | ||
- | The network | + | The SBiDer network is based upon the Petri Net model, which allows for the capturing of boolean logic. The linearity of the network representation of the database is such that one input transition leads to one operon, which leads to one output transition, and one list containing all species produced by that operon, as shown in Figure 1. |
+ | <br><br> | ||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/Vvnbwni.png?1"> | ||
+ | <figcaption><font size = "2px">Figure 1 - Petri Net representation of an input species node, an input transition, an operon node, an output transition, and a species node consisting of only the species produced by the current operon respectively.This is the representation used for the construction of the SBiDer database since they allow for the incorporation of boolean logic.</font> | ||
+ | </figcaption> | ||
+ | </figure> | ||
+ | <br> | ||
+ | |||
+ | This entire structure can be collapsed into one node since there is no branching, and allows us to represent the network as a directed graph, as shown in Figure 2. By condensing the network in this fashion, complex searches can be conducted in a more efficient manner.<br><br> | ||
+ | |||
+ | <figure> | ||
+ | <img src = "http://i.imgur.com/5wxbadI.png?1"> | ||
+ | <figcaption><font size = "2px">Figure 2 - Operon representation of the network where the input and output transitions have been collapsed into one operon node to decrease the complexity of the search algorithm. This is possible because an input transition always points to one operon and one output transition always points to one species node.</font></figcaption> | ||
+ | </figure> | ||
+ | <br> | ||
<h4><b>LSAS</b></h4> | <h4><b>LSAS</b></h4> | ||
Assume the network has m transitions, with depth d and breadth b from a specified root, and V vertices which represent the aforementioned condensed nodes (centered on operons), and E directed edges connecting said vertices. | Assume the network has m transitions, with depth d and breadth b from a specified root, and V vertices which represent the aforementioned condensed nodes (centered on operons), and E directed edges connecting said vertices. | ||
- | <br> | + | <br><br> |
The SBiDer search algorithm is a modified version of breadth first search where at each transition m that is activated by the input species set a breadth first search for the output species set is performed. For a standard breadth first search, the complexity is | The SBiDer search algorithm is a modified version of breadth first search where at each transition m that is activated by the input species set a breadth first search for the output species set is performed. For a standard breadth first search, the complexity is | ||
- | <br> | + | <br><br> |
BFS Complexity = O(|b|^|d|) | BFS Complexity = O(|b|^|d|) | ||
- | <br> | + | <br><br> |
This is another way of saying that in the worst case, every vertex and every edge is explored, which can be rewritten in terms of the number of vertices and edges. Since all edges have weights of one, V and E will always be positive. | This is another way of saying that in the worst case, every vertex and every edge is explored, which can be rewritten in terms of the number of vertices and edges. Since all edges have weights of one, V and E will always be positive. | ||
- | <br> | + | <br><br> |
- | BFS Complexity = O(|V| + |E|) => O(V + E). <br> | + | BFS Complexity = O(|V| + |E|) => O(V + E). <br><br> |
- | For this standard BFS, assuming a large network where every node is connected to every other node, for V significantly large, V ≈ V - 1, meaning the number of edges searched after the selection of each successive node is approximately equal to V, meaning the V nodes are searched V times. Additionally, consider that the total number of edges (E) in a completely connected graph is bound by V^2. In a completely connected graph (with no self or duplicate edges) with V nodes, the total number of edges is (V-1) + (V-2) + (V-3) + … + 2 + 1. It has been shown that the (V-1)th partial sum of this divergent series sums to [V*(V-1)]/2, which is bound by V^2. Therefore the upper bound for the time complexity for a single breadth first search from a single activated transition from an input species is O(V + E) ≤ O(V+V^2) => O(V^2). <br> | + | For this standard BFS, assuming a large network where every node is connected to every other node, for V significantly large, V ≈ V - 1, meaning the number of edges searched after the selection of each successive node is approximately equal to V, meaning the V nodes are searched V times. Additionally, consider that the total number of edges (E) in a completely connected graph is bound by V^2. In a completely connected graph (with no self or duplicate edges) with V nodes, the total number of edges is (V-1) + (V-2) + (V-3) + … + 2 + 1. It has been shown that the (V-1)th partial sum of this divergent series sums to [V*(V-1)]/2, which is bound by V^2. Therefore the upper bound for the time complexity for a single breadth first search from a single activated transition from an input species is O(V + E) ≤ O(V+V^2) => O(V^2).<br><br> |
For our network, a breadth first search of time complexity O(V^2) happens at every activated transition m.<br> | For our network, a breadth first search of time complexity O(V^2) happens at every activated transition m.<br> | ||
- | Therefore, the LSAS complexity = O(mV^2)<br> | + | Therefore, the LSAS complexity = O(mV^2)<br><br> |
+ | Paths generated using the LSAS search would resemble Figure 2 where a species node directly activates an operon, which produces a singular species node. The LSAS algorithm would not be able to capture the logic encompassed within Figure 3 where multiple species nodes are required to activate the middle input transition. | ||
<h4><b>NLSAS</b></h4> | <h4><b>NLSAS</b></h4> | ||
Line 598: | Line 1,161: | ||
<br> | <br> | ||
Similar to LSAS, this algorithm also begins by constructing a subnetwork of paths that can lead to the output of interest from a specific input. This generates a list of edges to be used in the traceback algorithm. Assuming every edge could be explored, the algorithm runs in O(E) time. As shown for the LSAS algorithm, O(E) <= O(V^2), and also returns a list that will be explored also in O(E) size or O(V^2). Again, a new list is constructed for each potentially activated transition, thus giving this entire first step a run time complexity of O(m*V^2). | Similar to LSAS, this algorithm also begins by constructing a subnetwork of paths that can lead to the output of interest from a specific input. This generates a list of edges to be used in the traceback algorithm. Assuming every edge could be explored, the algorithm runs in O(E) time. As shown for the LSAS algorithm, O(E) <= O(V^2), and also returns a list that will be explored also in O(E) size or O(V^2). Again, a new list is constructed for each potentially activated transition, thus giving this entire first step a run time complexity of O(m*V^2). | ||
- | <br> | + | <br><br> |
Now, for each of the O(m) list of edges constructed from the last step, a traceback algorithm is run for this path from the output species set to return a subnetwork of operons that could form a system that leads to the production of the desired output. From the desired output species, the traceback algorithm searches through the list of edges E to find the transitions for each operon contained in the path that produces the output species of interest. Since every transition in the set E must be checked, the algorithm runs in O(E) or O(V^2) time. At worst, every operon must be checked, resulting in a complexity of O(m*V^2) for this step. | Now, for each of the O(m) list of edges constructed from the last step, a traceback algorithm is run for this path from the output species set to return a subnetwork of operons that could form a system that leads to the production of the desired output. From the desired output species, the traceback algorithm searches through the list of edges E to find the transitions for each operon contained in the path that produces the output species of interest. Since every transition in the set E must be checked, the algorithm runs in O(E) or O(V^2) time. At worst, every operon must be checked, resulting in a complexity of O(m*V^2) for this step. | ||
- | <br> | + | <br><br> |
Now, in order to determine which species were required to activate the operons now connected to the output species, the database of transitions is searched to identify which transitions will have to be activated. This search happens across an O(m) space for each of the O(V) operons that could be activating the output. Therefore, this next time step happens in O(mV) time. The first two steps together now will happen as O(m*(V2+mV)). At the end of these steps, the path now has O(m*V) species. | Now, in order to determine which species were required to activate the operons now connected to the output species, the database of transitions is searched to identify which transitions will have to be activated. This search happens across an O(m) space for each of the O(V) operons that could be activating the output. Therefore, this next time step happens in O(mV) time. The first two steps together now will happen as O(m*(V2+mV)). At the end of these steps, the path now has O(m*V) species. | ||
+ | <br><br> | ||
+ | However, it is important to note here that at the step when possible operons are being explored, the search will have a time complexity of O(E), and will never happen more than O(m*V) times, which is the bound for the number of unique species in the system. For the following step, the search for species activating all operons on this increment will have a time complexity of O(m), but it will never happen more than O(V) times, which is the bound for the number of unique operons in the system. Therefore, for a full iteration of these two steps in the traceback algorithm, it will be bounded by the time complexity of O(V^2*mV + m*V). This traceback step will happen until the depth of the entire path generated from the LSAS step has been explored, which is bound by O(V). Thus, the time complexity for the traceback of a single path is O(mV^4+mV^2). Then complexity of the path generation is added for a complexity of O(mV^4+mV2+V^2). Now consider that this path generation and traceback happens for every single activated transition by the input species, which gives O(m*(mV^4+mV^2+V^2))=>O(m^2*V^4). | ||
+ | <br><br> | ||
+ | |||
+ | <figure> | ||
+ | <img src="http://i.imgur.com/pxzwTMO.png?1"> | ||
+ | <figcaption><font size = "2px">Figure 3 - Operon representation of a simple circuit and a potential output from NLSAS search algorithm where species from multiple operons are required to activate the next operon. This path could not be captured by the LSAS algorithm because the incorporation of multiple species to activate one operon is not possible.</font> | ||
+ | </figcaption> | ||
+ | </figure> | ||
<br> | <br> | ||
- | |||
- | < | + | <figure> |
- | + | <img src="http://i.imgur.com/x5dKWIL.png?1" width="704"> | |
+ | <figcaption><font size = "2px">Figure 4 - Petri Net representation Figure 3 where multiple species nodes are required to activate one input transition. First two species nodes activate each of the three initial input transitions, which in turn activate three separate operons. The output of each operon is an output transition which points to a species node that contains all output species produced by that operon. The three species nodes in the center of the graph trigger the final input transition, triggering the final operon, and producing the final species node. This expansion would add an additional layer of complexity to the NLSAS algorithm that is unnecessary given the previously explained linearity of the operon nodes.</font> | ||
+ | </figcaption> | ||
+ | </figure> | ||
<br> | <br> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | <b><h3>References</h3></b> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | < | + | <SPAN class="ft4">[1]</SPAN><SPAN class="ft26">Carl Adam Petri and Wolfgang Reisig (2008) Petri net. Scholarpedia, 3(4):6477</SPAN> |
- | Carl Adam Petri and Wolfgang Reisig (2008) Petri net. Scholarpedia, 3(4):6477 | + | |
<br><br> | <br><br> | ||
- | "OWL 2 Web Ontology Language Document Overview". W3C. 2009-10-27. | + | <SPAN class="ft4">[2]</SPAN><SPAN class="ft26">"<i>OWL 2 Web Ontology Language Document Overview</i>". W3C. 2009-10-27.</SPAN> |
<br><br> | <br><br> | ||
- | An Introduction to Factor Graphs by Hans-Andrea Loeliger, IEEE Signal Processing Magazine,January 2004, pp. 28–41. | + | <SPAN class="ft4">[3]</SPAN><SPAN class="ft26">An Introduction to Factor Graphs by Hans-Andrea Loeliger, IEEE Signal Processing Magazine,January 2004, pp. 28–41.</SPAN> |
+ | |||
</div> | </div> | ||
- | <div id = "w5">< | + | <div id = "w5"><h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Database</b></h2> |
- | + | ||
- | < | + | |
- | < | + | <h3><b>Data Collection</b></h3> |
- | < | + | |
- | < | + | The database was built to meet the needs of synthetic biology and genetic circuit building by offering literature references, storage, maintenance and upload of genetic devices as well as SBML text files for network data exchange.1 Genetic circuit information is not easily extracted from papers making it difficult to begin any genetic device construction. SBiDer provides a centralized library of relevant genetic circuit references in the form of pubmed id’s so that synthetic biologists can quickly and easily access experimentally backed information. Outsourcing the literature search to SBiDer gives synthetic biologists an interface with reliably relevant information. As well as providing literature references, SBiDer extracts the necessary details of each genetic device so that synthetic biologists can build devices using essential genetic building blocks. As a means of further involving the biology community, SBML data exchange files for our genetic parts and SBiDer network are accessible by using the SBiDer API. Using SBML provides further data analysis of the SBiDer network by taking advantage of approximately 200 SBML supported softwares such as Cytoscape, Systems Biology Workbench and more (www.cytoscape.org) (http://sbw.kgi.edu/research/sbwintro.htm) (www.sbml.org). |
- | < | + | <br><br> |
- | </ | + | |
- | + | <div class = "row text-center"> | |
+ | <figure> | ||
+ | <img src="http://i.imgur.com/3qqxiao.jpg?1" width="604" height="308"> | ||
+ | <figcaption><font size = "2px">Figure 1. Plasmids used to create a genetic circuit know as μBE (Hoon Hong, 2012).</font></figcaption> | ||
+ | </figure> | ||
</div> | </div> | ||
+ | <h3><b>Petri Net and Schema Design</b></h3> | ||
+ | |||
+ | This project integrated the Petri net model by describing interactions between species and operons. Species act as input for operon activation and output. In the context of biology, a simple genetic circuit is broken down into operons, and operons can be broken down into their components: promoters, regulating elements, and coding sequences. Combining the biology and Petri net formalism, genetic device information is captured and makes for a database schema that innately captures a network of genetic device interactions. The Petri net model inspired schema works by atomizing the necessary genetic circuit information so the parts necessary for genetic circuit design are represented. Operons and species are represented as equivalents of Petri net chemical species while the interaction of species with operons and the production of species by operons is represent by input and output transitions namely. Genetic circuit design is now formalized for the biology community under the Petri net model and stored inside the SBiDer database. | ||
+ | |||
+ | <h3><b>Community Based Support</b></h3> | ||
+ | |||
+ | A single genetic circuit has a set of responses based on the chemical or environmental factors present in a biological system. By introducing new genetic circuits into the SBiDer network the biology community benefits from new devices with new functionalities or improved functionality, and when introduced into the SBiDer network creates a multitude of new genetic device combinations. The SBiDer website includes a device upload page to encourage the collaboration of the synthetic biology community to keep expanding the database and network for improved and up to date genetic devices. The database also maintains updated SBML forms of all genetic device parts and the SBiDer network so the biology community can continue working on the most up to date information. | ||
+ | |||
+ | <h3><b>Technologies</b></h3> | ||
+ | |||
+ | The database was implemented using SQLite, a widely used database management system, and the SQLite3 Python module. SQLite is developed and maintained by multiple companies including Oracle and Adobe (www.sqlite.com). With it’s widespread use and fast queries, SQLite is a powerful tool to use for collaboration with the biological community. Python’s success within the biology community, it’s ease of use and compatibility with major operating systems also makes for an effective combination with SQLite and computational work in biology (“Programming for Biologists”, 2014). Using these two technologies, a Python based API was create that encourages the synthetic biology community to participate in the database expansion and operation as well as SBML file access. | ||
+ | |||
+ | <br> | ||
+ | |||
+ | |||
+ | |||
+ | <h3><b>Database Schema in Depth</b></h3> | ||
+ | |||
+ | The plasmid table stores the name and pubmed literature references allowing users to easily find out more about their given device. The plasmid is then broken down into operons where multiple operons can be mapped to the same plasmid. In order to capture this relationship, a table of plasmid id and operon id allows for multiple operons relating to a single plasmid. A direction column in the plasmid-operon relationship table also allows users to specify the directionality of the operon inside of the given plasmid as multiple operon sequences can can be found with presence in either strands of the DNA. Operons are also mapped exclusively to their plasmid, meaning that identical operons from different plasmids require insertion into the database with a mapping to the corresponding “parent” plasmid. The operon table itself contains information on the operon sbol and sbml files representations. <br><br> | ||
+ | |||
+ | The input transition table explains the type of logic that is being used for operon activation as either AND or OR logic. AND logic transitions are transitions which must take in all corresponding inputs species for the activation of the operon. OR logic transitions are transitions which require a single input species or multiple input species but do not require all. More complex relations are made between the input species and the input transitions table. <br><br> | ||
+ | |||
+ | Input transition and species interactions are captured using a separate relationship table. Using this separate input transition species relationship table allows for more flexibility when describing the boolean logic at a given input transition. The same species may interact as a repressor or as activator depending on what input transition it encounters. Therefore, the table attribute repression gives a true or false statement under the repression column describing the role of that species in a given operon activation. All complex logic types, NAND; NOR; XOR; and XNOR, are captured solely by using the atomic logic types, AND; OR; and NOT. So a NAND input transition would be represented as an AND inside the input transition table with repressor molecules as the interacting species and TRUE values in the repression columns of these species. <br><br> | ||
+ | |||
+ | Operons also have associated output transitions which describe the events and species produced after operon activation. These transitions unlike input transitions have very simple logic, namely IF. The reason for this is, that once an operon is activated then the production of the protein will inevitably occur. Just like input transitions and species, output transitions and species also have a relationship table with multiple species mapping to a single output transition when applicable. This illustrates the idea that operons are a sequence of genes that when activated, transcribe mRNA and protein species. | ||
+ | |||
+ | <br><br><br> | ||
+ | |||
+ | <figure> | ||
+ | <img src="http://i.imgur.com/0QGqZEI.png?1"><br><br> | ||
+ | <figcaption><font size = "2px">Figure 2. An entity relational diagram displaying the sbider database. Entities and their corresponding attributes are like-colored. Relationships represented by the grey diamonds may also store attributes tied to entities to illustrate that certain information is the result of a relationship.</font></figcaption> | ||
+ | </figure> | ||
+ | |||
+ | |||
+ | <b><h3>References</h3></b> | ||
+ | |||
+ | <SPAN class="ft4">[1]</SPAN><SPAN class="ft26">Hucka, M., 25 Oct. 2002., "<i>The Systems Biology Markup Language (SBML): A Medium for | ||
+ | Representation and Exchange of Biochemical Network Models</i>". Oxford Journals, www.http://bioinformatics.oxfordjournals.org (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[2]</SPAN><SPAN class="ft26">"Cytoscape Core Features." <i>What Is Cytoscape?</i>, www.cytoscape.org (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[3]</SPAN><SPAN class="ft26">"<i>Download SBW File A Bug Browse Forum.</i>" http://sbw.kgi.edu/research/sbwintro.htm (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[4]</SPAN><SPAN class="ft26">"<i>SBML Software Showcase.</i>" 10 June 2014., The System Biology Markup Language, www.sbml.org (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[5]</SPAN><SPAN class="ft26">Baez, John C. "<i>Petri Nets.</i>" www.johncarlosbaez.wordpress.com (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[6]</SPAN><SPAN class="ft26">"<i>SQLite Home Page.</i>" SQLite Home Page. www.sqlite.org (October 15, 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[7]</SPAN><SPAN class="ft26">"<i>Why Python?</i>" www.programmingforbiologists.org (15 October 2014) | ||
+ | </SPAN><br><br> | ||
+ | <SPAN class="ft4">[8]</SPAN><SPAN class="ft26">"<i>NDEx About.</i>" www.ndexbio.org (October 15, 2014)</SPAN><br><br> | ||
+ | <SPAN class="ft4">[9]</SPAN><SPAN class="ft26">Hoon Hong, Seok. 03 Jan. 2012, "<i>Synthetic Quorum-sensing Circuit to Control Consortial Biogilm Formation and Dispersal in a Microfluidic Device</i>." Nature.com. Nature Publishing Group, (October 17, 2014)</SPAN><br> | ||
+ | </div> | ||
+ | |||
+ | <div id = "w6"><h2 style = "border-bottom: 0px solid #57c4d0;" class = "text-center"><b>Modeling</b></h2> | ||
- | |||
- | |||
<ol> | <ol> | ||
- | <li>What is this program?</li>< | + | <b><li>What is this program?</li></b> |
- | Synthetic biology has been developed for a decade and is being expected to evolve the academic society because of its standardization and convenience.<SPAN class="ft5">1, 2 </SPAN>This novel technology has already yielded bunches of applications on the field of pharmacy<SPAN class="ft5">1, 2 </SPAN>and therapeutics<SPAN class="ft5">3 </SPAN>while also showing its potential on energy industry.<SPAN class="ft5">5 </SPAN>However, a standardized model is eagerly required to be established because it will facilitate the exploration of synthetic biology. Therefore, we developed the software – AutoModel, which integrates dozens of models of simple devices and stipulates the I/O interface then provides user standardized modeling path with high degree of freedom.< | + | Synthetic biology has been developed for a decade and is being expected to evolve the academic society because of its standardization and convenience.<SPAN class="ft5">1, 2 </SPAN>This novel technology has already yielded bunches of applications on the field of pharmacy<SPAN class="ft5">1, 2 </SPAN>and therapeutics<SPAN class="ft5">3 </SPAN>while also showing its potential on energy industry.<SPAN class="ft5">5 </SPAN>However, a standardized model is eagerly required to be established because it will facilitate the exploration of synthetic biology. Therefore, we developed the software – AutoModel, which integrates dozens of models of simple devices and stipulates the I/O interface then provides user standardized modeling path with high degree of freedom.<br><br> |
- | < | + | This python script is being expected to help noviciate to construct their model and decide how much experimental data should be collected. In the coming section, we will demonstrate how this software works and how it help <NOBR>wet-lab</NOBR> experiments. Meanwhile, some instance are listed for illumination.<br><br> |
- | < | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | <b><li>How does it work?</li></b> | ||
+ | During the synthetic biological procedure, substantial biochemical reaction happens <SPAN class="ft7">in vivo </SPAN>or <SPAN class="ft7">in vitro</SPAN>. Generally speaking, those gene expression molecular level events could be represented by mass equation:<SPAN class="ft8">4</SPAN><br><br> | ||
+ | <div class = "row text-center"> | ||
+ | k<SPAN class="ft9">1</SPAN><SPAN class="ft4">[</SPAN>A<SPAN class="ft4">]</SPAN><SPAN class="ft10">aq </SPAN><SPAN class="ft4">+ </SPAN>k<SPAN class="ft9">2</SPAN><SPAN class="ft4">[</SPAN>B<SPAN class="ft4">]</SPAN><SPAN class="ft10">aq </SPAN>k<SPAN class="ft9">3</SPAN><SPAN class="ft4">[</SPAN>A B<SPAN class="ft4">]</SPAN><SPAN class="ft10">aq</SPAN><br><br></div> | ||
+ | where <SPAN class="ft11">k</SPAN><SPAN class="ft12">1</SPAN>, <SPAN class="ft11">k</SPAN><SPAN class="ft12">2 </SPAN>and <SPAN class="ft11">k</SPAN><SPAN class="ft12">3 </SPAN>are reaction coefficients. One of best mathematical representation for this reaction formula is differential equation. The differential equation is a mathematical equation about some continuously varying quantities and their rates of change in time that relates some function of one or more variables with its derivatives. Therefore, differential model is widely employed on the chemical modeling. However, constructing a precise model for any specific reaction is always complex because dozens of material and formulae has to be considered.<br><br> | ||
+ | |||
+ | But now, a novel technique has been developed to help you figure out this problem. Inspired by the primary idea of synthetic biology, the AutoModel separates existed simple device as individual parts and integrates them into the device file which is a <NOBR>plug-in</NOBR> for main program. There are hundreds of mathematical expressions in the device file that represents those relationship between input(reactant) and output(resultant). Customers could add, adapt or ampu- tate any functions, parameters and terms to optimally fitting their experimental data and theoretical model. Besides, preseted device functions could be called for predict your experimental result.<br><br> | ||
+ | |||
+ | <b><li> How to use it?</li></b><br> | ||
+ | There are 3 kinds of documents included in the program package.<br><br> | ||
+ | <b>3.1</b> Device<br><br> | ||
+ | All of differential equations are stored in the ’DEVICE.py’ file which is a list of import subfunction of python. Those subfunction are defined in the same format that allowing user to recall them by the same method. The format is <br><br> | ||
+ | |||
+ | <div style="font-weight: normal"> | ||
+ | def device’s name (od , input_1, input_2, output, dt = 0.1) : <br> | ||
+ | parameters<br> | ||
+ | input1 = input_1 + (differential equation of input_1)* od* d t<br> | ||
+ | input2 = input_2 + (differential equation of input_2)* od* d t<br> | ||
+ | output1 = output + (differential equation of output)* od* d t<br> | ||
+ | return (input1 , input2, output)<br> | ||
+ | where od is optical density and dt is integral time step. | ||
+ | </div><br><br> | ||
+ | |||
+ | <b>3.2</b> Network Document<br><br> | ||
+ | |||
+ | The ’network.txt’ is the file of network which describes the connection among simulated model. This text file is | ||
+ | a table. The first column is device’s name which corresponds to the name in ’DEVICE.py’. The next 2 columns are | ||
+ | input_1 and its initial value. It could be either inducer’s name or device’s name from first column. The 4th and 5th | ||
+ | represent input_2. Last 2 columns are output’s name and its value. If the word in any row is output, it means that the | ||
+ | program will return the output value of this device. <br><br> | ||
+ | |||
+ | <b>3.3</b> Main Program<br><br> | ||
+ | |||
+ | The main code for simulation is written in ’demo python.py’ which contains calculating function for growing curve, integrating function for ODE and a plotting part. Here we use an instance for illustration how to use this software.<br> | ||
+ | First, there is a default growing curve provided by demo. The initial cell density(OD) is 0.2 while growing rate is<br> | ||
+ | 0.3 per 6 mins. You can change the maximum value of density by change the parameter <SPAN class="ft11">k</SPAN><SPAN class="ft12">1 </SPAN>in the function grow. Second, function ’Calculate’ is an integral function that calculating the output value while reading the network from network file from top to bottom and then loop this process until the end of simulation time. In this case, the demo network is invested by David L. Shis and Matthew R. Bennett.<SPAN class="ft8">6</SPAN><br><br> | ||
+ | Final, ’Calculate’ will return a matrix of time scalar, optical density and output to our plotting script.<br><br> | ||
+ | |||
+ | <b><li>Demonstration</li></b> | ||
+ | |||
+ | It is reasonable to assume that our host is incubated in ideal environment that the curve of optical density (OD) perfectly matches the ’S’ shape model. In other word, the growing curve is integrated by logistic model<br><br> | ||
+ | |||
+ | |||
+ | <div class = "row text-center"> | ||
+ | <img src = "http://i.imgur.com/RhgJlc0.png?1"> | ||
+ | </div><br><br> | ||
+ | |||
+ | where <SPAN class="ft7">k</SPAN><SPAN class="ft10">grow </SPAN>is producing rate of cells and <SPAN class="ft7">k</SPAN><SPAN class="ft10">max </SPAN>is maximun value of density of cells, i.e. 1=(<SPAN class="ft7">OD</SPAN><SPAN class="ft10">max</SPAN>). | ||
+ | <br><br> | ||
+ | The AND gate with two devices achieved by Shis, David L., and Matthew R. Bennett<SPAN class="ft8">6 </SPAN>has been modeled for two separated parts that each one could be recalled as an individual function to represent the corresponding device. The ODEs for these 2 devices are demonstrated below.<br><br> | ||
+ | When pTara is induced by arabinose, this circuit produces LacI then stimulates its downstream device pET28. As result, the output of pTara is consumable inducer for circuit pET28. Therefore, we have 2 equations for pTara, which are<br><br> | ||
+ | |||
+ | <div class = "row text-center"> | ||
+ | <img src = "http://i.imgur.com/WjS4BrQ.png?1"> | ||
+ | </div><br><br> | ||
+ | and <br><br> | ||
+ | <div class = "row text-center"> | ||
+ | <img src = "http://i.imgur.com/CbJYFKB.png?1"> | ||
+ | </div> | ||
+ | <br><br> | ||
+ | |||
+ | where OD is optical density and <SPAN class="ft7">x</SPAN><SPAN class="ft9">1 </SPAN>is the input of device pTara, i.e., arabinose. Meanwhile, <SPAN class="ft7">y </SPAN>is the output of device p- Tara and input of device pTara. The first equation represents the consumption of inducer that will give us an exponatial decay of the value of its input. The second equation is modeled for the output of pTara. The positive term corresponds to the producing rate of LacI whereas the negative term is of consuming rate. <br><br> | ||
+ | <div class = "row text-center"> | ||
+ | <img class = "text-center" src = "http://i.imgur.com/mBru0Nz.png?1"><br><br> | ||
+ | </div> | ||
+ | <br> | ||
+ | As principle employed on modeling pTara, we also provide a differential equation for pET28 which is<br><br> | ||
+ | <div class = "row text-center"> | ||
+ | <img src = "http://i.imgur.com/BKDkbdl.png?1"><br><br> | ||
+ | </div> | ||
+ | where z is the output of device pET28, i.e., the value of GFP. Again the positive term is the producing rate of GFP but | ||
+ | the negative term is of decomposition rate. <br><br> | ||
+ | Finally, we link these 2 device to finalize the model of AND gate. The plot of the simulation result shows that our | ||
+ | model approximately fittings the experimental data.<br> | ||
+ | In this work, we successfully construct a new approaching of modeling for synthetic biology by applying the idea | ||
+ | of this field which is about modulization. The modulized modeling functions which are using as bio-brick provide a | ||
+ | novel method to academic society that allows circuit consturctors predict their experimental data. Furthermore, it gives | ||
+ | us chance to develop the virtual laboratory so that dramatically reduces the laborious work in lab. | ||
+ | </ol> | ||
+ | <br> | ||
+ | <b><h3>References</h3></b> | ||
+ | |||
+ | <SPAN class="ft4">[1]</SPAN><SPAN class="ft26">Ellis, Tom, Xiao Wang, and James J. Collins. <NOBR>”Diversity-based,</NOBR> <NOBR>model-guided</NOBR> construction of synthetic gene networks with predicted functions.” </SPAN><SPAN class="ft7">Nature biotechnology</SPAN><SPAN class = "ft26"> 27.5 (2009): <NOBR>465-471.</NOBR></SPAN> | ||
+ | <br><br> | ||
+ | <SPAN class="ft4">[2]</SPAN><SPAN class="ft26">Andrianantoandro, Ernesto, et al. ”Synthetic biology: new engineering rules for an emerging discipline.” </SPAN><SPAN class="ft7">Molecular systems biology</SPAN> <SPAN class = "ft26">2.1 (2006).</SPAN> | ||
+ | <br><br> | ||
+ | <SPAN class="ft4">[3]</SPAN><SPAN class="ft26">Lu, Timothy K., and James J. Collins. ”Engineered bacteriophage targeting gene networks as adjuvants for an- tibiotic therapy.” </SPAN><SPAN class="ft7">Proceedings of the National Academy of Sciences</SPAN><SPAN class = "ft26"> 106.12 (2009): <NOBR>4629-4634.</NOBR></SPAN> | ||
+ | <br><br> | ||
+ | <SPAN class="ft4">[4]</SPAN><SPAN class="ft26">Kaznessis, Yiannis N. ”Models for synthetic biology.” </SPAN><SPAN class="ft7">BMC systems biology</SPAN><SPAN class = "ft26"> 1.1 (2007): 47.</SPAN> | ||
+ | <br><br> | ||
+ | <SPAN class="ft4">[5]</SPAN><SPAN class="ft26">Lee, Sung Kuk, et al. ”Metabolic engineering of microorganisms for biofuels production: from bugs to synthetic biology to fuels.” </SPAN><SPAN class="ft7">Current opinion in biotechnology</SPAN><SPAN class = "ft26"> 19.6 (2008): <NOBR>556-563.</NOBR></SPAN> | ||
+ | <br><br> | ||
+ | <SPAN class="ft4">[6]</SPAN><SPAN class="ft27">Shis, David L., and Matthew R. Bennett. ”Library of synthetic transcriptional AND gates built with split T7 RNA polymerase mutants.” </SPAN><SPAN class="ft7">Proceedings of the National Academy of Sciences</SPAN><SPAN class = "ft26"> 110.13 (2013): <NOBR>5028-5033.</NOBR></SPAN> | ||
</div> | </div> | ||
Line 677: | Line 1,382: | ||
$('h1.firstHeading').remove(); | $('h1.firstHeading').remove(); | ||
$("#w1click").click(function(){ | $("#w1click").click(function(){ | ||
- | $("#w1").show(); | + | $("#w1").show();$("#w8").hide(); |
- | $("#w2").hide(); | + | $("#w2").hide();$("#w9").hide(); |
- | $("#w3").hide(); | + | $("#w3").hide();$("#w10").hide(); |
$("#w4").hide(); | $("#w4").hide(); | ||
$("#w5").hide(); | $("#w5").hide(); | ||
$("#w6").hide(); | $("#w6").hide(); | ||
+ | $("#w7").hide(); | ||
}); | }); | ||
$("#w2click").click(function(){ | $("#w2click").click(function(){ | ||
- | $("#w1").hide(); | + | $("#w1").hide();$("#w8").hide(); |
- | $("#w2").show(); | + | $("#w2").show();$("#w9").hide(); |
- | $("#w3").hide(); | + | $("#w3").hide();$("#w10").hide(); |
$("#w4").hide(); | $("#w4").hide(); | ||
$("#w5").hide(); | $("#w5").hide(); | ||
$("#w6").hide(); | $("#w6").hide(); | ||
+ | $("#w7").hide(); | ||
}); | }); | ||
Line 698: | Line 1,405: | ||
$("#w3click").click(function(){ | $("#w3click").click(function(){ | ||
- | $("#w1").hide(); | + | $("#w1").hide();$("#w7").hide(); |
- | $("#w2").hide(); | + | $("#w2").hide();$("#w8").hide(); |
- | $("#w3").show(); | + | $("#w3").show();$("#w9").hide(); |
- | $("#w4").hide(); | + | $("#w4").hide();$("#w10").hide(); |
$("#w5").hide(); | $("#w5").hide(); | ||
$("#w6").hide(); | $("#w6").hide(); | ||
Line 708: | Line 1,415: | ||
$("#w4click").click(function(){ | $("#w4click").click(function(){ | ||
- | $("#w1").hide(); | + | $("#w1").hide();$("#w7").hide(); |
- | $("#w2").hide(); | + | $("#w2").hide();$("#w8").hide(); |
- | $("#w3").hide(); | + | $("#w3").hide();$("#w9").hide(); |
- | $("#w4").show(); | + | $("#w4").show();$("#w10").hide(); |
$("#w5").hide(); | $("#w5").hide(); | ||
$("#w6").hide(); | $("#w6").hide(); | ||
Line 718: | Line 1,425: | ||
$("#w5click").click(function(){ | $("#w5click").click(function(){ | ||
- | $("#w1").hide(); | + | $("#w1").hide();$("#w7").hide(); |
- | $("#w2").hide(); | + | $("#w2").hide();$("#w8").hide(); |
- | $("#w3").hide(); | + | $("#w3").hide();$("#w9").hide(); |
- | $("#w4").hide(); | + | $("#w4").hide();$("#w10").hide(); |
$("#w5").show(); | $("#w5").show(); | ||
$("#w6").hide(); | $("#w6").hide(); | ||
Line 728: | Line 1,435: | ||
$("#w6click").click(function(){ | $("#w6click").click(function(){ | ||
- | $("#w1").hide(); | + | $("#w1").hide();$("#w7").hide(); |
- | $("#w2").hide(); | + | $("#w2").hide();$("#w8").hide(); |
- | $("#w3").hide(); | + | $("#w3").hide();$("#w9").hide(); |
- | $("#w4").hide(); | + | $("#w4").hide();$("#w10").hide(); |
$("#w5").hide(); | $("#w5").hide(); | ||
$("#w6").show(); | $("#w6").show(); | ||
+ | |||
+ | }); | ||
+ | |||
+ | |||
+ | $("#w7click").click(function(){ | ||
+ | $("#w1").hide();$("#w7").show(); | ||
+ | $("#w2").hide();$("#w8").hide(); | ||
+ | $("#w3").hide();$("#w9").hide(); | ||
+ | $("#w4").hide();$("#w10").hide(); | ||
+ | $("#w5").hide(); | ||
+ | $("#w6").hide(); | ||
+ | |||
+ | }); | ||
+ | |||
+ | $("#w8click").click(function(){ | ||
+ | $("#w1").hide();$("#w7").hide(); | ||
+ | $("#w2").hide();$("#w8").show(); | ||
+ | $("#w3").hide();$("#w9").hide(); | ||
+ | $("#w4").hide();$("#w10").hide(); | ||
+ | $("#w5").hide(); | ||
+ | $("#w6").hide(); | ||
+ | |||
+ | }); | ||
+ | |||
+ | $("#w9click").click(function(){ | ||
+ | $("#w1").hide();$("#w7").hide(); | ||
+ | $("#w2").hide();$("#w8").hide(); | ||
+ | $("#w3").hide();$("#w9").show(); | ||
+ | $("#w4").hide();$("#w10").hide(); | ||
+ | $("#w5").hide(); | ||
+ | $("#w6").hide(); | ||
+ | |||
+ | }); | ||
+ | |||
+ | $("#w10click").click(function(){ | ||
+ | $("#w1").hide();$("#w7").hide(); | ||
+ | $("#w2").hide();$("#w8").hide(); | ||
+ | $("#w3").hide();$("#w9").hide(); | ||
+ | $("#w4").hide();$("#w10").show(); | ||
+ | $("#w5").hide(); | ||
+ | $("#w6").hide(); | ||
}); | }); | ||
Line 761: | Line 1,509: | ||
$("#achieve").click(function(){ | $("#achieve").click(function(){ | ||
window.location.href="https://2014.igem.org/Team:UCSD_Software/SoftwareAchievements"; | window.location.href="https://2014.igem.org/Team:UCSD_Software/SoftwareAchievements"; | ||
+ | }); | ||
+ | $("#doc").click(function(){ | ||
+ | window.location.href="https://2014.igem.org/Team:UCSD_Software/Documentation"; | ||
}); | }); | ||
$("#safety").click(function(){ | $("#safety").click(function(){ |
Latest revision as of 03:46, 18 October 2014
Topics
Description
Human Practices
Neil Gershenfeld, a physicist who is the director of the Center for Bits and Atoms, said that the improvement in the capacity to read and write biological genes has given rise to the possibility of “spectacular advances,” like the ability to use a computer to design a complete genome, output it, insert it in a cell and in effect create life from scratch. -NY TimesIt is clear that the field of synthetic biology has made leaps and bounds in recent years, from the introduction of genetically modified food to the cellular production of polymers with incredible tensile strength. What Gershenfeld is stating in the above quote is that previously, to make a significant contribution to the field of synthetic biology, there was a certain element of trial and error. What does this gene do? How does it interact with other species within the cell? How can I make my output more efficient and effective? And the biology community has come up with significant answers for each of these: gene sequencing and indexing to understand gene presence and function, documentation of chemical interactions, and investigations into crosstalk and modeling of the in vivo cellular environment.
SBiDer is the spectacular advance to which Gershenfeld is referring. Our application allows synthetic biologists of all levels to contribute in a significant way and to develop their ideas and streamline the synthetic design process. SBiDer is built upon the established body of work in the field of synthetic biology to not only simplify the design of biological circuits, but to increase the ability of users to visualize their circuits in silico. By simplifying the design and visualization process, our application allows users to explore the myriad of papers that compose our database simultaneously, without having to traverse typical scientific jargon that usually precludes young scientists from fully fleshing out their ideas. In this way, SBiDer has opened the field of synthetic biology for users of all levels, from high school freshmen to private investigators.
By opening the field to aspiring synthetic biologists and decreasing the time between idea conceptualization and wet lab production, SBiDer has removed the barriers of entry into the world of synthetic genetic production, thereby not only establishing a comprehensive database of operons and their interactions with one another, but also enabling new, novel discoveries between operons in new, novel ways.
Enabling young scientists to enter the field of synthetic biology means nothing if they are unable to generate data of some significance, but it is important to understand that SBiDer enables just that.
The Defense Advanced Research Projects Agency (DARPA) started the Living Foundries project to fund many scientific endeavors to aid in the transformation of biology into an engineering endeavor by pursuing biological projects with efficiency and efficacy and establishing the technical means for other scientists to do so. DARPA funds projects in the hope that some will aid in the government in its continual pursuit of national security. One recent project to emerge from the Living Foundries project is called 1,000 Molecules, aimed at building a “scalable, integrated, rapid design and prototyping infrastructure for the facile engineering of biology.” SBiDer itself meets these criteria by aiding users in the pursuit of novel circuits by combining operons in previously unimagined ways, but it also allows others to complete projects that fall within this criteria as well. One such project that would have benefitted from the service that the SBiDer application provides is the Spider Silk project from the Lewis lab. The project focused on genetically engineering E. Coli to produce spider silk in mass quantities to be potentially used in protective equipment similar to kevlar. Their polymer relies highly on arabinose, which is a species with many connections within the web of SBiDer database.
The SBiDer application has a variety of potential uses within the synthetic biology community. The cultivation of algae for biofuels is an inefficient process that could be aided by genetically engineered colonies that produce high lipid content but also grow efficiently in culture could drastically reduce international dependence upon fossil fuels.
Synthetic biology also has the potential for significant impacts in the field of agriculture. Drought resistant wheat has made the year-round cultivation of wheat a possibility, and has made cheap food for many available. Of the potential inhibitors to proper and sustained crop growth, drought is the most prohibitive. By reducing the dependence of crops on water, food production could be expanded to previously unexplored regions. The ability of our application to accept new operons to our database means that the wide acceptance and use of the SBiDer application will enable projects such as the drought tolerance of plants to build on the success of previous endeavors and to integrate information from other synthetic biology projects.
In addition to defense, biofuels, and agriculture, SBiDer also has the potential to advance health care. The ability to genetically engineer cells to produce specific outputs in response to specific small molecules cannot be understated. One recent development in this field is the production of glucose in genetically engineered cells. These implantable cells have the potential to reduce the prevalence of diabetes, which has become a significant health challenge for adults and adolescents alike.
Many more interesting and current uses of synthetic biology in various industries are also described by the Biotechnology Industry Organization. We hope that as our database increases in size and the more operons we implement, SBiDer will be involved more frequently in the discovery of new and novel uses of existing biology to help drive the field of synthetic biology and society forward.
Validation
We first validated the SBiDer application by searching for circuits described in the literature sources we used to construct the SBiDer database. As expected we were able to successfully retrieve all the circuits used to for the database. We also used this set of devices during the development of our web application; minimally our application should be able to find known circuits used to construct our database. The full list is below:Inputs | Outputs |
---|---|
LacI,IPTG | gfp |
OHHL,luxR | gfp |
araC,Lara | yfp |
na | araC |
tetR,aTc | yfp |
na | tetR |
lasR,PAI-1 | yfp |
na | lasR |
aTc,tetR | yfp |
na | araC,tetR |
na | araC,lasR |
lasR, | PAI-1 |
na | tetR,lasR |
aTc,tetR | cI |
araC,Lara | cI |
lasR,PAI-1 | cI |
tetR,aTc | cI |
tetR,aTc | gfp |
cI | LacI |
LacI,IPTG | cI |
LacI,IPTG | tetR |
LacI,IPTG | cI,gfp |
tetR,aTc | LacI |
LacI,IPTG | tetR,gfp |
LacIq,IPTG | gfp |
na | lacIq |
araC,Lara | gfp |
na | luxR |
LuxR,AHL | gfp |
LacIq,IPTG | hrpR |
LuxR,AHL | hrpR |
LacIq,IPTG | cI |
hrpR,hrpS | gfp |
hrpR,hrpS | cI |
Sal | supD |
na | nahR |
tetR | gfp |
araC,Lara | T7ptag |
T7ptag,supD | gfp |
AHL,luxR | lacI |
AHL,lacI | rfp |
IPTG,lacI | ecfp |
na | lacI |
IPTG,lacI | rfp |
IPTG,LacI | gfp |
IPTG,LacI | lacI |
araC,Lara | lacI |
tetR,aTc | luxR |
LacI,IPTG | AHL_luxR |
araC,Lara | AHL_luxR |
AHL,luxR | lacZalpha-ccdB |
aTc, | tetR |
LuxR, | PAI-2 |
lacI,IPTG | cI |
lacI,IPTG | yfp |
araC,Lara | rfp |
lacI,IPTG | rfp |
luxR,AHL | rfp |
tetR,aTc | rfp |
tetR,aTc | invF |
araC,Lara | sicA |
tetR,aTc | mxiE |
araC,Lara | ipgC |
ipgC,mxiE | rfp |
tetR,aTc | exsDA |
luxR,AHL | exsC |
exsC,exsDA | rfp |
exsC,exsDA | invF |
ipgC,mxiE | sicA |
LacI,IPTG | mxiE |
LacI,IPTG | luxR,luxI |
luxR,AHL | lacZalpha-ccdB |
Supported Standards
Synthetic Biology Open Language
Synthetic Biology Open Language (SBOL) Visua; is an open source graphical notation that allows the user to communicate sequences of genetic parts visually using a set of standard symbols which represent common features of operons. The specific symbols used in our application are the promoter, coding sequence, and terminator. A promoter is a DNA segment that regulates the transcription of a gene. There are two types of promoters that appear in the database: regulated and constitutive. A regulated promoter must be triggered, usually by a small molecule. A constitutive promoter is always activated. In this case, both regulated and constitutive promoters are represented the same way: with a bent, right-facing arrow. Coding sequences are DNA regions that produce some protein when transcribed and are regulated by promoters, and are represented by elongated pentagonal arrowheads. Lastly, there are terminators, which are DNA segments that signal for transcription to cease, and are represented with capital T. Promoter, coding sequence, and terminator symbols which appear on the same line are all part of the same operon. To indicate sequences that are oriented in the 3’ to 5’ direction, arrows point in the opposite direction. The symbols are generated using a language called Pigeon[link], which is specific to SBOL Visual.Using SBOL Visual, it is possible for us to communicate the exact structure of the design generated by the SBiDer application, thereby enhancing user understanding. This way, the user can design and visualize their desired output in silico, prior to wet lab production.
Systems Biology Markup Language
Systems Biology Markup Language (SBML) captures qualitative models using standardized syntax and semantics established by the SBML community and developers. By specifying the "Level”, "Qualitative Species”, and "Transitions" of a qualitative model, practitioners are capable of conveying the entirety of their model to a large community without sacrificing any nuance in their modeling of a biological network. Level is an integer value that refers to the current state of the network entities that are being model [ref]. In our Petri-Boolean model, network entities, chemical species and operons, have a basal level of 0 with a maximum capacity of 1. Qualitative Species refer to entities that are compartmentalized and characterized by the qualitative influence of their components; compartments allow one to pool entities of similar composition [ref]. In our Petri-Boolean model, chemical species and operons are referred to as qualitative species with species and plasmid as their respective compartments. Transitions alter the level of entities in a network at given conditions by a fixed amount such conditions involve the fluctuation between levels falling below or above an established threshold [ref]. Transitions in our network govern the binary state of its entities thus a network entity can assume a level of 0 or 1 depending on current state conditions. By converting every network entity, qualitative species or transition, in our database to its corresponding SBML description we not only make our qualitative model accessible to the public but also our entire database.Network Analysis
Gene circuit design often involves the laborious extension of existing circuitry through the development of new devices. Device development is a taxing biological endeavor to which SBiDer offers an alternative. SBIDer facilitates circuit design by integrating knowledge across existing genetic modules. We provide evidence for an increase in functional motifs relative to the circuitry input into our database by examining common network attributes and executing more sophisticated network analysis.In analyzing our database, we demonstrated and quantified the increased number of genetic circuits relative to the input circuits. Connectivity served as a preliminary indicator of the increase in potential circuits. We compared the connectivity, measured by “in-degree” and “out-degree,” of the input circuitry to the degree measure of the integrated database. The increase in degree indicates a combinatorial increase in potential circuits.
This increase is observed as the rightward shift of the In-Degree(v) and Out-Degree(v) distributions. The degree comparison between the input circuitry and the database demonstrated an increase in modulators and modulations in the database. Theoretically, every in-degree increase represents a novel modulation of that node, every out-degree increase represents a novel opportunity for that node to modulate another. The increase in modulators and modulations is important because every combination of these novel inputs and outputs constitutes a new circuit. Further, each ancestor and descendant of a node increase the count of novel circuits exponentially, as a function of the degree. In addition to analyzing the connectivity of our network, we implemented network motif analysis techniques in attempt to identify topological motifs.
Topological motifs can map to functional motifs which are the subunits of genetic circuitry [Alon, 2007]. We considered this correspondence and applied CytoKavosh [Masoudi-Nejad et.al., 2012] to identify topological motifs that occurred significantly relative to a random graph. CytoKavosh is a visual implementation of the Kavosh motif finding algorithm [Kashani, et.al, 2009] constructed on the Cytoscape platform. We report an increase in the number of topological motifs after analysis of the input circuitry. The bi-fan network motif 1 (Kavosh motif 204) showed a 1.98 fold increase from the input circuitry to the integrated database. In our most extreme cases, motifs 540 and 16920 (not included in the graph) had a 7.89 and 6.75 fold increase, respectively. The cumulative increase in fold change across discussed motifs is 24.57. Increases in the counts of selected motifs are shown below:
A comparison of CytoKavosh analyzed motifs between the input circuitry and the databases shows a clear increase in the number of known motifs. The observed increase in network motifs validates our expectation that integrating related circuits would increase their potential.
Genetic circuits are often difficult to engineer, requiring months to design, build, and test each individual genetic device involved in the circuit. SBiDer, a web tool developed by the UCSD Software iGEM team, will leverage existing devices to construct a database with consideration for the function of each device interpreted as boolean logic. The data can be queried by the user through SBiDer's visual interface to explore circuit designs. Users can search for existing circuits that can be used to assemble a complex circuit. The displayed circuit's literature reference, characterization data, and images of included devices can be viewed through the built-in table. We also provide a standalone modelling Python package that can be used to model circuits given by our online webtool. SBiDer's web of information can be expanded through user-generated additions to the database to improve the efficiency of the application and the accuracy of the models.
List of definitions for terms used in various sections of this page:
- Nodes by context
- Search Algorithm
- Operon node: A combination of the input transition, operon, and output transition nodes as described in the Petri Net model.
- SBiDer Petri Net Model
- Operon node: A reciever and producer of species through input and output transitions.
- Web Application
- Operon node: A set of genes that are regulated by DNA sequences known as cis or trans regulating elements. Under the sbider Petri net adaptation operons are places
- Species node: A node that contains only the species information which is similar to its usage in the algorithm.
- Transition node (see Input Transition and Output Transition): Graphical representation of the Petri Net Transitions.
- Search Algorithm
- Input (for search)
- A set of desired initial species to start the search algorithm.
- Output (for search)
- A set of desired final species produced by the search algorithm.
- Paths:
- Operon paths:
- composed of operon nodes as defined within the algorithm representation of the network and species nodes. The network condenses to a directed tree graph from a Petri Net representation.
- Petri Net paths:
- The cyclic movement from a place (species) to an input transition to another place (operon) to an output transition to an ultimate place(species).
- Operon paths:
- Petri net:
- Consists of operon nodes, species nodes, and transitions. All logic required to activate an operon is encompassed within the transition. Species nodes always point to an input transition, which points to one operon, which points to a singular output transition, which points to a species node.
- Places
- Conditions to be met in order to enable a transition in the Petri Net model.
- Transitions
- Activated events that allow movement from Place to Place in a Petri Net model.
- SBML
- a free and open interchange format for computer models of biological processes, which is based on the XML standard. SBML is useful for models of metabolism, cell signaling, and more. It continues to be evolved and expanded by an international community.
- SBOL
- Synthetic Biology Open Language Visual is an open source graphical notation that allows the user to communicate sequences of genetic parts visually using a set of standard symbols which represent common features of operons.
- Plasmids
- The structure of bacterial DNA. Plasmids are circular, closed loops of DNA that contain functioning genes used by the organism.
- Species
- Any chemicals and stimuli affecting gene production. Under the SBiDer Petri net adaptation species are places.
- Input transitions
- Species-regulated regions of the DNA which are formalized into boolean logic operations under the sbider Petri net adaptation.
- Operons
- are a set of genes that are regulated by DNA sequences known as cis or trans regulating elements.
- Output transitions
- Describe the events and species produced after operon activation namely, RNA and protein production.
Future Directions
Database - Integrating NDEx
NDEx is a breeding ground for network sharing, discussion, analysis and storage. By acting like the Facebook of networks, NDEx serves a medium for the discovery, sharing and discussion of networks. Networks are commonly used for their ability to capture the biology as a system of particular molecular interactions with interaction types varying between the type of networks built by scientist. The discussion of networks offered by NDEx provides a means for researchers to share their ideas behind network construction and analysis as well as sharing a copy of the network. NDEx also provides what is know as provenance history which means that history of the network construction is saved and the development of the network can be seen. As a means of further connection the biological network community NDEx offers an API and has plans for further integration with the network visualizer, Cytoscape (www.ndexbio.org).SBiDer was developed with the intention to involve the biology community with the SBiDer Network. Discussion of genetic circuits is imperative for the proper use of a circuit as well as to give the proper context of the circuit. NDex would give a discussion board to the SBiDer network where biologist can discuss topics regarding optimal genetic circuits, the potential to experimentally create new circuits from the existing network or a range of many other topics. As said before, genetic device building is not an easy task and provenance history provides useful backtracking to understand the development of genetic circuit networks and due to the ability of network sharing it becomes possible for the SBiDer network to exist in different versions with the purpose of displaying genetic circuit networks with specific functionalities. NDEx API functionality then provides the means to create tools with which SBiDer networks can be better analyzed.
Traversal
SBiDer’s three main pillars - database, search algorithm, and web application - intertwine effectively and make SBiDer a robust tool for the synthetic biology community. Furthermore, the database, search algorithm, and web application are modularly developed so that each component can be easily updated, extended, and optimized by the global synthetic biology community. In the development, there was a focus on minimizing the barrier of collaboration by using an open source platform and generating a comprehensive usage and implementation documents. SBiDer was developed on the consideration to encourage the synthetic biology community to collaborate and drive the field forward. In the course of the development, various tools that could further develop SBiDer were discovered. In future iterations of SBiDer, the following functionalities should be considered for extending SBiDer:Web Ontology Language (OWL)
What OWL is
The Web Ontology Language (OWL) is a family of knowledge representation languages or ontology languages for authoring ontologies or knowledge bases (W3C). The data described by an ontology in the OWL family is interpreted as a set of "individuals" and a set of "property assertions" which relate these individuals to each other. An ontology consists of a set of axioms which place constraints on sets of individuals (called "classes") and the types of relationships permitted between them. These axioms provide semantics by allowing systems to infer additional information based on the data explicitly provided.Integration of OWL into SBiDer
SBiDer can describe all of the components in the database using OWL by creating a unique ontological hierarchy that suits the field of synthetic biology. Using OWL relationships, SBiDer can better connect its components through more complex fashion that better captures the biological reality underlying synthetic biology. For example, an ontology describing components used by SBiDer, or individuals in the semantics of ontology, might include axioms stating that a "activatePromotor" property is only present between two individuals when "isBiochecmicalSpecies" is also present, and individuals of class "activatePromotor" are never related via "isBiochemicalSpecies" to of the "transcribeRNA" class. If it is stated that the individual green fluorescent protein (GFP) is related via "produceLight" to the individual yellow fluorescent protein (YFP), and that GFP is a member of the "isProtein" class, then it can be inferred that YFP is not a member of "isPromotor" class. In this fashion, OWL allows the use of more sophisticated relationships amongst database components. Furthermore, there already exists various ontological hierarchy optimized for biology such as genetic interaction ontology, protein interaction ontology, and cancer genomics ontology. And OWL allows potential interaction of multiple ontologies. So, the integration of OWL into SBiDer allows SBiDer to potentially interact with many other aspect of biology such as genetic interaction, protein interaction, and RNA processing. As a result of OWL integration, SBiDer can represent the biological reality of synthetic biology in a much more complex, sophisticated, and realistic manner.Factor Graph
What Factor Graph is
In probability theory and its applications, a factor graph is a particular type of graphical model, with applications in Bayesian inference, that enables efficient computation of marginal distributions through the sum-product algorithm (H. Loeliger). Factor graph can capture a system as Markov networks or Bayesian networks, and represent mathematical relationships of elements of a system.Integration of Factor Graph into SBiDer
SBiDer currently implements its network representation of the database as a Petri-Net, which allows modeling of our complex biological system. SBiDer can also capture the network using factor graph, which provides additional statistical tools for analyzing, interpreting, and prediction of the behaviour of our network. Integration of the factor graph can also provide us with machine learning tools to further advance our tools quantitatively and qualitatively.Web App
The current SBiDer web tool has been constructed with consideration for expansion in all its components from the structure of the source code to the allowance of users to contribute to the database. It is the latter improvement that allows SBiDer to become more efficient as time progresses. As more information becomes available, the SBiDer application can begin to transition from a qualitative description of how its proposed genetic circuits behave to a more quantitative model.Web Application
Framework of the SBiDer Interface
Structure Overview
SBiDer was developed off of CyNetShare, a HTML5 application designed to make utilizing and visualizing CytoscapeJS graphs simple and intuitive through use of the javascript library AngularJS. The object of the SBiDer web tool is to visually present genetic circuits and possible interactions between them in addition to providing relative information about each device’s construction and function through reference material. Images of devices and image data, in Systems Biology Markup Language (SBML), are provided by a Synthetic Biology Open Language (SBOL) visual rendered through use of the popular PigeonCad for intuitive understanding and universal sharing. Users are also provided with the PubMed ID’s of all genetic devices so that they may be able to access and verify entries information in the PubMed journal service. SBiDer utilizes and extends the web-application architecture used by the Owl Datasheet generator project from iGEM 2013.Visualizing the Network
CytoscapeJS is a widely used visualization library written in Javascript that presents complex relationships in more easily understood figures of nodes connected by edges. The library’s popularity and supportive community make it an ideal framework from which the SBiDer team can reach a large audience of synthetic biologists. Characterizing information about the genetic devices can be easily stored inside CytoscapeJS’s nodes as data. Unfortunately, manipulating, editing, and updating this data autonomously without further means poses a difficult challenge that is resolved with the use of AngularJS and CyNetShare.Dynamic Interface and Data Handling
The large portion of the SBiDer framework relies on the data manipulation and two-way databinding provided by the AngularJS javascript library which provides the interactivity to the web application. Key to this is the two-way binding that allows information to be changed through the User Interface (UI) and updated between the scripting code and html without need to constantly resync data with the server, allowing for quicker response times for users and cleaner source code for further development. The ability to pass data from the UI to the SBiDer application also simplified the procedure for User-generated entries to the SBiDer database. The major alternative library was JQuery, an older and popular method of achieving a dynamic interface that doesn’t have the crucial feature of two-way databinding. Data is passed from server to client through a JSON string which is parsed by AngularJS for the SBiDer application to visualize the network using CytoscapeJS as well as updating the web page without need to reload the window unlike when employing JQuery. Additionally, AngularJS is compatible with many JQuery functionalities which allows for a combination of use for both libraries with negligible drawbacks. Effectively, AngularJS allows SBiDer to effectively and dynamically communicate with CytoscapeJS and other components of the application without the clutter of JQuery’s syntax.Modular Interface
CyNetShare is a new innovation from the creators of CytoscapeJS which is used to share visualizations made with CytoscapeJS without the need to manually exchange files, instead rendering the files through encoded url’s. CyNetShare provides the basic framework for SBiDer as it has much of the core foundation in its source code including the CytoscapeJS visualization, table of node information, and a basic user interface layout and styling. SBiDer developed upon this framework to include the ability to retrieve results from the SBiDer database, display images of genetic devices, and easily access and download data.Other Utilized Technologies
Apart from the aforementioned technologies that were used to create SBiDer itself, there were two other major technologies/languages involved, namely Boostrap, to design the website & the wiki, and Java, for the server.Bootstrap is a front-end framework that contains several HTML & CSS-based design templates for various aspects of web pages. It's an easy to use framework that's used widely all over the world since it makes websites look more modern, cleaner and aesthetically pleasing.
The language chosen for the server was Java since it's easier for other developers to use, is extremely common and is compatible with a lot of languages including but not limited to Python, JavaScript and SQL. In essence, all of the languages that we made use of are very well documented, modern and easy to use languages.
The Search Algorithm
Introduction to the SBiDer Search Algorithm
Purpose of the Algorithm
SBiDer is fundamentally constructed on a manually curated database of existing genetic devices, or operons. This SBiDer database stores operons, species, and most importantly the biochemical interactions of these elements. Also, the database can be represented as an operon interaction network via species. Using this network representation of the database, SBiDer’s search algorithm searches for feasible operon paths connecting a set of species to another set of species. As a result, given a set of input species and a set of output species, the search algorithm returns a subnetwork of operon paths connecting the input species to the output species. Each path within the subnetwork is an operon path that can be used to produce the output species from the input species. In other words, placing operons from a returned operon path as well as the input species into a system can produce the output species.Biology Captured by the Algorithm
The search algorithm conducts a complex, effective, and robust operon path search over the network representation of the database, ultimately generating single or multiple operon paths connecting a set of input species to a set of output species. A resulting path represents a system that can produce the output species given the input species. Also, each path attempts to capture biological reality by considering two major mechanisms of operon activation (detailed description below).Robustness and Modularity of the Algorithm
Due to the current number of operons in the database, the search algorithm should scale with the increasing size of the database, which will expand as the synthetic biology community adds more species, operons, and plasmids to the database (see complexity analysis of the algorithm is located below). In addition to this robustness, the search algorithm is easily modifiable since it has been implemented independently from the database and the SBiDer web application. Therefore, the search algorithm can be applied to a broad range of networks. Furthermore, the search algorithm was developed on an open source platform to encourage global collaboration in further optimizing the search algorithm and minimizing the barrier for algorithm improvement. As a result, the database as well as the search algorithm will be easily, effectively, and accurately expanded, extended, and optimized by the global synthetic biology community - together.Algorithm
Overview of the Algorithm
SBiDer's search algorithm is fundamentally based on multiple breadth first searches (BFS) on the SBiDer database. From a set of input species, the algorithm searches for any operon that can be activated by the input species (see Tutorial for how to format the input query). If such an operon is found, the output species of the activated operon and/or other existing species in the system (details below) is used to search for the next operon. In the process, the search algorithm constructs an operon paths by successively adding activated operons to the path. There are two ways of activating an operon: linear successional activation and nonlinear successional activation (more details below), and the search algorithm can create an operon path using either or both of the activation methods. This search algorithm continues until either: the search algorithm concludes that there is no operon path that can lead to the production of the output species; or an operon path producing the output species is found.Linear Successional Activation Search (LSAS)
The search algorithm uses linear successional activation search (LSAS) to generate an operon path in which the output species of a preceding operon produces all of the required input species for the succeeding operon. LSAS extends an operon path by adding only operons that can be activated by the species produced by the last operon in the path. Thus, for each potential activated operon by the input species, LSAS uses a tree data structure in searching an operon path. From an input species (or multiple input species with an AND relationship), LSAS builds a tree, and if an output species is found in the process of growing the tree, the path from the root operon to the leaf operon that has produced the output species is returned as a resulting operon path. Finally, this resulting set operon paths is used to construct a Petri net path including all of the input species, input transitions, input transition logic, operons, output transitions, output transition logic, and output species.Nonlinear Successional Activation Search (NLSAS)
An operon may not produce all of the input species required for an activation of another operon. Yet, multiple operons may together produce all of the required input species for the other operon. Here, each of the activating operons produces some, but not all, of the required species for the activated operon. The search algorithm captures such operon activation mechanism using nonlinear successional search (NLSAS) in building an operon path. As LSAS, NLSAS also uses a tree data structure, but appends an operon whose input species, or activation requirements, are produced by any of the preceding operons in the path. While NLSAS assumes no degradation of the species in the system, it allows for a wider range of operon sets that could produce our desired output from our given input. As a result, each resulting operon path can be linear or nonlinear. Since a NLSAS result captures operon activation in which a single or multiple preceding operons produce species required for the activation of a succeeding operon, LSAS result is a subset of a corresponding NLSAS result.Overview of LSAS and NLSAS
Overall, LSAS generates a single or multiple operon paths in which a preceding operon directly activates a succeeding operon, and NLSAS paths in which any of the preceding operons can activate a succeeding operon. In general, a resulting LSAS operon path includes operons mined from same or similarly conducted experimental protocols, where the operons are optimized to coexist in a system. As a result, LSAS can return well optimized operon paths and interactions, which may be used in biochemical reactions with higher confidence. The SBiDer web application can further facilitate the use of such operons paths by providing literature and other published resources. NLSAS, on the other hand, can generate an operon path by including operons from dissimilar experimental protocols. So, using NLSAS can potentially lead to the discovery of novel operon paths and thus new biochemical systems. By providing LSAS and NLSAS variations of the search algorithm, SBiDer assists a user in capturing the biological reality underlying an operon activation as accurately as possible, and provides a means to evaluate, analyze, and apply the results.Complexity Analysis
The SBiDer network is based upon the Petri Net model, which allows for the capturing of boolean logic. The linearity of the network representation of the database is such that one input transition leads to one operon, which leads to one output transition, and one list containing all species produced by that operon, as shown in Figure 1.This entire structure can be collapsed into one node since there is no branching, and allows us to represent the network as a directed graph, as shown in Figure 2. By condensing the network in this fashion, complex searches can be conducted in a more efficient manner.
LSAS
Assume the network has m transitions, with depth d and breadth b from a specified root, and V vertices which represent the aforementioned condensed nodes (centered on operons), and E directed edges connecting said vertices.The SBiDer search algorithm is a modified version of breadth first search where at each transition m that is activated by the input species set a breadth first search for the output species set is performed. For a standard breadth first search, the complexity is
BFS Complexity = O(|b|^|d|)
This is another way of saying that in the worst case, every vertex and every edge is explored, which can be rewritten in terms of the number of vertices and edges. Since all edges have weights of one, V and E will always be positive.
BFS Complexity = O(|V| + |E|) => O(V + E).
For this standard BFS, assuming a large network where every node is connected to every other node, for V significantly large, V ≈ V - 1, meaning the number of edges searched after the selection of each successive node is approximately equal to V, meaning the V nodes are searched V times. Additionally, consider that the total number of edges (E) in a completely connected graph is bound by V^2. In a completely connected graph (with no self or duplicate edges) with V nodes, the total number of edges is (V-1) + (V-2) + (V-3) + … + 2 + 1. It has been shown that the (V-1)th partial sum of this divergent series sums to [V*(V-1)]/2, which is bound by V^2. Therefore the upper bound for the time complexity for a single breadth first search from a single activated transition from an input species is O(V + E) ≤ O(V+V^2) => O(V^2).
For our network, a breadth first search of time complexity O(V^2) happens at every activated transition m.
Therefore, the LSAS complexity = O(mV^2)
Paths generated using the LSAS search would resemble Figure 2 where a species node directly activates an operon, which produces a singular species node. The LSAS algorithm would not be able to capture the logic encompassed within Figure 3 where multiple species nodes are required to activate the middle input transition.
NLSAS
For the NLSAS, a similar tree from LSAS is created for each activated input transition by the input species. However, the difference here lies in the construction of the path from the input species to the output species. A special traceback algorithm is used to tie the output species to the input species creating a path that may resemble a subnetwork rather than a traditional linear path. This traceback algorithm is where the true complexity of this algorithm arises from.Similar to LSAS, this algorithm also begins by constructing a subnetwork of paths that can lead to the output of interest from a specific input. This generates a list of edges to be used in the traceback algorithm. Assuming every edge could be explored, the algorithm runs in O(E) time. As shown for the LSAS algorithm, O(E) <= O(V^2), and also returns a list that will be explored also in O(E) size or O(V^2). Again, a new list is constructed for each potentially activated transition, thus giving this entire first step a run time complexity of O(m*V^2).
Now, for each of the O(m) list of edges constructed from the last step, a traceback algorithm is run for this path from the output species set to return a subnetwork of operons that could form a system that leads to the production of the desired output. From the desired output species, the traceback algorithm searches through the list of edges E to find the transitions for each operon contained in the path that produces the output species of interest. Since every transition in the set E must be checked, the algorithm runs in O(E) or O(V^2) time. At worst, every operon must be checked, resulting in a complexity of O(m*V^2) for this step.
Now, in order to determine which species were required to activate the operons now connected to the output species, the database of transitions is searched to identify which transitions will have to be activated. This search happens across an O(m) space for each of the O(V) operons that could be activating the output. Therefore, this next time step happens in O(mV) time. The first two steps together now will happen as O(m*(V2+mV)). At the end of these steps, the path now has O(m*V) species.
However, it is important to note here that at the step when possible operons are being explored, the search will have a time complexity of O(E), and will never happen more than O(m*V) times, which is the bound for the number of unique species in the system. For the following step, the search for species activating all operons on this increment will have a time complexity of O(m), but it will never happen more than O(V) times, which is the bound for the number of unique operons in the system. Therefore, for a full iteration of these two steps in the traceback algorithm, it will be bounded by the time complexity of O(V^2*mV + m*V). This traceback step will happen until the depth of the entire path generated from the LSAS step has been explored, which is bound by O(V). Thus, the time complexity for the traceback of a single path is O(mV^4+mV^2). Then complexity of the path generation is added for a complexity of O(mV^4+mV2+V^2). Now consider that this path generation and traceback happens for every single activated transition by the input species, which gives O(m*(mV^4+mV^2+V^2))=>O(m^2*V^4).
References
[1]Carl Adam Petri and Wolfgang Reisig (2008) Petri net. Scholarpedia, 3(4):6477[2]"OWL 2 Web Ontology Language Document Overview". W3C. 2009-10-27.
[3]An Introduction to Factor Graphs by Hans-Andrea Loeliger, IEEE Signal Processing Magazine,January 2004, pp. 28–41.
Database
Data Collection
The database was built to meet the needs of synthetic biology and genetic circuit building by offering literature references, storage, maintenance and upload of genetic devices as well as SBML text files for network data exchange.1 Genetic circuit information is not easily extracted from papers making it difficult to begin any genetic device construction. SBiDer provides a centralized library of relevant genetic circuit references in the form of pubmed id’s so that synthetic biologists can quickly and easily access experimentally backed information. Outsourcing the literature search to SBiDer gives synthetic biologists an interface with reliably relevant information. As well as providing literature references, SBiDer extracts the necessary details of each genetic device so that synthetic biologists can build devices using essential genetic building blocks. As a means of further involving the biology community, SBML data exchange files for our genetic parts and SBiDer network are accessible by using the SBiDer API. Using SBML provides further data analysis of the SBiDer network by taking advantage of approximately 200 SBML supported softwares such as Cytoscape, Systems Biology Workbench and more (www.cytoscape.org) (http://sbw.kgi.edu/research/sbwintro.htm) (www.sbml.org).Petri Net and Schema Design
This project integrated the Petri net model by describing interactions between species and operons. Species act as input for operon activation and output. In the context of biology, a simple genetic circuit is broken down into operons, and operons can be broken down into their components: promoters, regulating elements, and coding sequences. Combining the biology and Petri net formalism, genetic device information is captured and makes for a database schema that innately captures a network of genetic device interactions. The Petri net model inspired schema works by atomizing the necessary genetic circuit information so the parts necessary for genetic circuit design are represented. Operons and species are represented as equivalents of Petri net chemical species while the interaction of species with operons and the production of species by operons is represent by input and output transitions namely. Genetic circuit design is now formalized for the biology community under the Petri net model and stored inside the SBiDer database.Community Based Support
A single genetic circuit has a set of responses based on the chemical or environmental factors present in a biological system. By introducing new genetic circuits into the SBiDer network the biology community benefits from new devices with new functionalities or improved functionality, and when introduced into the SBiDer network creates a multitude of new genetic device combinations. The SBiDer website includes a device upload page to encourage the collaboration of the synthetic biology community to keep expanding the database and network for improved and up to date genetic devices. The database also maintains updated SBML forms of all genetic device parts and the SBiDer network so the biology community can continue working on the most up to date information.Technologies
The database was implemented using SQLite, a widely used database management system, and the SQLite3 Python module. SQLite is developed and maintained by multiple companies including Oracle and Adobe (www.sqlite.com). With it’s widespread use and fast queries, SQLite is a powerful tool to use for collaboration with the biological community. Python’s success within the biology community, it’s ease of use and compatibility with major operating systems also makes for an effective combination with SQLite and computational work in biology (“Programming for Biologists”, 2014). Using these two technologies, a Python based API was create that encourages the synthetic biology community to participate in the database expansion and operation as well as SBML file access.Database Schema in Depth
The plasmid table stores the name and pubmed literature references allowing users to easily find out more about their given device. The plasmid is then broken down into operons where multiple operons can be mapped to the same plasmid. In order to capture this relationship, a table of plasmid id and operon id allows for multiple operons relating to a single plasmid. A direction column in the plasmid-operon relationship table also allows users to specify the directionality of the operon inside of the given plasmid as multiple operon sequences can can be found with presence in either strands of the DNA. Operons are also mapped exclusively to their plasmid, meaning that identical operons from different plasmids require insertion into the database with a mapping to the corresponding “parent” plasmid. The operon table itself contains information on the operon sbol and sbml files representations.The input transition table explains the type of logic that is being used for operon activation as either AND or OR logic. AND logic transitions are transitions which must take in all corresponding inputs species for the activation of the operon. OR logic transitions are transitions which require a single input species or multiple input species but do not require all. More complex relations are made between the input species and the input transitions table.
Input transition and species interactions are captured using a separate relationship table. Using this separate input transition species relationship table allows for more flexibility when describing the boolean logic at a given input transition. The same species may interact as a repressor or as activator depending on what input transition it encounters. Therefore, the table attribute repression gives a true or false statement under the repression column describing the role of that species in a given operon activation. All complex logic types, NAND; NOR; XOR; and XNOR, are captured solely by using the atomic logic types, AND; OR; and NOT. So a NAND input transition would be represented as an AND inside the input transition table with repressor molecules as the interacting species and TRUE values in the repression columns of these species.
Operons also have associated output transitions which describe the events and species produced after operon activation. These transitions unlike input transitions have very simple logic, namely IF. The reason for this is, that once an operon is activated then the production of the protein will inevitably occur. Just like input transitions and species, output transitions and species also have a relationship table with multiple species mapping to a single output transition when applicable. This illustrates the idea that operons are a sequence of genes that when activated, transcribe mRNA and protein species.
References
[1]Hucka, M., 25 Oct. 2002., "The Systems Biology Markup Language (SBML): A Medium for Representation and Exchange of Biochemical Network Models". Oxford Journals, www.http://bioinformatics.oxfordjournals.org (October 15, 2014)[2]"Cytoscape Core Features." What Is Cytoscape?, www.cytoscape.org (October 15, 2014)
[3]"Download SBW File A Bug Browse Forum." http://sbw.kgi.edu/research/sbwintro.htm (October 15, 2014)
[4]"SBML Software Showcase." 10 June 2014., The System Biology Markup Language, www.sbml.org (October 15, 2014)
[5]Baez, John C. "Petri Nets." www.johncarlosbaez.wordpress.com (October 15, 2014)
[6]"SQLite Home Page." SQLite Home Page. www.sqlite.org (October 15, 2014)
[7]"Why Python?" www.programmingforbiologists.org (15 October 2014)
[8]"NDEx About." www.ndexbio.org (October 15, 2014)
[9]Hoon Hong, Seok. 03 Jan. 2012, "Synthetic Quorum-sensing Circuit to Control Consortial Biogilm Formation and Dispersal in a Microfluidic Device." Nature.com. Nature Publishing Group, (October 17, 2014)
Modeling
- What is this program? Synthetic biology has been developed for a decade and is being expected to evolve the academic society because of its standardization and convenience.1, 2 This novel technology has already yielded bunches of applications on the field of pharmacy1, 2 and therapeutics3 while also showing its potential on energy industry.5 However, a standardized model is eagerly required to be established because it will facilitate the exploration of synthetic biology. Therefore, we developed the software – AutoModel, which integrates dozens of models of simple devices and stipulates the I/O interface then provides user standardized modeling path with high degree of freedom.
- How does it work? During the synthetic biological procedure, substantial biochemical reaction happens in vivo or in vitro. Generally speaking, those gene expression molecular level events could be represented by mass equation:4
- How to use it?
- Demonstration It is reasonable to assume that our host is incubated in ideal environment that the curve of optical density (OD) perfectly matches the ’S’ shape model. In other word, the growing curve is integrated by logistic model
This python script is being expected to help noviciate to construct their model and decide how much experimental data should be collected. In the coming section, we will demonstrate how this software works and how it help
k1[A]aq + k2[B]aq k3[A B]aq
where k1, k2 and k3 are reaction coefficients. One of best mathematical representation for this reaction formula is differential equation. The differential equation is a mathematical equation about some continuously varying quantities and their rates of change in time that relates some function of one or more variables with its derivatives. Therefore, differential model is widely employed on the chemical modeling. However, constructing a precise model for any specific reaction is always complex because dozens of material and formulae has to be considered.But now, a novel technique has been developed to help you figure out this problem. Inspired by the primary idea of synthetic biology, the AutoModel separates existed simple device as individual parts and integrates them into the device file which is a
There are 3 kinds of documents included in the program package.
3.1 Device
All of differential equations are stored in the ’DEVICE.py’ file which is a list of import subfunction of python. Those subfunction are defined in the same format that allowing user to recall them by the same method. The format is
def device’s name (od , input_1, input_2, output, dt = 0.1) :
parameters
input1 = input_1 + (differential equation of input_1)* od* d t
input2 = input_2 + (differential equation of input_2)* od* d t
output1 = output + (differential equation of output)* od* d t
return (input1 , input2, output)
where od is optical density and dt is integral time step.
parameters
input1 = input_1 + (differential equation of input_1)* od* d t
input2 = input_2 + (differential equation of input_2)* od* d t
output1 = output + (differential equation of output)* od* d t
return (input1 , input2, output)
where od is optical density and dt is integral time step.
3.2 Network Document
The ’network.txt’ is the file of network which describes the connection among simulated model. This text file is a table. The first column is device’s name which corresponds to the name in ’DEVICE.py’. The next 2 columns are input_1 and its initial value. It could be either inducer’s name or device’s name from first column. The 4th and 5th represent input_2. Last 2 columns are output’s name and its value. If the word in any row is output, it means that the program will return the output value of this device.
3.3 Main Program
The main code for simulation is written in ’demo python.py’ which contains calculating function for growing curve, integrating function for ODE and a plotting part. Here we use an instance for illustration how to use this software.
First, there is a default growing curve provided by demo. The initial cell density(OD) is 0.2 while growing rate is
0.3 per 6 mins. You can change the maximum value of density by change the parameter k1 in the function grow. Second, function ’Calculate’ is an integral function that calculating the output value while reading the network from network file from top to bottom and then loop this process until the end of simulation time. In this case, the demo network is invested by David L. Shis and Matthew R. Bennett.6
Final, ’Calculate’ will return a matrix of time scalar, optical density and output to our plotting script.
where kgrow is producing rate of cells and kmax is maximun value of density of cells, i.e. 1=(ODmax).
The AND gate with two devices achieved by Shis, David L., and Matthew R. Bennett6 has been modeled for two separated parts that each one could be recalled as an individual function to represent the corresponding device. The ODEs for these 2 devices are demonstrated below.
When pTara is induced by arabinose, this circuit produces LacI then stimulates its downstream device pET28. As result, the output of pTara is consumable inducer for circuit pET28. Therefore, we have 2 equations for pTara, which are
and
where OD is optical density and x1 is the input of device pTara, i.e., arabinose. Meanwhile, y is the output of device p- Tara and input of device pTara. The first equation represents the consumption of inducer that will give us an exponatial decay of the value of its input. The second equation is modeled for the output of pTara. The positive term corresponds to the producing rate of LacI whereas the negative term is of consuming rate.
As principle employed on modeling pTara, we also provide a differential equation for pET28 which is
Finally, we link these 2 device to finalize the model of AND gate. The plot of the simulation result shows that our model approximately fittings the experimental data.
In this work, we successfully construct a new approaching of modeling for synthetic biology by applying the idea of this field which is about modulization. The modulized modeling functions which are using as bio-brick provide a novel method to academic society that allows circuit consturctors predict their experimental data. Furthermore, it gives us chance to develop the virtual laboratory so that dramatically reduces the laborious work in lab.
References
[1]Ellis, Tom, Xiao Wang, and James J. Collins.[2]Andrianantoandro, Ernesto, et al. ”Synthetic biology: new engineering rules for an emerging discipline.” Molecular systems biology 2.1 (2006).
[3]Lu, Timothy K., and James J. Collins. ”Engineered bacteriophage targeting gene networks as adjuvants for an- tibiotic therapy.” Proceedings of the National Academy of Sciences 106.12 (2009):
[4]Kaznessis, Yiannis N. ”Models for synthetic biology.” BMC systems biology 1.1 (2007): 47.
[5]Lee, Sung Kuk, et al. ”Metabolic engineering of microorganisms for biofuels production: from bugs to synthetic biology to fuels.” Current opinion in biotechnology 19.6 (2008):
[6]Shis, David L., and Matthew R. Bennett. ”Library of synthetic transcriptional AND gates built with split T7 RNA polymerase mutants.” Proceedings of the National Academy of Sciences 110.13 (2013):