Difference between revisions of "Team:Edinburgh UG/Software"

 
(33 intermediate revisions by 3 users not shown)
Line 8: Line 8:
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
 
<link href="http://fonts.googleapis.com/css?family=Pacifico" rel="stylesheet" type="text/css">
 
<link href="http://fonts.googleapis.com/css?family=Pacifico" rel="stylesheet" type="text/css">
 
+
<link rel="stylesheet" href="http://cdn.jsdelivr.net/jquery.slick/1.5.7/slick.css">
 +
<script src="http://cdn.jsdelivr.net/jquery.slick/1.5.7/slick.min.js"></script>
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
 
     </head>
 
     </head>
 +
 +
    <style type="text/css">
 +
 +
    #contentSub, #footer-box, #catlinks, #search-controls, #p-logo, .printfooter, .firstHeading,.visualClear
 +
 +
    {
 +
 +
    display:  none;
 +
 +
    }
 +
 +
    #top_menu_under
 +
    {
 +
    height: 0;
 +
    }
 +
 +
    #top-section {
 +
    height: 0px;
 +
    border-top: 0;
 +
    border-left: none;
 +
    border-right: none;
 +
    }
 +
      #globalWrapper
 +
        {
 +
        width: 100%;
 +
        height: 100%;
 +
        border: 0px;
 +
        background-color: #ffffff;
 +
        margin: 0px;
 +
        padding: 0px;
 +
        font-size: 100%
 +
        }
 +
 +
        #content
 +
        {
 +
          width: 100%;
 +
          height: 100%;
 +
          margin-left: auto;
 +
          margin-right: auto;
 +
          background-color: #ffffff;
 +
          padding: 0px;
 +
          font-size: 100%;
 +
        }
 +
 +
    }
 +
 +
    section {
 +
        padding: 75px 0;
 +
    }
 +
 +
    .section-heading {
 +
        margin: 30px 0;
 +
        font-size: 4em;
 +
    }
 +
 +
    .section-lead {
 +
        margin: 30px 0;
 +
    }
 +
 +
    .section-paragraph {
 +
        margin: 30px 0;
 +
    }
 +
 +
    .headline {
 +
        padding: 120px 0;
 +
    }
 +
 +
    @media(max-width:768px) {
 +
        .container {
 +
            margin: 0 15px;
 +
        }
 +
      }
 +
 +
</style>
  
 
<div id="custom-bootstrap-menu" class="navbar navbar-default navbar-fixed-top" role="navigation">
 
<div id="custom-bootstrap-menu" class="navbar navbar-default navbar-fixed-top" role="navigation">
     <div class="container-fluid">
+
     <div class= "container-fluid">
        <div class="navbar-header">
+
      <!-- Navigation -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-menubuilder"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
+
      <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
            </button>
+
          <div class="container">
        </div>
+
              <!-- Brand and toggle get grouped for better mobile display -->
        <div class="collapse navbar-collapse navbar-menubuilder">
+
              <div class="navbar-header">
            <ul class="nav navbar-nav navbar-right">
+
                  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
              <li class="active">
+
                      <span class="sr-only">Toggle navigation</span>
                  <a href="https://2016.igem.org/Team:Edinburgh_UG">Home</a></li>
+
                      <span class="icon-bar"></span>
                  <li class="dropdown">
+
                      <span class="icon-bar"></span>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Team<span class="caret"></span></a>
+
                      <span class="icon-bar"></span>
                    <ul class="dropdown-menu" role="menu">
+
                  </button>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Team">Team</a></li>
+
                  <a class="navbar-brand" href="https://2016.igem.org/Team:Edinburgh_UG">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Collaborations">Collaboration</a></li>
+
                      <img src="https://static.igem.org/mediawiki/2016/9/92/Edinburgh_logo2_MINI.png" alt="">
                    </ul>
+
                  </a>
                  </li>
+
              </div>
                  <li class="dropdown">
+
 
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Project<span class="caret"></span></a>
+
              <!-- Collect the nav links, forms, and other content for toggling -->
                    <ul class="dropdown-menu" role="menu">
+
              <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Description">Project</a></li>
+
                  <ul class="nav navbar-nav">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Description">Description</a></li>
+
                      <li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Design">Design</a></li>
+
                          <a href="https://2016.igem.org/Team:Edinburgh_UG">Home</a>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Experiments">Experiments</a></li>
+
                      </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Proof">Proof of Concept</a></li>
