(LC2) |
|||
Line 1: | Line 1: | ||
{{Fudan-TSI}} | {{Fudan-TSI}} | ||
− | <html> | + | <html lang="en"> |
− | + | <head> | |
− | + | <meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"> | |
− | < | + | <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/materialize.css&action=raw&ctype=text/css"> |
− | + | <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-font-awesome.css&action=raw&ctype=text/css" /> | |
− | + | <link rel="stylesheet" type="text/css" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-css.css&action=raw&ctype=text/css" /> | |
− | + | <style> | |
− | + | /*****************************************************************************/ | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ///// | + | |
− | + | ||
− | + | ||
− | + | ||
− | <style> | + | |
− | / | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
/* DEFAULT WIKI SETTINGS */ | /* DEFAULT WIKI SETTINGS */ | ||
− | /****************************************************************************** | + | /*****************************************************************************/ |
+ | #home_logo, #sideMenu { display:none; } | ||
+ | #sideMenu, #top_title, .patrollink { display:none; } | ||
+ | #content { margin-left: 0; padding:0px; width:100%; } | ||
+ | .judges-will-not-evaluate { border: 4px solid #e4dede; padding: 2% !important; width: 92%!important; } | ||
+ | *{margin:0;padding:0;list-style:none}blockquote,body,button,dd,dl,dt,fieldset,form,h1,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0}address,cite,dfn,em,var{font-style:normal}code,kbd,pre,samp{font-family:courier new,courier,monospace}ol,ul{list-style:none}a{text-decoration:none}a:hover{text-decoration:underline}legend{color:#000}fieldset,img{border:0}button,input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0} | ||
+ | .Off {display:none !important} | ||
+ | </style> | ||
+ | <title>2019 Team:Fudan-TSI Software</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <div id="FudanTSIdivWrapper"><div id="FudanTSIBody"> | ||
+ | <header> | ||
+ | <div id="emptyBar" style="position:relative;width: 100%;"></div><nav id="topNav" class="black z-depth-0_5"><div class="nav-wrapper"><div id="teamLogo" class="brand-logo"> <a href="/Team:Fudan-TSI" target="_self"><img alt="2019 team logo" src="https://static.igem.org/mediawiki/2019/d/d3/T--Fudan-TSI--HomepageLogo.gif"></a></div><ul id="nav-mobile" class="right"> | ||
+ | <li> <a id="navList" data-target="slide-out" class="waves-effect waves-light sidenav-trigger right"> <i class="fa fa-navicon" style="font-size: 24px"></i> </a></li></ul></div> </nav> | ||
+ | <!-- Dropdown and List elements in navigation bar --> | ||
+ | <ul id="slide-out" class="sidenav"> | ||
+ | <li style="padding: 0"><div class="sidenavBanner"> | ||
+ | <div class="background"></div> | ||
+ | <p class="flow-text" style="width:100%;text-align:center"><span class="white-text">Software</span></p> | ||
+ | </div></li> | ||
+ | <li> | ||
+ | <ul class="collapsible expandable"> | ||
+ | <li class="onThisPageNav"><span>On this page</span></li> | ||
+ | <li class="onThisPageNav"><a href="#section1">Motivation</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section2">Theoretical basis</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section3">User guidelines</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section4">References</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section5">Demo</a></li> | ||
− | + | <li><span class="pageSidebar">Team: Fudan-TSI</span></li><li><div class="collapsible-header"><span class="pageSidebar">Project</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Description">Background</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Design">Design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Results</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div></li><li><div class="collapsible-header active"><span class="pageSidebar">Model</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Software">Software</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Parts</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Human practices</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Team</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Team">Members</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a class="pageSidebar" href="https://2018.igem.org/Team:Fudan/Heritage" target=_blank>Heritage</a></li></ul></div></li> | |
− | + | </ul><!-- .expandable --> | |
− | + | </li> | |
− | + | <li><div class="placeHolder"></div></li> | |
− | + | </ul> | |
− | + | </header> | |
− | + | ||
+ | <div id="pageContent"> | ||
+ | <div id="contentBanner" class="figureBanner"> | ||
+ | <div class="row"> | ||
+ | <div class="col s12 hide-on-med-and-up"> | ||
+ | <h1><br/>Software</h1> | ||
+ | <p class="flow-text">Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success.</p> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class="hide-on-small-only"> | ||
+ | <div style="text-align:center;padding-top:80px"><center><img style="height:120px;width:auto" src="https://static.igem.org/mediawiki/2019/6/6f/T--Fudan-TSI--coverSoftware.gif" /></center></div> | ||
+ | </div> | ||
+ | </div> | ||
− | / | + | <!--//////////////////////////////////////////////////// |
− | / | + | do not edit above, if must BE CAREFUL |
− | / | + | //////////////////////////////////////////////////////--> |
+ | <div class="container"> | ||
+ | <!-- side navigator of page content --> | ||
+ | <ul id="pageContentNav" class="hide-on-med-and-down z-depth-0"> | ||
+ | <li class="onThisPageNav"><a href="#section1">Motivation</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section2">Theoretical basis</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section3">User guidelines</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section4">References</a></li> | ||
+ | <li class="onThisPageNav"><a href="#section5">Demo</a></li> | ||
+ | <li><a href="/Team:Fudan-TSI/Software">Software</a></li> | ||
+ | </ul> | ||
+ | <!-- main content of the page --> | ||
+ | <main> | ||
− | + | <div id="section1" class="section container scrolSpy"> | |
− | + | <p class="flow-text">Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Studies have shown that tRNA functions as the primer for <i>in vivo</i> reverse transcription initiation: the 5' end of the tRNA interacts with RT, and the 3' end matches with the mRNA encoding the target. The software consists of 4 parts: reverse transcriptase selection, target sequence input, designed-tRNA visualization, and primer output. Although we only test MMLV-RT experimentally, the software can adjust its designing method based on the properties of well-studied RT from 3 species, MMLV, HIV-1 and RSV. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <h2>Motivation</h2> | |
− | + | <p class="flow-text">Previous studies have shown that a tRNA primer is required for the initiation of reverse transcription <a href="#Ref1">(Dahlberg et al.)</a>. In our system, we express the tRNA primer in <i>E. coli</i> by cloning it onto the plasmid that is used for generating the tools for mutation, i.e. P_mutant. However, designing the primer sequence according to different target sequences is time-consuming and needs many adjustments to find the perfect match. This motivates us to build a software for tRNA primer designing.</p> | |
− | + | </div> | |
− | + | ||
− | + | <div id="section2" class="section container scrolSpy"> | |
− | + | <h2>Theoretical basis</h2> | |
− | + | <p class="flow-text">Previous studies have reported that the interactions between tRNA primer and mRNA template as well as the reverse transcriptase are crucial in directing subsequent cDNA synthesis <a href="#Ref1">(James E. Dahlberg et al.)</a>. Specifically, according to the model for reverse transcription proposed by <a href="#Ref2">Kulpa et al.</a>, reverse transcription includes 5 steps (<a href="#Fig1">Figure 1</a>), in which the annealing of tRNA primer to the primer binding site (PBS) region on mRNA template is crucial for the synthesis of minus strand strong stop DNA (–ssDNA) and the following cDNA synthesis process.</p> | |
− | + | ||
− | + | ||
− | + | <div class="figureHolder" id="Fig1"> | |
− | + | <img class="responsive-img" src="https://static.igem.org/mediawiki/2019/e/e9/T--Fudan-TSI--SFig1.gif" /> | |
− | + | <p>Figure 1. Model for the whole process of reverse transcription.</p> | |
− | + | </div> | |
− | + | <p class="flow-text">Many researchers have studied the reverse transcription process in viruses, from which we find two critical properties in the annealing process of tRNA primer and PBS that should be taken into consideration when building the tRNA primer designer.</p> | |
− | + | <p class="flow-text">The first property is that the 3'-terminal of the tRNA primer should be complementary to the PBS on mRNA template (<a href="#Ref2">Kosloff et al.</a>). The second one is that different viruses prefer specific type of tRNA primer for reverse transcription <a>(Kulpa et al.,</a><a> Kosloff et al.)</a>. What should also be noted is that for different viruses, the lengths of PBS as well as the types of tRNA primer are different. The PBS lengths and the preferred tRNA types of 3 most well-studied retroviruses are listed in Table 1.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <div class="tableHolder"> | |
− | + | <table> | |
− | + | <tr> | |
− | + | <th>Name of retrovirus</th> | |
− | + | <th>Length of PBS</th> | |
+ | <th>Preferred tRNA</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Moloney murine leukemia virus (MMLV)</td> | ||
+ | <td>18</td> | ||
+ | <td>tRNA<sup>Pro</sup></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Human immunodeficiency virus type 1(HIV-1)</td> | ||
+ | <td>18</td> | ||
+ | <td>tRNA<sup>Lys</sup></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Rous sarcoma virus (RSV)</td> | ||
+ | <td>17</td> | ||
+ | <td>tRNA<sup>Trp</sup></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <p>Table 1. PBS length and preferred tRNA types of well-studied retroviruses.</p> | ||
+ | </div> | ||
− | + | <p class="flow-text">These discoveries serve as the theoretical basis for our tRNA primer designer. So basically, the function of our tRNA primer designer is to change the tRNA template in order to suit the basic properties of the reverse transcriptase (MMLV RT / HIV-1 RT / RSV RT) selected by the user as well as to replace several nucleotides (17 or 18) on 3'-terminal of the tRNA templates to match with nucleotides at the 5'-terminal of the GOI which users input. Also, to make sure that the RNA sequence is a tRNA sequence, the secondary structure should be revealed. We achieve this goal by using the similar tRNA secondary structure prediction scheme as the one implemented in the opensource software tRNAfinder <a>(Kurokawa et al.)</a>.</p> | |
− | + | <p class="flow-text">Studies have shown that the primary factor guiding the selection of tRNA primer for MMLV-RT is the PBS sequence instead of the inherent nature of reverse transcriptase <a>(A. H. Lund et al.,</a><a> S. P. Goff et al.)</a>. So, by making mutations on both the PBS and tRNA sequence, the researchers have found that reverse transcription could still successfully take place while the virus’ titer is not greatly affected. Also, after several cycles of replication, the mutated sequence is not changed back to its original version <a>(Pedersen et al., 1997)</a>. Even though it is found that the primer is not stringent for MMLV, studies have revealed that the tRNA-like structure is necessary. A study that the inclusion of one single non-Watson-Crick base pair between PBS and tRNA primer would improve the replication efficiency (F. S. Pedersen et al., 1993), but we didn’t adopt this construct as the one base pair mismatch would often be changed to the full-complementary version after the first cycle of replication <a>(Pedersen et al., 1997)</a>, making this addition unnecessary.</p> | |
− | + | </div> | |
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <div id="section3" class="section container scrolSpy"> | |
− | + | <h2>User guidelines</h2> | |
− | + | <p class="flow-text">Our tRNA primer designer is <a href="http://9.cail.cn/tRNA_primer.html" target=_blank>a web tool</a> for potential users of our mutagenesis system to design their own tRNA primers according to their experimental setups. Here we provide a step-by-step guide to using this software.</p> | |
− | + | <p class="flow-text">Step 1. Select the type of reverse transcriptase (RT) that you want to use based on your experimental design, as shown in the figure below. Note that this software only allows you to choose from MMLV RT / HIV-1 RT / RSV RT.</p> | |
− | + | <div class="figureHolder" id="Fig2"> | |
− | + | <img class="responsive-img" src="https://static.igem.org/mediawiki/2019/archive/5/53/20191020091814%21T--Fudan-TSI--SFig2.gif" /> | |
− | + | </div> | |
− | + | ||
− | + | <p class="flow-text">Step 2. Input a DNA sequence that you want to mutate, as shown in the figure below (upper panel). You can find a demo for it if you click on the icon on the right side of the web page, as shown in the figure below (lower panel). The last 17/18 nucleotides (nt) of the sequence are selected to be PBS, depending on the type of RT that you have chosen in <a href="#Fig2">Step 1</a>. The length of PBS is 18nt if MMLV RT / HIV-1 RT is selected, and is 17nt if RSV RT is selected.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <div class="figureHolder" id="Fig3"> | |
− | + | <img class="responsive-img" src="https://static.igem.org/mediawiki/2019/archive/2/29/20191020091155%21T--Fudan-TSI--SFig3.gif" /> | |
− | + | </div> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <p class="flow-text">Note that the target sequence should be longer than 17 or 18 nucleotides based on your selected RT. Besides, it shouldn't contain any characters other than A/T/C/G. If any occurs, there will be an error message.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | <p class="flow-text">Step 3. Click on the "submit" button and see the result, as shown in the figure below (upper panel). The result is composed of two parts. The first part shows you the secondary structure of the template tRNA that you will be using as well as the designed tRNA primer. The fragment that can be annealed to PBS of the input DNA sequence is shown in red. The second part will give you the DNA sequence encoding the tRNA primer that satisfies your need. You can just copy it and use it elsewhere. These two parts are demonstrated in the figure below (lower panel).</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | <div class="figureHolder" id="Fig4"> | ||
+ | <img class="responsive-img" src="https://static.igem.org/mediawiki/2019/2/2d/T--Fudan-TSI--SFig_end.gif" /> | ||
+ | </div> | ||
+ | </div> | ||
− | / | + | <div id="section4" class="section container scrolSpy"> |
− | / | + | <h2>References</h2> |
+ | <ol id="ref" style="margin: 23px 0 0 0;"> | ||
+ | <li id="Ref1">[1]. Peters G , Dahlberg J E . RNA-directed DNA synthesis in Moloney murine leukemia virus: interaction between the primer tRNA and the genome RNA.[J]. Journal of Virology, 1979, 31(2):398-407.</li> | ||
+ | <li id="Ref2">[2]. Kulpa, D. Determination of the site of first strand transfer during Moloney murine leukemia virus reverse transcription and identification of strand transfer-associated reverse transcriptase errors[J]. EMBO (European Molecular Biology Organization) Journal, 1997, 16(4):856-865.</li> | ||
+ | <li id="Ref3">[3]. Palmer M T , Kirkman R , Kosloff B R , et al. tRNA Isoacceptor Preference prior to Retrovirus Gag-Pol Junction Links Primer Selection and Viral Translation[J]. Journal of Virology, 2007, 81(9):4397-4404.</li> | ||
+ | <li id="Ref4">[4]. Kinouchi M , Kurokawa K . [Special Issue: Fact Databases and Freewares] tRNAfinder: A Software System To Find All tRNA Genes in the DNA Sequence Based on the Cloverleaf Secondary Structure[J]. Journal of Computer Aided Chemistry, 2006, 7:116-124.</li> | ||
+ | <li id="Ref5">[5]. Lund, Anders H. et al. “Mutated primer binding sites interacting with different tRNAs allow efficient murine leukemia virus replication.” Journal of virology, 67 12 (1993): 7125-30.</li> | ||
+ | </ol> | ||
+ | </div> | ||
− | + | <div id="section5" class="section container scrolSpy"> | |
− | + | <h2>tRNA primer</h2> | |
− | + | <p class="flow-text">A demonstration of our software is embeded below. And, we have a beautified version running on <a href="http://9.cail.cn/tRNA_primer.html" target=_blank>Amazon EC2</a>.</p> | |
− | + | </div> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <div style="background-color:white;padding:2%"> | |
− | + | <p id="p_rev" style="color:black"> | |
− | + | <em>Please input the type of reverse transcriptase (RT) that you want to use:</em><br/> | |
− | + | <input type="radio" name="rev" value="MMLV" id="rev_MMLV" checked /><label for="rev_MMLV">MMLV</label><br/> | |
− | + | <input type="radio" name="rev" value="HIV1" id="rev_HIV1" /><label for="rev_HIV1">HIV1</label><br/> | |
− | + | <input type="radio" name="rev" value="RSV" id="rev_RSV" /><label for="rev_RSV">RSV</label> | |
− | + | </p> | |
− | + | <p id="p_target" style="color:black"> | |
− | + | <em>Please input a sequence that you want to mutate:</em><br/> | |
− | + | <textarea style="width:80%;resize:none;border:0;border-bottom:1px #ccc solid;" rows="2" id="target_seq"></textarea> | |
− | + | </p> | |
− | + | <p> | |
− | + | <input type="submit" value="submit" id="submit" /> | |
+ | <input type="submit" value="clear" id="clear" /> | ||
+ | <input type="submit" value="demo" id="demo" style="float:right" /> | ||
+ | </p> | ||
+ | <p id="progress" style="background:yellow;font-size:0.75em;line-height:11pt;text-indent:-10px;padding-left:15px;color:black"></p> | ||
+ | <div><table id="table_result" style="color:black"></table></div> | ||
+ | <div id="graph_result"></div> | ||
+ | <hr/> | ||
+ | <p id="p_primer" style="color:green" class="Off"> | ||
+ | <em>Your tRNA primer (complement to <u>Your tRNA</u>):</em><br/> | ||
+ | 5'-<span id="primer_seq"></span>-3' | ||
+ | </p> | ||
+ | <script> | ||
+ | var DEBUG = false, | ||
+ | PBS_len = 18; | ||
− | + | function getQueryStringArgs() { | |
− | + | var qs = location.search.length > 0 ? location.search.substring(1) : '', | |
− | + | args = {}, | |
− | + | items = qs.length ? qs.split('&') : [], | |
+ | item = null, | ||
+ | name = null, | ||
+ | value = null, | ||
+ | i = 0, | ||
+ | len = items.length; | ||
+ | for (i = 0; i < len; i += 1) { | ||
+ | item = items[i].split('='); | ||
+ | name = decodeURIComponent(item[0]); | ||
+ | value = decodeURIComponent(item[1]); | ||
+ | if (name.length) { | ||
+ | args[name] = value; | ||
+ | } | ||
+ | } | ||
+ | return args; | ||
+ | } | ||
+ | function cumsum(myarray) { | ||
+ | var new_array = []; | ||
+ | myarray.reduce(function(a,b,i) { return new_array[i] = a+b; }, 0); | ||
+ | return new_array; | ||
+ | } | ||
− | + | function complement(ele) { | |
− | + | if (ele === 'A') { | |
− | + | return 'U'; | |
− | + | } else if (ele === 'U' || ele === 'T') { | |
− | + | return 'A'; | |
+ | } else if (ele === 'G') { | ||
+ | return 'C'; | ||
+ | } else if (ele === 'C') { | ||
+ | return 'G'; | ||
+ | } | ||
+ | return 'N'; | ||
+ | } | ||
+ | function complement_dna(ele) { | ||
+ | if (ele === 'A') { | ||
+ | return 'T'; | ||
+ | } else if (ele === 'T' || ele === 'U') { | ||
+ | return 'A'; | ||
+ | } else if (ele === 'G') { | ||
+ | return 'C'; | ||
+ | } else if (ele === 'C') { | ||
+ | return 'G'; | ||
+ | } | ||
+ | return 'N'; | ||
+ | } | ||
+ | function isComplement(Base1, Base2, drawMode, alignMode) { | ||
+ | if (!drawMode) { drawMode = 'none'; } | ||
+ | if (!alignMode) { alignMode = 'none'; } | ||
+ | if (Base1 == complement(Base2)) { | ||
+ | if (alignMode === 'vertical') { | ||
+ | return 3; | ||
+ | } else { | ||
+ | return 1; | ||
+ | } | ||
+ | } else if ( (Base1 === 'G' && Base2 === 'U') || | ||
+ | (Base1 === 'U' && Base2 === 'G') ) { | ||
+ | if (drawMode === 'draw') { | ||
+ | return 2; | ||
+ | } else { | ||
+ | return 1; | ||
+ | } | ||
+ | } else { | ||
+ | return 0; | ||
+ | } | ||
+ | } | ||
− | + | function anti_parallel(t) { | |
− | + | var apt_list = [], | |
− | + | t_list = t.split(''); | |
+ | $.each(t_list, function (iV, ele) { | ||
+ | if (ele === 'A') { | ||
+ | apt_list.unshift( 'U' ); | ||
+ | } else if (ele === 'T' || ele === 'U') { | ||
+ | apt_list.unshift( 'A' ); | ||
+ | } else if (ele === 'G') { | ||
+ | apt_list.unshift( 'C' ); | ||
+ | } else if (ele === 'C') { | ||
+ | apt_list.unshift( 'G' ); | ||
+ | } | ||
+ | }); | ||
+ | return apt_list.join(''); | ||
+ | } | ||
− | + | function complementSeq(t) { | |
− | + | var cs_list = [], | |
− | + | t_list = t.split(''); | |
− | + | $.each(t_list, function (iV, ele) { | |
− | + | cs_list.push( complement(ele) ); | |
− | + | }); | |
+ | return cs_list.join(''); | ||
+ | } | ||
+ | function complementSeq_dna(t) { | ||
+ | var cs_list = [], | ||
+ | t_list = t.split(''); | ||
+ | $.each(t_list, function (iV, ele) { | ||
+ | cs_list.push( complement_dna(ele) ); | ||
+ | }); | ||
+ | return cs_list.join(''); | ||
+ | } | ||
− | + | function reverseAB(t, A, B) { | |
− | + | if (A <= B || A >= t.length) { return ''; } | |
− | + | var tt = ''; | |
− | + | for (let step = A; step > B; step--) { | |
− | + | tt += t.substr(step, 1); | |
− | + | } | |
+ | return tt; | ||
+ | } | ||
+ | function findRegion(seq, L) { | ||
+ | var new_s = {}, | ||
+ | Max_Mismatch = 2; | ||
+ | // return the basic components of tRNA (e.g. TArm, TLoop, etc.) for subsequent plotting step | ||
+ | var S, Base1, Base2, mismatch1, mismatch2, mismatch3, MisMatch_total, | ||
+ | AcptStemStart, AcptStemEnd, AcptStemLen, | ||
+ | DLoopStart, DLoopEnd, DLoopLen, | ||
+ | AtCLoopEnd, AtCLoopStart, AtCLoopStemLen, | ||
+ | TArmSiteStart, TArmSiteEnd, TArmStemLen; | ||
+ | for (let n = 0; n < L; n++) { | ||
+ | for (let interval = 69; interval < 94; interval++) { | ||
+ | AcptStemStart = n; | ||
+ | AcptStemEnd = n + interval; | ||
+ | AcptStemLen = 7; | ||
+ | MisMatch_total = 0; | ||
+ | if (AcptStemEnd >= L) { continue; } | ||
+ | mismatch1 = 0; | ||
+ | S = 0; | ||
+ | for (let i = 0; i < AcptStemLen; i++) { | ||
+ | Base1 = seq.substr(AcptStemStart+i, 1); | ||
+ | Base2 = seq.substr(AcptStemEnd-i, 1); | ||
+ | S += isComplement(Base1, Base2); | ||
+ | } | ||
+ | mismatch1 += (AcptStemLen - S); | ||
+ | if (S < AcptStemLen-Max_Mismatch || mismatch1 > Max_Mismatch) { continue; } | ||
+ | TArmSiteEnd = n + interval - AcptStemLen; | ||
+ | TArmSiteStart = TArmSiteEnd - 16; | ||
+ | TArmStemLen = 5; | ||
+ | S = 0; | ||
+ | for (let i = 0; i < TArmStemLen; i++) { | ||
+ | Base1 = seq.substr(TArmSiteStart+i, 1); | ||
+ | Base2 = seq.substr(TArmSiteEnd-i, 1); | ||
+ | S += isComplement(Base1, Base2); | ||
+ | } | ||
+ | mismatch1 += (TArmStemLen - S); | ||
+ | MisMatch_total = mismatch1; | ||
+ | if (S < 4 || MisMatch_total > Max_Mismatch) { continue; } | ||
+ | for (let DLoopLen = 14; DLoopLen < 19; DLoopLen++) { | ||
+ | MisMatch_total = mismatch1; | ||
+ | DLoopStart = n + 9; | ||
+ | DLoopEnd = DLoopStart + DLoopLen; | ||
+ | S = 0; | ||
+ | if (DLoopLen < 17) { DLoopStemLen = 3; } | ||
+ | else { DLoopStemLen = 4; } | ||
+ | for (let i = 0; i < DLoopStemLen; i++) { | ||
+ | Base1 = seq.substr(DLoopStart+i, 1); | ||
+ | Base2 = seq.substr(DLoopEnd-i, 1); | ||
+ | S += isComplement(Base1, Base2); | ||
+ | } | ||
+ | mismatch2 = DLoopStemLen - S; | ||
+ | MisMatch_total += mismatch2; | ||
+ | if (MisMatch_total <= Max_Mismatch) { | ||
+ | AtCLoopStart = DLoopEnd + 2; | ||
+ | AtCLoopStemLen = 5; | ||
+ | for (let AtCLoopEnd = Math.max(AtCLoopStart+16, AcptStemEnd-54); | ||
+ | AtCLoopEnd <= Math.min(AtCLoopStart+16, AcptStemEnd-28); AtCLoopEnd++) { | ||
+ | S = 0; | ||
+ | MisMatch_total = mismatch1 + mismatch2; | ||
+ | for (let i = 0; i < AtCLoopStemLen; i++) { | ||
+ | Base1 = seq.substr(AtCLoopStart+i, 1); | ||
+ | Base2 = seq.substr(AtCLoopEnd-i, 1); | ||
+ | S += isComplement(Base1, Base2); | ||
+ | } | ||
+ | mismatch3 = AtCLoopStemLen - S; | ||
+ | MisMatch_total += mismatch3; | ||
+ | if (MisMatch_total <= Max_Mismatch) { | ||
+ | $('#progress').append('<br/>'+(AcptStemStart+1)+'..'+(AcptStemEnd+1+1)+' '); | ||
+ | $('#progress').append('mismatch='+MisMatch_total); | ||
+ | GroupNum = [AcptStemStart, AcptStemLen, 2, 4, DLoopLen-2*4+1, 4, 1, AtCLoopStemLen, | ||
+ | AtCLoopEnd-AtCLoopStart-2*AtCLoopStemLen+1, AtCLoopStemLen, | ||
+ | TArmSiteStart-AtCLoopEnd-1, TArmStemLen, 16-2*TArmStemLen+1, | ||
+ | TArmStemLen, AcptStemLen, seq.length-AcptStemLen]; | ||
+ | GroupNum = cumsum(GroupNum); | ||
+ | new_s = { | ||
+ | AcceptArm: '', | ||
+ | Interval1: '', | ||
+ | DArm: '', | ||
+ | DLoop: '', | ||
+ | DArmComp: '', | ||
+ | Interval2: '', | ||
+ | AnticodonArm: '', | ||
+ | AnticodonLoop: '', | ||
+ | AnticodonArmComp: '', | ||
+ | VariableLoop: '', | ||
+ | TArm: '', | ||
+ | TLoop: '', | ||
+ | TArmComp: '', | ||
+ | AcceptArmComp: '', | ||
+ | Redundance:'' | ||
+ | }; | ||
+ | OutputName = [ | ||
+ | 'AcceptArm', | ||
+ | 'Interval1', | ||
+ | 'DArm', | ||
+ | 'DLoop', | ||
+ | 'DArmComp', | ||
+ | 'Interval2', | ||
+ | 'AnticodonArm', | ||
+ | 'AnticodonLoop', | ||
+ | 'AnticodonArmComp', | ||
+ | 'VariableLoop', | ||
+ | 'TArm', | ||
+ | 'TLoop', | ||
+ | 'TArmComp', | ||
+ | 'AcceptArmComp', | ||
+ | 'Redundance' | ||
+ | ]; | ||
+ | for (let i = AcptStemStart; i < L; i++) { | ||
+ | for (let j = 0; j < 15; j++) { | ||
+ | if (i >= GroupNum[j] && i < GroupNum[j+1]) { | ||
+ | new_s[OutputName[j]] += seq.substr(i, 1); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | DEBUG && console.log(new_s); | ||
+ | return new_s; | ||
+ | } | ||
+ | } // for AtCLoopEnd | ||
+ | } | ||
+ | } // for DLoopLen | ||
+ | } // for interval | ||
+ | } // for n | ||
+ | $('#progress').append('<br/>!! not a tRNA, failed to draw'); | ||
+ | return new_s; | ||
+ | } | ||
+ | function linkerDtm(seq1, seq2, mode) { | ||
+ | var linkSymbol = [' ', '-', '+', '|'], | ||
+ | L1 = seq1.length, | ||
+ | L2 = seq2.length, L, linkerSeq = ''; | ||
+ | if (L1 != L2) { | ||
+ | return 0; | ||
+ | } else { | ||
+ | L = L1; | ||
+ | } | ||
+ | for (let i = 0; i < L; i++){ | ||
+ | Base1 = seq1.substr(i, 1); | ||
+ | Base2 = seq2.substr(L-1-i, 1); | ||
+ | linkerSeq += linkSymbol[ isComplement(Base1, Base2, 'draw', mode) ]; | ||
+ | } | ||
+ | return linkerSeq; | ||
+ | } | ||
− | + | function TmCal67(seq) { | |
− | /*************** | + | /* Tm= (wA+xT)*2 + (yG+zC)*4 - 16.6*log10(0.050) + 16.6*log10([Na+]) |
+ | return 58.1+(58.4*c/a)+(11.8*(c/a)*(c/a))-(820/a) | ||
+ | Tm= (wA+xT)*2 + (yG+zC)*4 +21.597-19.487 | ||
+ | return b*2+c*4+2.11 */ | ||
+ | if (!seq) { return 0; } | ||
+ | var a = seq.length, b, c; | ||
+ | b = (seq.split('A').length - 1) + (seq.split('U').length - 1); | ||
+ | c = (seq.split('G').length - 1) + (seq.split('C').length - 1); | ||
+ | return b*2+c*4+2.1 | ||
+ | } | ||
− | + | function draw_tRNA(ForDraw, Type_RT, preId) { | |
− | + | var linker = {}, pre; | |
− | + | if (ForDraw.DLoop.length < 9) { | |
− | + | for (let i = 0; i < (9 - ForDraw.DLoop.length); i++) { | |
− | + | ForDraw.DLoop += ' '; | |
− | + | } | |
− | + | } | |
+ | linker['AcceptorArmLink'] = linkerDtm(ForDraw.AcceptArm, ForDraw.AcceptArmComp) | ||
+ | linker['DArmLink'] = linkerDtm(ForDraw.DArmComp,ForDraw.DArm, 'vertical') | ||
+ | linker['AnticodonArmLink'] = linkerDtm(ForDraw.AnticodonArm, ForDraw.AnticodonArmComp) | ||
+ | linker['TArmLink'] = linkerDtm(ForDraw.TArm, ForDraw.TArmComp, 'vertical') | ||
+ | pre = ' ' + ForDraw.Redundance + '-5\n'; | ||
+ | pre += ' 3-' + ForDraw.AcceptArm[0] + | ||
+ | ' ' + linker.AcceptorArmLink[0] + ' ' + | ||
+ | ForDraw.AcceptArmComp[ForDraw.AcceptArm.length-1]+'\n'; | ||
+ | for (let i = 1; i < ForDraw.AcceptArm.length-1; i++) { | ||
+ | pre += ' ' + ForDraw.AcceptArm[i] + | ||
+ | ' ' + linker.AcceptorArmLink[i] + ' ' + | ||
+ | ForDraw.AcceptArmComp[ForDraw.AcceptArm.length-1-i]+'\n'; | ||
+ | } | ||
+ | pre += ' ' + ForDraw.AcceptArm[ForDraw.AcceptArm.length-1] + | ||
+ | ' ' + linker.AcceptorArmLink[ForDraw.AcceptArm.length-1] + | ||
+ | ' ' + ForDraw.AcceptArmComp[0] + | ||
+ | ' ' + ForDraw.TLoop[6] + ' ' + ForDraw.TLoop[5]+'\n'; | ||
+ | pre += ' ' + ForDraw.Interval1[0] + ' ' + | ||
+ | ForDraw.TArmComp[4] + ' ' + | ||
+ | ForDraw.TArmComp[3] + ' ' + | ||
+ | ForDraw.TArmComp[2] + ' ' + | ||
+ | ForDraw.TArmComp[1] + ' ' + | ||
+ | ForDraw.TArmComp[0] + ' ' + ForDraw.TLoop[4]+'\n'; | ||
+ | pre += ' ' + ForDraw.DLoop[1] + ' ' + ForDraw.DLoop[0] + | ||
+ | ' ' + ForDraw.Interval1[1] + | ||
+ | ' ' + linker.TArmLink[0] + ' ' + | ||
+ | linker.TArmLink[1] + ' ' + | ||
+ | linker.TArmLink[2] + ' ' + | ||
+ | linker.TArmLink[3] + ' ' + | ||
+ | linker.TArmLink[4] + ' ' + ForDraw.TLoop[3]+'\n'; | ||
+ | pre += ' ' + ForDraw.DLoop[2] + ' ' + | ||
+ | ForDraw.DArm[3] + ' ' + | ||
+ | ForDraw.DArm[2] + ' ' + | ||
+ | ForDraw.DArm[1] + ' ' + | ||
+ | ForDraw.DArm[0] + ' ' + | ||
+ | ForDraw.TArm[0] + ' ' + | ||
+ | ForDraw.TArm[1] + ' ' + | ||
+ | ForDraw.TArm[2] + ' ' + | ||
+ | ForDraw.TArm[3] + ' ' + | ||
+ | ForDraw.TArm[4] + ' ' + ForDraw.TLoop[2]+'\n'; | ||
+ | pre += ' ' + ForDraw.DLoop[3] + ' ' + | ||
+ | linker.DArmLink[0] + ' ' + | ||
+ | linker.DArmLink[1] + ' ' + | ||
+ | linker.DArmLink[2] + ' ' + | ||
+ | linker.DArmLink[3] + ' ' + | ||
+ | ForDraw.VariableLoop[4] + ' ' + | ||
+ | ForDraw.TLoop[1] + ' ' + ForDraw.TLoop[0]+'\n'; | ||
+ | if (Type_RT === 'HIV1') { | ||
+ | pre += ' ' + ForDraw.DLoop[4] + ' ' + | ||
+ | ForDraw.DArmComp[0] + ' ' + | ||
+ | ForDraw.DArmComp[1] + ' ' + | ||
+ | ForDraw.DArmComp[2] + ' ' + | ||
+ | ForDraw.DArmComp[3] + ' ' + | ||
+ | ForDraw.VariableLoop[4] + ' \n'; | ||
+ | pre += ' ' + ForDraw.DLoop[6] + ' ' + ForDraw.DLoop[7] + | ||
+ | ' ' + ForDraw.Interval2 + | ||
+ | ' ' + ForDraw.VariableLoop[0] + | ||
+ | ' ' + ForDraw.VariableLoop[1] + | ||
+ | ' ' + ForDraw.VariableLoop[2]+'\n'; | ||
+ | } else { | ||
+ | pre += ' ' + ForDraw.DLoop[4] + ' ' + | ||
+ | ForDraw.DLoop[6] + ' ' + | ||
+ | ForDraw.DArmComp[0] + ' ' + | ||
+ | ForDraw.DArmComp[1] + ' ' + | ||
+ | ForDraw.DArmComp[2] + ' ' + | ||
+ | ForDraw.DArmComp[3] + ' ' + | ||
+ | ForDraw.VariableLoop[3] + '\n'; | ||
+ | pre += ' ' + ForDraw.Interval2 + | ||
+ | ' ' + ForDraw.VariableLoop[0] + | ||
+ | ' ' + ForDraw.VariableLoop[1] + | ||
+ | ' ' + ForDraw.VariableLoop[2]+'\n'; | ||
+ | } | ||
+ | for (let i = 0; i < ForDraw.AnticodonArm.length; i++) { | ||
+ | pre += ' ' + ForDraw.AnticodonArm[i] + | ||
+ | ' ' + linker.AnticodonArmLink[i] + ' ' + | ||
+ | ForDraw.AnticodonArmComp[ForDraw.AnticodonArm.length-1-i]+'\n'; | ||
+ | } | ||
+ | pre += ' ' + ForDraw.AnticodonLoop[0] + ' ' + ForDraw.AnticodonLoop[6]+'\n'; | ||
+ | pre += ' ' + ForDraw.AnticodonLoop[1] + ' ' + ForDraw.AnticodonLoop[5]+'\n'; | ||
+ | pre += ' ' + ForDraw.AnticodonLoop[2] + | ||
+ | ' ' + ForDraw.AnticodonLoop[3] + ' ' + ForDraw.AnticodonLoop[4]; | ||
+ | $('#'+preId).text(pre); | ||
+ | } | ||
+ | function tRNA_primer(std_q) { | ||
+ | var PBS = reverseAB(std_q, std_q.length-1, std_q.length-PBS_len-1); | ||
+ | var Primerseq = complementSeq(PBS); | ||
+ | var temp_seq = '', | ||
+ | Type_RT = $('input[name="rev"]:checked').val(); | ||
+ | if (Type_RT === 'MMLV') { | ||
+ | temp_seq = 'GGCUCGUUGGUCUAGGGGUAUGAUUCUCGCUUAGGGUGCGAGAGGUCCCGGGUUCAAAUCCCGGACGAGCCCCCA'; | ||
+ | } else if (Type_RT === 'HIV1') { | ||
+ | temp_seq = 'GCCCGGCUAGCUCAGUCGGUAGAGCAUCAGACUUUUAAUCUGAGGGUCCAGGGTUCAAGUCCCUGUUCGGGCGCCA'; | ||
+ | } else if (Type_RT === 'RSV') { | ||
+ | temp_seq = 'GACCUCGUGGCGCAACGGUAGCGCGUCUGACUCCAGAUCAGAAGGCUGCGUGUUCGAAUCACGUCGGGGUCACCA'; | ||
+ | } | ||
+ | var temp = findRegion( temp_seq.replace('T','U'), temp_seq.length ); | ||
+ | if (temp) { | ||
+ | // tRNA_Pro for MMLV RT, tRNA_Lys for HIV-1 RT, tRNA_Trp for RSV RT | ||
+ | $('#table_result').html('<tr><th>For ' + Type_RT + ' RT<br/>template tRNA ' + | ||
+ | '(Tm<sup>stem</sup> <span id="TmT"></span>)</th><th>Your tRNA ' + | ||
+ | '(Tm<sup>stem</sup> <span id="TmY"></span>)</th></tr>' + | ||
+ | '<tr><td><pre id="preLeft"></pre></td><td><pre id="preRight"></pre></td></tr>'); | ||
+ | draw_tRNA(temp, Type_RT, 'preLeft'); | ||
+ | $('#TmT').text( TmCal67(temp.AcceptArm) ); | ||
+ | var qT = temp; | ||
+ | qT.Redundance = reverseAB(Primerseq, qT.Redundance.length-1, -1); | ||
+ | qT.AcceptArmComp = reverseAB(Primerseq, | ||
+ | qT.Redundance.length+qT.AcceptArmComp.length-1, qT.Redundance.length-1); | ||
+ | qT.AcceptArm = anti_parallel(qT.AcceptArmComp); | ||
+ | qT.TArmComp = reverseAB(Primerseq.substr(qT.Redundance.length+qT.AcceptArmComp.length, 5), 4, -1); | ||
+ | qT.TArm = anti_parallel(qT.TArmComp); | ||
+ | var remainNotR = Primerseq.substr(qT.TArmComp.length+qT.Redundance.length+qT.AcceptArmComp.length); | ||
+ | qT.TLoop = qT.TLoop.substr(0, qT.TLoop.length-remainNotR.length) + reverseAB(remainNotR, remainNotR.length-1, -1); | ||
+ | draw_tRNA(qT, Type_RT, 'preRight'); | ||
+ | $('#TmY').text( TmCal67(qT.AcceptArm) ); | ||
+ | return complementSeq_dna( qT.AcceptArm + qT.Interval1 + qT.DArm + qT.DArmComp + qT.Interval2 + | ||
+ | qT.AnticodonArm + qT.AnticodonLoop + qT.VariableLoop + qT.TArm + | ||
+ | qT.TLoop + qT.TArmComp + qT.AcceptArmComp + qT.Redundance ); | ||
+ | } else { | ||
+ | return 'ERROR' | ||
+ | } | ||
+ | } | ||
− | + | function clean_results() { | |
− | + | $('#progress').text(''); | |
− | + | $('#table_result').html(''); | |
− | + | $('#graph_result').html(''); | |
− | + | $('#primer_seq').text(''); | |
− | + | $('#p_primer').addClass('Off'); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | $(document).ready(function () { | ||
+ | $('#submit').on('click', function (event) { | ||
+ | clean_results(); | ||
+ | var q = $('#target_seq').val(); | ||
+ | if (q) { | ||
+ | std_q = q.replace(/[^atgc]/gi, '').toUpperCase(); | ||
+ | DEBUG && $('#progress').text('Input: ' + std_q); | ||
+ | if (std_q && std_q.length >= PBS_len) { | ||
+ | //$('#primer_seq').text(tRNA_primer( std_q )); | ||
+ | var targetprimer = tRNA_primer(std_q); | ||
+ | $('#primer_seq').html(targetprimer.substr(0,targetprimer.length-PBS_len)+ | ||
+ | '<span style="color:blue">'+targetprimer.substr(targetprimer.length-PBS_len,PBS_len)+'</span>'); | ||
+ | $('#p_primer').removeClass('Off'); | ||
+ | DEBUG || $('#progress').addClass('Off'); | ||
+ | } else { | ||
+ | $('#progress').text('!! the sequence should be longer'); | ||
+ | $('#target_seq').focus(); | ||
+ | } | ||
+ | } else { | ||
+ | $('#progress').text('!! please input something'); | ||
+ | $('#target_seq').focus(); | ||
+ | } | ||
+ | event.preventDefault(); | ||
+ | }); | ||
− | + | var r = getQueryStringArgs(); | |
− | + | if (r.seq) { | |
− | + | var q = r.seq; | |
− | + | $('#target_seq').val(r.seq); | |
− | + | std_q = t.replace(/[^atgc]/gi, '').toUpperCase(); | |
− | + | //plus_strand_search(s, std_q); | |
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | $('#clear').on('click', function (event) { | |
− | + | clean_results(); | |
+ | $('#target_seq').val(''); | ||
+ | $('#rev_MMLV').prop('checked', true); | ||
+ | PBS_len = 18; | ||
+ | $('#target_seq').focus(); | ||
+ | event.preventDefault(); | ||
+ | }); | ||
− | + | $('#demo').on('click', function (event) { | |
− | + | clean_results(); | |
− | + | var q = 'CGATGATCGATCAGCTAGCTAGTCGATCGATCGATC'; | |
+ | $('#target_seq').val(q); | ||
+ | //$('#primer_seq').text(tRNA_primer( q )); | ||
+ | var demoprimer = tRNA_primer(q); | ||
+ | $('#primer_seq').html(demoprimer.substr(0,demoprimer.length-PBS_len)+ | ||
+ | '<span style="color:blue">'+demoprimer.substr(demoprimer.length-PBS_len,PBS_len)+'</span>'); | ||
+ | $('#p_primer').removeClass('Off'); | ||
+ | DEBUG || $('#progress').addClass('Off'); | ||
+ | event.preventDefault(); | ||
+ | }); | ||
+ | $('input[name="rev"]').on('change', function () { | ||
+ | if (this.checked) { | ||
+ | clean_results(); | ||
+ | if (this.value === 'MMLV') { | ||
+ | DEBUG && $('#progress').text('MMLV'); | ||
+ | PBS_len = 18; | ||
+ | } else if (this.value === 'HIV1') { | ||
+ | DEBUG && $('#progress').text('HIV1'); | ||
+ | PBS_len = 18; | ||
+ | } else if (this.value === 'RSV') { | ||
+ | DEBUG && $('#progress').text('RSV'); | ||
+ | PBS_len = 17; | ||
+ | } else { | ||
+ | $('#progress').text('This type of reverse transcriptase is not supported.'); | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | </script> | ||
+ | </div> | ||
+ | <p><br/><br/></p> | ||
− | + | <!--//////////////////////////////////////////////////// | |
− | + | do not edit below, if must BE CAREFUL | |
− | + | //////////////////////////////////////////////////////--> | |
− | + | </main></div><!-- end of side navigator and main of the page --> | |
− | + | ||
− | + | ||
− | + | ||
− | <!------------------------------------------------------------------------------------------------- | + | <!--Abstract on content page--> |
− | <!-- | + | <div id="abstractContent" class="z-depth-2"> |
+ | <a href="#!"><img alt="project summary" src="https://static.igem.org/mediawiki/2018/9/96/T--Fudan--X.svg"></a> | ||
+ | <div class="container"> | ||
+ | <h5 style="margin:0;padding:10px 0;">Software by Team:Fudan-TSI</h5> | ||
+ | <p class="flow-text" style="margin:0">Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Studies have shown that tRNA functions as the primer for in vivo reverse transcription initiation: the 5' end of the tRNA interacts with RT, and the 3' end matches with the mRNA encoding the target. The software consists of 4 parts: reverse transcriptase selection, target sequence input, designed-tRNA visualization, and primer output. Although we only test MMLV-RT experimentally, the software can adjust its designing method based on the properties of well-studied RT from 3 species, MMLV, HIV-1 and RSV. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success. | ||
+ | </p> | ||
+ | </div> | ||
+ | </div> | ||
+ | <!-- Floating Btns, Footer with sponsors --> | ||
+ | <div class="floatingBtn"> <a href="#!" id="abstractBtn" class="btn"> <i class="fa fa-sticky-note" style="font-size:30px;line-height:50px"></i> </a> <a href="#FudanTSIdivWrapper" class="btn"> <i class="fa fa-angle-up" style="font-size:48px;line-height:45px"></i> </a></div> <footer id="FudanTSIfooter" class="page-footer blue-grey darken-1"><div class="container"><div class="row"><div id="sponsor" class="col m3 s12 row"> <a href="https://2019.igem.org/Team:Fudan-TSI"><img alt="2019 Team:Fudan-TSI logo white" class="col s3 m6 l3" style="position:relative; padding: 0.45em 0.3rem; margin:-0.15rem 0; left: -0.45rem;" src="https://static.igem.org/mediawiki/2019/0/0f/T--Fudan-TSI--LogoGrey.gif"> </a><a href="http://www.fudan.edu.cn/en/" target="_blank"><img class="col s3 m6 l3" alt="Fudan University" src="https://static.igem.org/mediawiki/2018/f/f7/T--Fudan--schoolLogo.png"> </a><a href="http://life.fudan.edu.cn/" target="_blank"><img class="col s3 m6 l3" style="margin-bottom: 4%;/* 该图比其他小一点,排版需要 */" alt="School of Life Sciences, Fudan University" src="https://static.igem.org/mediawiki/2018/1/1d/T--Fudan--schoolOfLifeSciencesIcon.png"> </a><a href="http://www.yfc.cn/en/" target="_blank"><img class="col s3 m6 l3" style="padding: 0.15rem 0.9rem;" alt="Yunfeng Capital" src="https://static.igem.org/mediawiki/2018/e/e2/T--Fudan--yunfengLogo.png"> </a><h3 class="col s12" style="text-align:left;font-size:12.5px">R-Evolution: an <i>in vivo</i> sequence-specific toolbox for continuous mutagenesis</h3></div><div id="footerNavList" class="col m9 s12 row"><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Description">Project</a></span><ul><li><a href="/Team:Fudan-TSI/Description">Background</a></li><li><a href="/Team:Fudan-TSI/Design">Design</a></li><li><a href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Demonstrate">Results</a></span><ul><li><a href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div><div class="col s12 m4 active"> <span><a href="/Team:Fudan-TSI/Model">Model</a></span><ul><li><a href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a href="/Team:Fudan-TSI/Software">Software</a></li><li><a href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></div><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Parts">Parts</a></span><ul><li><a href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Human_Practices">Outreach</a></span><ul><li><a href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Team">Team</a></span><ul><li><a href="/Team:Fudan-TSI/Team">Members</a></li><li><a href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a href="https://2018.igem.org/Team:Fudan/Heritage" target=_blank>Heritage</a></li></ul></div><div class="col s12 m4"> </div></div></div></div></div><div class="footer-copyright"><div class="container"><div class="contactUS row"><div class="col s12 m6 l4"><i class="fa fa-location-arrow"></i> Life Sci Bldg, 2005 Songhu Rd, Shanghai</div><div class="col s12 m6 l2"><i class="fa fa-fax"></i> +86-21-31246727</div><div class="col s12 m6 l2"><i class="fa fa-envelope-o"></i> igem@fudan.edu.cn</div><div class="col s12 m6 l4"><i class="fa fa-twitter"></i> <i class="fa fa-wechat"></i> Fudan_iGEM</div></div></div></div> </footer> | ||
+ | </div></div></div><!-- #pageContent #FudanTSIBody #FudanTSIdivWrapper --> | ||
+ | <script src="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/materialize.js&action=raw&ctype=text/javascript"></script><!-- Materialize 1.0.0-rc.2 --> | ||
+ | <script src="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-js.js&action=raw&ctype=text/javascript"></script> | ||
+ | </body> | ||
</html> | </html> |
Revision as of 15:54, 21 October 2019
Software
Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Studies have shown that tRNA functions as the primer for in vivo reverse transcription initiation: the 5' end of the tRNA interacts with RT, and the 3' end matches with the mRNA encoding the target. The software consists of 4 parts: reverse transcriptase selection, target sequence input, designed-tRNA visualization, and primer output. Although we only test MMLV-RT experimentally, the software can adjust its designing method based on the properties of well-studied RT from 3 species, MMLV, HIV-1 and RSV. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success.
Motivation
Previous studies have shown that a tRNA primer is required for the initiation of reverse transcription (Dahlberg et al.). In our system, we express the tRNA primer in E. coli by cloning it onto the plasmid that is used for generating the tools for mutation, i.e. P_mutant. However, designing the primer sequence according to different target sequences is time-consuming and needs many adjustments to find the perfect match. This motivates us to build a software for tRNA primer designing.
Theoretical basis
Previous studies have reported that the interactions between tRNA primer and mRNA template as well as the reverse transcriptase are crucial in directing subsequent cDNA synthesis (James E. Dahlberg et al.). Specifically, according to the model for reverse transcription proposed by Kulpa et al., reverse transcription includes 5 steps (Figure 1), in which the annealing of tRNA primer to the primer binding site (PBS) region on mRNA template is crucial for the synthesis of minus strand strong stop DNA (–ssDNA) and the following cDNA synthesis process.
Figure 1. Model for the whole process of reverse transcription.
Many researchers have studied the reverse transcription process in viruses, from which we find two critical properties in the annealing process of tRNA primer and PBS that should be taken into consideration when building the tRNA primer designer.
The first property is that the 3'-terminal of the tRNA primer should be complementary to the PBS on mRNA template (Kosloff et al.). The second one is that different viruses prefer specific type of tRNA primer for reverse transcription (Kulpa et al., Kosloff et al.). What should also be noted is that for different viruses, the lengths of PBS as well as the types of tRNA primer are different. The PBS lengths and the preferred tRNA types of 3 most well-studied retroviruses are listed in Table 1.
Name of retrovirus | Length of PBS | Preferred tRNA |
---|---|---|
Moloney murine leukemia virus (MMLV) | 18 | tRNAPro |
Human immunodeficiency virus type 1(HIV-1) | 18 | tRNALys |
Rous sarcoma virus (RSV) | 17 | tRNATrp |
Table 1. PBS length and preferred tRNA types of well-studied retroviruses.
These discoveries serve as the theoretical basis for our tRNA primer designer. So basically, the function of our tRNA primer designer is to change the tRNA template in order to suit the basic properties of the reverse transcriptase (MMLV RT / HIV-1 RT / RSV RT) selected by the user as well as to replace several nucleotides (17 or 18) on 3'-terminal of the tRNA templates to match with nucleotides at the 5'-terminal of the GOI which users input. Also, to make sure that the RNA sequence is a tRNA sequence, the secondary structure should be revealed. We achieve this goal by using the similar tRNA secondary structure prediction scheme as the one implemented in the opensource software tRNAfinder (Kurokawa et al.).
Studies have shown that the primary factor guiding the selection of tRNA primer for MMLV-RT is the PBS sequence instead of the inherent nature of reverse transcriptase (A. H. Lund et al., S. P. Goff et al.). So, by making mutations on both the PBS and tRNA sequence, the researchers have found that reverse transcription could still successfully take place while the virus’ titer is not greatly affected. Also, after several cycles of replication, the mutated sequence is not changed back to its original version (Pedersen et al., 1997). Even though it is found that the primer is not stringent for MMLV, studies have revealed that the tRNA-like structure is necessary. A study that the inclusion of one single non-Watson-Crick base pair between PBS and tRNA primer would improve the replication efficiency (F. S. Pedersen et al., 1993), but we didn’t adopt this construct as the one base pair mismatch would often be changed to the full-complementary version after the first cycle of replication (Pedersen et al., 1997), making this addition unnecessary.
User guidelines
Our tRNA primer designer is a web tool for potential users of our mutagenesis system to design their own tRNA primers according to their experimental setups. Here we provide a step-by-step guide to using this software.
Step 1. Select the type of reverse transcriptase (RT) that you want to use based on your experimental design, as shown in the figure below. Note that this software only allows you to choose from MMLV RT / HIV-1 RT / RSV RT.
Step 2. Input a DNA sequence that you want to mutate, as shown in the figure below (upper panel). You can find a demo for it if you click on the icon on the right side of the web page, as shown in the figure below (lower panel). The last 17/18 nucleotides (nt) of the sequence are selected to be PBS, depending on the type of RT that you have chosen in Step 1. The length of PBS is 18nt if MMLV RT / HIV-1 RT is selected, and is 17nt if RSV RT is selected.
Note that the target sequence should be longer than 17 or 18 nucleotides based on your selected RT. Besides, it shouldn't contain any characters other than A/T/C/G. If any occurs, there will be an error message.
Step 3. Click on the "submit" button and see the result, as shown in the figure below (upper panel). The result is composed of two parts. The first part shows you the secondary structure of the template tRNA that you will be using as well as the designed tRNA primer. The fragment that can be annealed to PBS of the input DNA sequence is shown in red. The second part will give you the DNA sequence encoding the tRNA primer that satisfies your need. You can just copy it and use it elsewhere. These two parts are demonstrated in the figure below (lower panel).
References
- [1]. Peters G , Dahlberg J E . RNA-directed DNA synthesis in Moloney murine leukemia virus: interaction between the primer tRNA and the genome RNA.[J]. Journal of Virology, 1979, 31(2):398-407.
- [2]. Kulpa, D. Determination of the site of first strand transfer during Moloney murine leukemia virus reverse transcription and identification of strand transfer-associated reverse transcriptase errors[J]. EMBO (European Molecular Biology Organization) Journal, 1997, 16(4):856-865.
- [3]. Palmer M T , Kirkman R , Kosloff B R , et al. tRNA Isoacceptor Preference prior to Retrovirus Gag-Pol Junction Links Primer Selection and Viral Translation[J]. Journal of Virology, 2007, 81(9):4397-4404.
- [4]. Kinouchi M , Kurokawa K . [Special Issue: Fact Databases and Freewares] tRNAfinder: A Software System To Find All tRNA Genes in the DNA Sequence Based on the Cloverleaf Secondary Structure[J]. Journal of Computer Aided Chemistry, 2006, 7:116-124.
- [5]. Lund, Anders H. et al. “Mutated primer binding sites interacting with different tRNAs allow efficient murine leukemia virus replication.” Journal of virology, 67 12 (1993): 7125-30.
tRNA primer
A demonstration of our software is embeded below. And, we have a beautified version running on Amazon EC2.
Please input the type of reverse transcriptase (RT) that you want to use:
Please input a sequence that you want to mutate:
Your tRNA primer (complement to Your tRNA):
5'--3'
Software by Team:Fudan-TSI
Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Studies have shown that tRNA functions as the primer for in vivo reverse transcription initiation: the 5' end of the tRNA interacts with RT, and the 3' end matches with the mRNA encoding the target. The software consists of 4 parts: reverse transcriptase selection, target sequence input, designed-tRNA visualization, and primer output. Although we only test MMLV-RT experimentally, the software can adjust its designing method based on the properties of well-studied RT from 3 species, MMLV, HIV-1 and RSV. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success.