Difference between revisions of "Team:Rice/Software"

Line 2: Line 2:
 
{{Rice/Backdrop}}
 
{{Rice/Backdrop}}
 
<html>
 
<html>
 
 
<head>
 
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
+
<meta name="viewport" content="width=device-width, initial-scale=1 user-scalable=no">
    <style>
+
<style>
        * {
+
* {
            box-sizing: border-box;
+
  box-sizing: border-box;
        }
+
}
 
+
 
         #top_title {
 
         #top_title {
 
             display: none;
 
             display: none;
 
         }
 
         }
 +
        #home_logo, #sideMenu { display:none; }
 +
    #sideMenu, #top_title, .patrollink  {display:none;}
 +
        #content {  margin-left:-7px; margin-top:-7px; padding:0px; width:100%;}
  
         #home_logo,
+
         #topbox{
        #sideMenu {
+
             height:50vh;
             display: none;
+
             width: 100% !important;
        }
+
 
+
        #sideMenu,
+
        #top_title,
+
        .patrollink {
+
            display: none;
+
        }
+
 
+
        #content {
+
            margin-left: -7px;
+
            margin-top: -7px;
+
            padding: 0px;
+
             width: 100%;
+
        }
+
 
+
        #topbox {
+
            height: 30vh;
+
 
             background-image: url(https://static.igem.org/mediawiki/2019/1/13/T--Rice--Software.svg);
 
             background-image: url(https://static.igem.org/mediawiki/2019/1/13/T--Rice--Software.svg);
 
             background-size: cover;
 
             background-size: cover;
Line 39: Line 23:
 
             background-attachment: absolute;
 
             background-attachment: absolute;
 
             display: table;
 
             display: table;
             background-color: #1f9ec1;
+
             background-color: #1f9ec1!important;
 
         }
 
         }
 
+
         #topbox h1{
         #topbox h1 {
+
 
             font-size: 80px;
 
             font-size: 80px;
 
             color: white !important;
 
             color: white !important;
Line 53: Line 36:
 
         }
 
         }
  
        #content {
+
#content {
            left: 0px;
+
    left: 0px;
            height: 80%;
+
    height: 100%;
            padding: 0px;
+
    padding: 0px;
            width: 100%;
+
    width: 100%;
            margin-left: 0px;
+
    margin-left: 0px;
            margin-top: 0px;
+
    margin-top: 0px;
            margin-bottom: 0px;
+
    margin-bottom: 0px;
            background-color: #fff !important;
+
    background-color: #fff!important;
 +
    }
 +
.container {
 +
    background-color:white !important;
 +
}
 +
/* Create two equal columns that floats next to each other */
 +
.column {
 +
  float: left;
 +
  width: 50%;
 +
  padding:0px;
 +
}
 +
.row {
 +
width:100%;
 +
padding:0px;
 +
}
 +
/* Clear floats after the columns */
 +
.row:after {
 +
  content: "";
 +
  display: table;
 +
  clear: both;
 +
}
 +
p {
 +
        color:#000000!important;
 +
font-family: raleway!important;
 +
font-size: 20px!important;
 +
                padding: 40px!important;
 +
                margin-top:-10px!important;
 +
       
 +
    }
 +
h1{
 +
color:#fff !important;
 +
font-family: comfortaa !important;
 +
font-size: 60px!important;
 +
                text-align:center;
 +
                padding:40px!important;
 +
 
 +
}
 +
h2{
 +
color:#000000!important;
 +
font-family: comfortaa !important;
 +
font-size: 30px!important;
 +
                text-align:center;
 +
    }
 +
body {
 +
        margin: 0;
 +
        background-color: #fff!important;
 +
        width: 100%;
 +
    }
 +
        .row:after {
 +
            content: "";
 +
            display: table;
 +
            clear: both;
 
         }
 
         }
  
 
         .container {
 
         .container {
             background-color: white !important;
+
             position: relative;
 +
            float: left;
 +
            width: 45%;
 +
            padding: 0px;
 +
            margin-left: 2.5%;
 +
            margin-right: 2.5%;
 +
            margin-bottom: 2%;
 
         }
 
         }
 
+
         .image {
         p {
+
             display: block;
             color: #000000 !important;
+
             width: 100%;
             font-family: raleway !important;
+
             height: auto;
             font-size: 20px !important;
+
             border-radius: 20px;
             padding: 40px !important;
+
            margin-top: -10px !important;
+
 
+
 
         }
 
         }
 +
@media screen and (max-width: 481px){
 +
#topbox {
 +
height:30vh;
 +
}
 +
.row {
 +
width:100%;
 +
}
 +
h1 {
 +
font-size: 35px !important;
 +
}
 +
}
 +
</style>
 +