+
                      <li class="dropdown">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Demonstrate">Demonstrate</a></li>
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Team<span class="caret"></span></a>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Results">Results</a></li>
+
                        <ul class="dropdown-menu" role="menu">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Notebook">Notebook</a></li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Team">Team</a></li>
                    </ul>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Attribution">Attribution</a></li>
                  </li>
+
                        </ul>
                  <li class="dropdown">
+
                      </li>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Parts<span class="caret"></span></a>
+
                      <li class="dropdown">
                    <ul class="dropdown-menu" role="menu">
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Human Practices<span class="caret"></span></a>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Parts">Team Parts</a></li>
+
                        <ul class="dropdown-menu" role="menu">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Basic_Part">Basic Parts</a></li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Overview">Overview</a> </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Composite_Part">Composite Parts</a></li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/HP/Silver">Silver</a> </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Part_Collection">Part Collection</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/HP/Gold">Gold</a> </li>
                    </ul>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Medal_Criteria">Medal Criteria</a> </li>
                  </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Integrated_Practices">Integrated Practices</a> </li>
                  <li class="dropdown">
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Engagement">Engagement</a> </li>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dry Lab<span class="caret"></span></a>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Ethics">Ethics</a> </li>
                    <ul class="dropdown-menu" role="menu">
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Mary_Queen_of _Scots">Mary Queen of Scots</a> </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Lexicon_Encoding">Lexicon Encoding</a></li>
+
                        </ul>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Error_Correction">Error Correction</a></li>
+
                      </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Encryption">Encryption</a></li>
+
                      <li class="dropdown">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Files">Files</a></li>
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Project<span class="caret"></span></a>
                    </ul>
+
                        <ul class="dropdown-menu" role="menu">
                  </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Description">Description</a></li>
                  <li class="dropdown">
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Design">Design</a></li>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Safety<span class="caret"></span></a>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Proof">Proof of Concept</a></li>
                    <ul class="dropdown-menu" role="menu">
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Demonstrate">Demonstrate</a></li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Safety">Safety</a></li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Notebook">Notebook</a></li>
                    </ul>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Protocols">Protocols</a></li>
                  </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Limitations">Advantages and Limitations</a></li>
                  <li class="dropdown">
+
                        </ul>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Human Practices<span class="caret"></span></a>
+
                      </li>
                    <ul class="dropdown-menu" role="menu">
+
                      <li class="dropdown">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Human_Practices">Human Practices</a></li>
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Informatics<span class="caret"></span></a>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Silver">Silver</a> </li>
+
                        <ul class="dropdown-menu" role="menu">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Gold">Gold</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Lexicon_Encoding">Lexicon Encoding</a></li>
                       <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Integrated_Practices">Integrated Practices</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Error_Correction">Error Correction</a></li>
                       <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Engagement">Engagement</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Encryption">Encryption</a></li>
                    </ul>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Files">Files</a></li>
                  </li>
+
                        </ul>
                  <li class="dropdown">
+
                      </li>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Awards<span class="caret"></span></a>
+
                      <li class="dropdown">
                    <ul class="dropdown-menu" role="menu">
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Parts<span class="caret"></span></a>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Entrepreneurship">Entrepreneurship</a></li>
+
                        <ul class="dropdown-menu" role="menu">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Hardware">Hardware</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Basic_Part">Basic Parts</a></li>
                       <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Software">Software</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Composite_Part">Composite Parts</a></li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Measurement">Measurement</a> </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Part_Collection">Part Collection</a> </li>
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Model">Model</a> </li>
+
                        </ul>
                    </ul>
+
                       </li>
                  </li>
+
                       <li>
                  <li class="dropdown">
+
                          <a href="https://2016.igem.org/Team:Edinburgh_UG/Collaboration">Collaboration</a>
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Interlab<span class="caret"></span></a>
+
                      </li>
                    <ul class="dropdown-menu" role="menu">
+
                      <li class="dropdown">
                      <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Plate_Reader">Plate Reader</a></li>
+
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Awards<span class="caret"></span></a>
                    </ul>
+
                        <ul class="dropdown-menu" role="menu">
                  </li>
+
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Software">Software</a> </li>
            </ul>
+
                        </ul>
        </div>
+
                      </li>
 +
                       <li class="dropdown">
 +
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Safety<span class="caret"></span></a>
 +
                        <ul class="dropdown-menu" role="menu">
 +
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Safety/Biological Safety">Biological Safety</a></li>
 +
                        </ul>
 +
                      </li>
 +
                      <li class="dropdown">
 +
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Interlab<span class="caret"></span></a>
 +
                        <ul class="dropdown-menu" role="menu">
 +
                          <li><a href="https://2016.igem.org/Team:Edinburgh_UG/Plate_Reader">Plate Reader</a></li>
 +
                        </ul>
 +
                      </li>
 +
                  </ul>
 +
              </div>
 +
              <!-- /.navbar-collapse -->
 +
          </div>
 +
          <!-- /.container -->
 +
      </nav>
 
     </div>
 
     </div>
 
</div>
 
</div>
  
  <header>
+
 
<div class="row full-size">
+
    <!-- End of menu  -->
        <div class="col-sm-1"></div>
+
 
        <div class="col-sm-10">
+
 
      <img class="img-responsive img-center" src="https://static.igem.org/mediawiki/2016/8/8c/EdiGEM16UGsoftware1.jpeg" alt="">
+
<div class="row">
 +
      <div class="col-sm-12">
 +
          <img src="https://static.igem.org/mediawiki/2016/8/8c/EdiGEM16UGsoftware1.jpeg" class="img-responsive center-block">
 
       </div>
 
       </div>
<div class="col-sm-1"></div>
+
  </div>
      </div>
+
  </header>
+
  
 +
<br>
 +
<br>
 
   <div class="container-fluid">
 
   <div class="container-fluid">
 
     <div class="row full-size">
 
     <div class="row full-size">