</head>
  
        h1 {
 
            color: #000000 !important;
 
            font-family: comfortaa !important;
 
            font-size: 60px !important;
 
            text-align: center;
 
            color: #fff !important;
 
            padding: 40px !important;
 
 
        }
 
 
        h2 {
 
            color: #000000 !important;
 
            font-family: comfortaa !important;
 
            font-size: 30px !important;
 
            text-align: center;
 
            padding: 10px !important;
 
        }
 
 
        body {
 
            margin: 0;
 
            background-color: #fff !important;
 
        }
 
 
        ol {
 
            font-size: 20px !important;
 
            font-family: raleway !important;
 
        }
 
 
        li {
 
            font-size: 20px !important;
 
            font-family: raleway !important;
 
        }
 
 
        @media screen and (orientation: portrait; ) {
 
            .column {
 
                width: 100%;
 
            }
 
        }
 
    </style>
 
</head>
 
  
 
<body>
 
<body>
 
     <div id="topbox">
 
     <div id="topbox">
        <h1></h1>
+
 
     </div>
 
     </div>
    <br />
+
 
 
+
    <div class="container">
+
  
        <div class="column" style="background-color: #d2e8c5!important; height: 65vh;">
+
    <div class="row" style = "background-color:#d2e8c5!important;">
            <h2>Software Innovation</h2>
+
  <div class="column" style="background-color:#d2e8c5!important;">          
 +
<h2>Software Innovation</h2>
 
             <p>
 
             <p>
 
                 The software designed by the 2019 Rice iGEM team uses a genetic algorithm to optimize RNA thermometers
 
                 The software designed by the 2019 Rice iGEM team uses a genetic algorithm to optimize RNA thermometers
Line 142: Line 151:
 
             </p>
 
             </p>
 
         </div>
 
         </div>
        <<!-- div class="column" style="background-color: #ffffff!important; height: 65vh;">
+
<div class="column" style="background-color:#ffffff;">        
            <img class="img-responsive" style="width:100%; padding:10px;"
+
  <img class="img-responsive" style="width:100%" src="https://static.igem.org/mediawiki/2019/1/18/T--Rice--basic_heat_response.png"/>
                src="https://static.igem.org/mediawiki/2019/1/18/T--Rice--basic_heat_response.png" />
+
  </div></div>
    </div> -->
+
     <div class="row" style="background-color:#9bc4cf!important;">
     <div class="row" style="background-color:#9bc4cf!important; padding-top: 5vh;">
+
 
         <h2>General procedure used by the software</h2>
 
         <h2>General procedure used by the software</h2>
 
         <ol>
 
         <ol>

Revision as of 23:04, 18 October 2019

Software Innovation

The software designed by the 2019 Rice iGEM team uses a genetic algorithm to optimize RNA thermometers for a given temperature range by maximizing the base-pairing and secondary structure change within said range. A Python 3 library called Distributed Evolutionary Algorithms in Python (DEAP) provides the components to build the genetic algorithm. Another library named Scalable Concurrent Operations in Python (SCOOP) parallelizes evaluation of potential candidates, allowing for quick turnover in candidate selection. NuPack is used to evaluate base pairing and secondary structure. The advantage of our program over traditional design processes lies in its speed and automated nature. It allows for the creation and testing of a library of RNA thermometers optimized for a custom temperature range without requiring access to sophisticated technical expertise. For iGEM teams that require temperature-dependent components not present in the existing literature, this would be an expeditious way to provide wetlab candidates for testing.

General procedure used by the software

  1. For each base of the complement of the context containing the RBS, create three other permutations which have that base mutated. All of these permutations combined form the initial population. The baseline is defined as the full sequence containing the context before the variable region, the variable region which is the complement of the RBS-containing context, and the RBS-containing context.

  2. Running the NuPack command complexes -T + TEMPERATURE°C + -material rna -pairs -mfe -quiet on an input file containing the sequence to be tested produces a umber of files which contain the base-pairing probabilities and minimum free energy secondary structures of the given sequence.

Percentage base pair optimization algorithm

  1. The .ocx-ppairs file outputted by the command above consists in part of a list of every base and the base(s) which it has a > 0.001 probability of base pairing with by position number. Find the base pairings where one of the bases is in the RBS-containing region and add up the probabilities corresponding to that base pairing. The nature of this NuPack command should prevent duplicates. Then, subtract the probability that these bases are unpaired.

  2. Subtract the number of base pairings at the higher temperature from the number of base pairings at the lower temperature. We want to maximize the number of RBS-base pairings that disappear as the temperature increases from 25°C to 30°C. The resulting number is the base-pairing fitness value.

Secondary structure change optimization algorithm

  1. The .ocx-mfe file outputted by the command above contains the dot-parentheses representation of the minimum free energy secondary structure of the given sequence at the given temperature.

  2. Find the Levenshtein distance between the strings representing the dot-parentheses representation at the two different temperatures. The Levenshtein distance measures the number of changes needed to transform one string into another. The resulting numerical value will serve as a proxy for the degree of change in secondary structure between the two temperatures.