Line 112: Line 207:
 
       <div class="col-sm-8">
 
       <div class="col-sm-8">
 
         <p> </p>
 
         <p> </p>
         <centre style="font-size:160%;">To create BabblED, we needed to rapidly design and process the information in a lexicon of over 2000 BabbleBricks. This would have been a practically impossible task without a novel computational approach. In order to make BabblED accessible our software needed to be open source (our code can be found on <a href="https://github.com/Edinburgh-iGEM2016/" target="_self">github</a> or on our <a href="https://2016.igem.org/Team:Edinburgh_UG/Files" target="_self">dedicated wiki page</a>), have an easy to use and elegant user interface and run under reasonable time constraints (it's possible to encode entire lexicons practically instantly).  In addition, to the easy and fast encoding and decoding of our BabbleBricks we needed to automate our unique DNA error correction system; adapting a number of computer science techniques to new and creative applications in DNA storage. Finally,  with data security an ever growing concern we implemented a highly secure DNA encryption system to safeguard against unauthorised access.</centre>
+
         <centre style="font-size:160%;">To create BabblED, we needed to rapidly design and process the information in a lexicon of over 2000 BabbleBricks. This would have been a practically impossible task without a novel computational approach. In order to make BabblED accessible our software needed to be open source (our code can be found on <a href="https://github.com/Edinburgh-iGEM2016/" target="_self">github</a>or on our <a href="https://2016.igem.org/Team:Edinburgh_UG/Files" target="_self">dedicated wiki page</a>), have an easy to use and elegant user interface, and run under reasonable time constraints (it's possible to encode entire lexicons practically instantly).  In addition to the easy and fast encoding and decoding of our BabbleBricks we needed to automate our unique DNA error correction system; adapting a number of computer science techniques to new and creative applications in DNA storage. Finally,  with data security an ever growing concern we implemented a highly secure DNA encryption system to safeguard against unauthorised access.</centre>
 +
        <p> </p>
 +
      </div>
 +
      <div class="col-sm-2"></div>
 +
    </div>
 +
  </div>
 +
 
 +
<div class="container-fluid">
 +
    <div class="row full-size">
 +
      <div class="col-sm-2"></div>
 +
      <div class="col-sm-8">
 +
        <p> </p>
 +
        <centre style="font-size:160%;">To read more about how the BabblED software works behind the scenes check out our pages on <a href="https://2016.igem.org/Team:Edinburgh_UG/Lexicon_Encoding" target="_self">lexicon encoding</a>, <a href="https://2016.igem.org/Team:Edinburgh_UG/Error_Correction" target="_self">error correction</a> and <a href="https://2016.igem.org/Team:Edinburgh_UG/Encryption" target="_self">encryption</a></centre>
 
         <p> </p>
 
         <p> </p>
 
       </div>
 
       </div>
Line 118: Line 225:
 
     </div>
 
     </div>
 
   </div>
 
   </div>
   
+
 
  <div class="container-fluid">
+
<div class="container-fluid">
    <div class="col-cm-2"></div>
+
    <div class="row full-size">
    <div class="col-cm-8">
+
      <div class="col-sm-2"></div>
    <div id="accordian" class="panel-group">
+
      <div class="col-sm-8">
         <div class="panel panel-default">
+
        <p> </p>
          <div class="panel-heading">
+
         <centre style="font-size:160%;">Software Walkthrough:</centre>
              <h4 class="panel-title">
+
        <p> </p>
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Encoding a DNA Lexicon</a>
+
        <centre style="font-size:160%;">When the user starts up the BabblED software they are presented with the following screen and options.</centre>
              </h4>
+
<p> </p>
          </div>
+
        <img src="https://static.igem.org/mediawiki/2016/a/a8/EdiGEMug16softhome.png">
          <div id="collapseOne" class="panel-collapse collapse">
+
<p> </p>
              <div class="panel-body">
+
        <centre style="font-size:160%;">Lets assume that this is the users first time with the BabblED software. A natural first move would be to select the ReadMe option from the menu. This will display a piece of text with brief explanations of the informatics concepts behind BabblED.</centre>
                <p>A checksum is a commonly used technique in network engineering that we’ve adapted for use in DNA storage. In this format the checksum allows the detection of errors in a BabbleBlock (DNA sentence). The checksum holds the sum of the word coding regions of BabbleBricks (DNA words) in a BabbleBlock in a 4 BabbleBrick region that can be found towards the end of a BabbleBlock.</p>
+
<p> </p>
                <img src="https://static.igem.org/mediawiki/2016/d/d1/EdiGEM16ug_checksum.jpeg" class="img-responsive center-block">
+
        <img src="https://static.igem.org/mediawiki/2016/d/d8/Edigemug16softreadme.png">
        <p>When a BabbleBlock is being translated the checksum is looked at first to see if it matches the sums of the word coding regions in the DNA we get back from sequencing. If this is the case, no errors have appeared and the translation program can proceed as normal however if there is no match an error has occurred somewhere in the BabbleBlock and other error correcting mechanisms will have to be used to make sure the stored information can still be read back.</p>
+
<p> </p>
        </div>
+
        <centre style="font-size:160%;">After reading through the user decides they would like to look at a lexicon. Now there are two options the user can use the ogdan's basic english (ogdan's basic english being a collection of the most expressive words in english) lexicon that comes with the BabblED distributable.</centre>
          </div>
+
<p> </p>
        </div>
+
      <img src="https://static.igem.org/mediawiki/2016/a/a3/EdiGEMug16softlex.png">
        <div class="panel panel-default">
+
<p> </p>
          <div class="panel-heading">
+
      <centre style="font-size:160%;">Alternatively they can create their own lexicon. This simply requires having each individual piece of information they wish to encode on a separate line in a text file ready to be loaded into the program.</centre>
              <h4 class="panel-title">
+
<p> </p>
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Encoding a BabbleBlock</a>
+
      <centre style="font-size:160%;">After encoding a lexicon the next important functionality is to encode some piece of data. For this example we'll use some words from ogdans basic english for example good day. The user simply enters their information into a text file, like so:</centre>
              </h4>
+
<p> </p>
          </div>
+
      <img src="https://static.igem.org/mediawiki/2016/e/e0/Edigem16ugsoftgoodday.png">
          <div id="collapseTwo" class="panel-collapse collapse">
+
<p> </p>
              <div class="panel-body">
+
      <centre style="font-size:160%;">This is then loaded into the program giving the sequence of the resulting BabbleBlock and the BabbleBricks required to encode it:</centre>
                <p>The Optimal Rectangular Code (ORC) is a type of error correcting code that is present in all of our BabbleBricks. When the checksum detects an error the next action is to checks the ORCs in each word and use them to correct any errors that have taken place as follows:</p>
+
<p> </p>
                <img src="https://static.igem.org/mediawiki/2016/2/2a/EdiGEM16ug_orc.jpeg" class="img-responsive center-block">
+
      <img src="https://static.igem.org/mediawiki/2016/0/0f/Edigem16ugsoftencode.png">
        <p>Unfortunately, the ORC can only locate and fix single base pair errors however the properties of the ORC facilitate another added level of error correction.</p>
+
<p> </p>
        </div>
+
      <centre style="font-size:160%;">Some time later we now need to retrieve this information. After getting the BabbleBlock from sequencing we load it into the program.</centre>
          </div>
+
<p> </p>
        </div>
+
      <img src="https://static.igem.org/mediawiki/2016/e/ed/Edigem16ugsoftseq.png">
        <div class="panel panel-default">
+
<p> </p>
          <div class="panel-heading">
+
      <centre style="font-size:160%;">Recieving back the encoded information with any necessary error correction already having been performed.</centre>
              <h4 class="panel-title">
+
<p> </p>
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">Decoding a BabbleBlock</a>
+
      <img src="https://static.igem.org/mediawiki/2016/9/90/Edigem16ugsoftdecode.png">
              </h4>
+
<p> </p>
          </div>
+
      </div>
          <div id="collapseThree" class="panel-collapse collapse">
+
      <div class="col-sm-2"></div>
              <div class="panel-body">
+
    </div>
                <p>If the Optimal Rectangular Code (ORC) detects more than the single base pair error it can fix using its normal actions the SuperFixer function is called. The SuperFixer uses the ORC and works out all the possible words in the lexicon that fit this pattern. For any given ORC this is a maximum of 4 words and indeed there are many words that have unique ORC’s. Once the SuperFixer has narrowed down the possible words the list of possibilities is compared to what appears in the actual DNA and the sequence with the lowest Levenshtein distance is used in the translation. Levenshtein distance is a metric which shows the number of deletions, insertions or substitutions it will take to turn one string (or sequence) into another.</p>
+
                <img src="https://static.igem.org/mediawiki/2016/3/38/EdiGEM16ug_ld.jpeg" class="img-responsive center-block">
+
        <p>By taking the minimum Levenshtein distance we always work under the assumption that the smallest number of errors is most probable. This assumption gives the best performance across errors of different magnitudes due to the robustness of DNA as a molecule making small errors considerably more likely than larger ones.</p>
+
              </div>
+
          </div>
+
        </div>
+
        </div>
+
    <div class="col-cm-2"></div>
+
    </div>
+
 
   </div>
 
   </div>
  
   <div class="row">
+
<div class="container-fluid">
          <div class="box">
+
    <div class="row full-size">
              <div class="col-lg-12">
+
      <div class="col-sm-2"></div>
                  <hr>
+
      <div class="col-sm-8">
                  <h2 class="intro-text text-center">Contact
+
        <p> </p>
                      <strong>Us</strong>
+
        <centre style="font-size:160%;">Design Considerations:</centre>
                  </h2>
+
        <p> </p>
                  <hr>
+
        <centre style="font-size:160%;">Why Python?</centre>
                  <div class="intro-text text-center">
+
        <p> </p>
                      <p><a href="mailto:edinburgh.igem2016@gmail.com">edinburgh.igem2016@gmail.com</a>
+
        <centre style="font-size:160%;">Python is high-level, general purpose language designed for quick creation of highly readable code. As a result of libraries such as BioPython it has becoming increasingly used in Bioinformatics and Computational Biology in recent years this made it the obvious choice for the BabblED software. We made the decision to use Python 2.7 to increase accessibility as this is the Python version commonly pre-installed on Linux distributions such as Ubuntu.</centre>
                      </p>
+
        <p> </p>
                      <ul class="list-inline banner-social-buttons">
+
        <centre style="font-size:160%;">Why avoid a web app?</centre>
                          <li>
+
        <p> </p>
                              <a href="https://twitter.com/EdiGEM2016"><img src="https://static.igem.org/mediawiki/2016/0/04/Twitterlogo_ed2016.png"></img></a>
+
        <centre style="font-size:160%;">When developing our software we carefully considered how it should be deployed. Should we create a web app using Django (the commonly used Python web framework)? Or simply make all our code easily downloadable with documentation on how to run it? Despite the minor drawbacks in accessibility we eventually settled on the later option for two main reasons. Firstly BabblED was designed for encoding large amounts of archival data - such large amounts that sending these volumes over the web would be very impracticable. Secondly having put a lot of work into the data security angle of the project we deemed that the web app approach had a much higher chance to introduce unforeseen security flaws that we knew (not being computer security experts) we would not have the capabilities to protect against.</centre>
                          </li>
+
        <p> </p>
                          <li>
+
      </div>
                              <a href="https://www.facebook.com/EdiGEM2016"><img src="https://static.igem.org/mediawiki/2016/c/c2/Facebook_ed2016.png"></img></a>
+
      <div class="col-sm-2"></div>
                          </li>
+
    </div>
                          <li>
+
   </div>
                              <a href="https://www.instagram.com/edigem2016/"><img src="https://static.igem.org/mediawiki/2016/5/5d/Instagram_ed2016.png"></img></a>
+
 
                          </li>
+
<br>
                      </ul>
+
<br>
                  </div>
+
<div class="row">
              </div>
+
        <div class="box">
          </div>
+
            <div class="col-lg-12">
      </div>
+
                <hr>
 +
                <h2 class="intro-text text-center">Follow
 +
                    <strong>Us</strong>
 +
                </h2>
 +
                <hr>
 +
                <div class="intro-text text-center">
 +
                    <ul class="list-inline banner-social-buttons">
 +
                        <li>
 +
                            <a href="https://twitter.com/EdiGEM2016"><img src="https://static.igem.org/mediawiki/2016/9/94/Edinburgh2_t2.jpg"></img></a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://www.facebook.com/EdiGEM2016"><img src="https://static.igem.org/mediawiki/2016/c/ce/Edinburgh2_f2.png"></img></a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://www.instagram.com/edigem2016/"><img src="https://static.igem.org/mediawiki/2016/6/64/Edinburgh2_insta2.png"></img></a>
 +
                        </li>
 +
                    </ul>
 +
                </div>
 +
            </div>
 +
        </div>
 +
    </div>
 +
<br>
 +
<br>
  
 
</body>
 
</body>
 
</html>
 
</html>

Latest revision as of 00:08, 20 October 2016



To create BabblED, we needed to rapidly design and process the information in a lexicon of over 2000 BabbleBricks. This would have been a practically impossible task without a novel computational approach. In order to make BabblED accessible our software needed to be open source (our code can be found on githubor on our dedicated wiki page), have an easy to use and elegant user interface, and run under reasonable time constraints (it's possible to encode entire lexicons practically instantly). In addition to the easy and fast encoding and decoding of our BabbleBricks we needed to automate our unique DNA error correction system; adapting a number of computer science techniques to new and creative applications in DNA storage. Finally, with data security an ever growing concern we implemented a highly secure DNA encryption system to safeguard against unauthorised access.

To read more about how the BabblED software works behind the scenes check out our pages on lexicon encoding, error correction and encryption

Software Walkthrough:

When the user starts up the BabblED software they are presented with the following screen and options.

Lets assume that this is the users first time with the BabblED software. A natural first move would be to select the ReadMe option from the menu. This will display a piece of text with brief explanations of the informatics concepts behind BabblED.

After reading through the user decides they would like to look at a lexicon. Now there are two options the user can use the ogdan's basic english (ogdan's basic english being a collection of the most expressive words in english) lexicon that comes with the BabblED distributable.

Alternatively they can create their own lexicon. This simply requires having each individual piece of information they wish to encode on a separate line in a text file ready to be loaded into the program.

After encoding a lexicon the next important functionality is to encode some piece of data. For this example we'll use some words from ogdans basic english for example good day. The user simply enters their information into a text file, like so:

This is then loaded into the program giving the sequence of the resulting BabbleBlock and the BabbleBricks required to encode it:

Some time later we now need to retrieve this information. After getting the BabbleBlock from sequencing we load it into the program.

Recieving back the encoded information with any necessary error correction already having been performed.

Design Considerations:

Why Python?

Python is high-level, general purpose language designed for quick creation of highly readable code. As a result of libraries such as BioPython it has becoming increasingly used in Bioinformatics and Computational Biology in recent years this made it the obvious choice for the BabblED software. We made the decision to use Python 2.7 to increase accessibility as this is the Python version commonly pre-installed on Linux distributions such as Ubuntu.

Why avoid a web app?

When developing our software we carefully considered how it should be deployed. Should we create a web app using Django (the commonly used Python web framework)? Or simply make all our code easily downloadable with documentation on how to run it? Despite the minor drawbacks in accessibility we eventually settled on the later option for two main reasons. Firstly BabblED was designed for encoding large amounts of archival data - such large amounts that sending these volumes over the web would be very impracticable. Secondly having put a lot of work into the data security angle of the project we deemed that the web app approach had a much higher chance to introduce unforeseen security flaws that we knew (not being computer security experts) we would not have the capabilities to protect against.




Follow Us