Team:Freiburg/Project/modeling
From 2013.igem.org
(Difference between revisions)
Line 11: | Line 11: | ||
<style> | <style> | ||
+ | body { margin:2cm; } | ||
+ | h1 {text-align: center;} | ||
+ | form {padding-top:60px;} | ||
+ | textarea { | ||
+ | width: 40%; | ||
+ | } | ||
+ | fieldset {width:50%; | ||
+ | float:right;} | ||
+ | #explanation {float:left;} | ||
Line 17: | Line 26: | ||
</style> | </style> | ||
+ | <script> | ||
+ | function CrispR (form) { | ||
+ | var TestVar = form.Sequenz.value; | ||
+ | var length = TestVar.length; | ||
+ | TestVar = TestVar.trim(); | ||
+ | TestVar = TestVar.toUpperCase(); | ||
+ | if(length<32){alert("too short");return;} | ||
+ | var nonNuc = TestVar.search(/[^T|^A|^G|^C]/); | ||
+ | if (nonNuc != -1){alert("There are non nucleotide signs in your sequence. Plese check your sequence!");return;} | ||
+ | |||
+ | for (Count = 0; Count < 2; Count++) { | ||
+ | if (form.rad[Count].checked) | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | if(Count != 0 && Count != 1){ alert("please check which strand you have inserted");return; } | ||
+ | |||
+ | else if (Count==0) { | ||
+ | |||
+ | var pattern = /.GG/g; | ||
+ | var m; | ||
+ | var oligo4 = []; | ||
+ | var index1 = []; | ||
+ | var k = 0; | ||
+ | |||
+ | while (m = pattern.exec(TestVar)){ | ||
+ | oligo4.push(m); | ||
+ | index1.push(m.index); | ||
+ | } | ||
+ | |||
+ | var oligo1 = []; | ||
+ | var index = []; | ||
+ | |||
+ | |||
+ | var i = 0; | ||
+ | for (var k = 0; k<index1.length; k++){ | ||
+ | if (index1[k] > 31){ | ||
+ | |||
+ | oligo1[i] = TestVar.substring(index1[k]-30 ,index1[k]); | ||
+ | index[i] = index1[k]-30; | ||
+ | i++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | if (oligo1 == null ) { | ||
+ | alert("There are no matches found!");return; | ||
+ | } | ||
+ | |||
+ | for ( var k = 0; k<oligo1.length; k++){ | ||
+ | oligo1[k] = oligo1[k].substring(0,30); | ||
+ | } | ||
+ | |||
+ | var oligo2 = oligo1.slice(); | ||
+ | var index = oligo1.slice(); | ||
+ | |||
+ | for( var k=0; k<oligo1.length; k++ ) { | ||
+ | index[k] = TestVar.indexOf(oligo1[k]); | ||
+ | } | ||
+ | |||
+ | for( var k=0; k<oligo2.length; k++ ) { | ||
+ | oligo2[k] = oligo2[k].split("").reverse().join(""); | ||
+ | oligo2[k]=oligo2[k].replace(/A/gi,"X"); | ||
+ | oligo2[k]=oligo2[k].replace(/T/gi,"A"); | ||
+ | oligo2[k]=oligo2[k].replace(/X/gi,"T"); | ||
+ | oligo2[k]=oligo2[k].replace(/G/gi,"Y"); | ||
+ | oligo2[k]=oligo2[k].replace(/C/gi,"G"); | ||
+ | oligo2[k]=oligo2[k].replace(/Y/gi,"C"); | ||
+ | oligo2[k]="TAAAAC" + oligo2[k] ; | ||
+ | } | ||
+ | |||
+ | for( var k=0; k<oligo1.length; k++ ) { | ||
+ | oligo1[k]="AAAC"+ oligo1[k] +"GT"; | ||
+ | } | ||
+ | var j = 0; | ||
+ | for( var k=0; k<oligo2.length; k++ ) { | ||
+ | TestVar = TestVar.substring(0,index[k]+30+j) + TestVar.substring(index[k]+30+j,index[k]+33+j).fontcolor("red") + TestVar.substring(index[k]+33+j,TestVar.length); | ||
+ | j = j+25; | ||
+ | } | ||
+ | } else { | ||
+ | |||
+ | var pattern = /CC./g; | ||
+ | var m; | ||
+ | var oligo4 = []; | ||
+ | var index1 = []; | ||
+ | var k = 0; | ||
+ | |||
+ | while (m = pattern.exec(TestVar)){ | ||
+ | oligo4.push(m); | ||
+ | index1.push(m.index); | ||
+ | } | ||
+ | |||
+ | var oligo1 = []; | ||
+ | var index = []; | ||
+ | |||
+ | |||
+ | var i = 0; | ||
+ | for (var k = 0; k<index1.length; k++){ | ||
+ | if (index1[k] < TestVar.length-33){ | ||
+ | |||
+ | oligo1[i] = TestVar.substring(index1[k]+3 ,index1[k]+33); | ||
+ | index[i] = index1[k]; | ||
+ | i++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | var oligo2 = oligo1.slice(); | ||
+ | |||
+ | for( var k=0; k<oligo2.length; k++ ) { | ||
+ | |||
+ | oligo2[k]="TAAAAC" + oligo2[k] ; | ||
+ | } | ||
+ | |||
+ | for( var k=0; k<oligo1.length; k++ ) { | ||
+ | oligo1[k] = oligo1[k].split("").reverse().join(""); | ||
+ | oligo1[k]=oligo1[k].replace(/A/gi,"X"); | ||
+ | oligo1[k]=oligo1[k].replace(/T/gi,"A"); | ||
+ | oligo1[k]=oligo1[k].replace(/X/gi,"T"); | ||
+ | oligo1[k]=oligo1[k].replace(/G/gi,"Y"); | ||
+ | oligo1[k]=oligo1[k].replace(/C/gi,"G"); | ||
+ | oligo1[k]=oligo1[k].replace(/Y/gi,"C"); | ||
+ | oligo1[k]="AAAC"+ oligo1[k] +"GT"; | ||
+ | } | ||
+ | |||
+ | var j = 0; | ||
+ | for( var k=0; k<oligo2.length; k++ ) { | ||
+ | TestVar = TestVar.substring(0,index[k]+j) + TestVar.substring(index[k]+j,index[k]+3+j).fontcolor("red") + TestVar.substring(index[k]+3+j,TestVar.length); | ||
+ | j = j+25; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | TestVar = TestVar.replace(/</g,"\n <"); | ||
+ | |||
+ | |||
+ | document.open(); | ||
+ | document.writeln("<h2> The inserted sequence is: </h2>"); | ||
+ | |||
+ | document.writeln(TestVar); | ||
+ | document.writeln("<h1>possible crRNAs are:</h1><div>"); | ||
+ | document.writeln("<table>"); | ||
+ | document.writeln("<tr><td>"); | ||
+ | |||
+ | for (i=0; i<oligo2.length; i++ ) { | ||
+ | |||
+ | document.writeln("<h3> Oligo number: " + (parseInt(i, 10) + parseInt(1, 10)) + " was found at position " + (parseInt(index[i], 10) + parseInt(1, 10)) + "</h3>"); | ||
+ | document.writeln("<p>Oligo1: " + oligo1[i] + "</p><p>Oligo2: " + oligo2[i] + "</p>"); | ||
+ | document.writeln("<pre>Oligo1: " + oligo1[i] + "<br> ||||||||||||||||||||||||||||||||<br>Oligo2: " + oligo2[i].split("").reverse().join("") + "</pre>"); | ||
+ | |||
+ | } | ||
+ | |||
+ | document.writeln("</td>"); | ||
+ | document.writeln("<td>"); | ||
+ | |||
+ | document.writeln("</td></tr></table>"); | ||
+ | document.writeln("</div>"); | ||
+ | |||
+ | document.close(); | ||
+ | |||
+ | } | ||
+ | </script> | ||
+ | |||
</head> | </head> | ||
Line 59: | Line 230: | ||
<div id="main_contant"> | <div id="main_contant"> | ||
- | + | <h1>crRNA-Design</h1> | |
+ | <form action="" method="get"> | ||
+ | <legend>Enter Target Sequence</legend> | ||
+ | <textarea name="Sequenz" type="text" rows="8" cols="40"> | ||
+ | </textarea> | ||
+ | |||
+ | |||
+ | <fieldset> | ||
+ | <legend>choose Program</legend> | ||
+ | <p> | ||
+ | Which strand should be targeted?<br> | ||
+ | <p> | ||
+ | <input type="radio" name="rad" value="1"> non coding strand | ||
+ | <input type="radio" name="rad" value="2"> coding strand | ||
+ | </p> | ||
+ | <p> | ||
+ | <input type="submit" value="submit" name="ok" onClick="CrispR(this.form)" /> | ||
+ | <input type="reset" value="reset"> | ||
+ | </p> | ||
+ | </fieldset> | ||
+ | |||
+ | </form> | ||
+ | <div id="explanation"> | ||
+ | <p>This tool helps you to design a crRNA-insert for pX334a. The oligos contain overhangs which fit to | ||
+ | the BbsI-overhangs by pX334a.</p> | ||
+ | |||
+ | <p>For repression of gene transcription by targeting the coding sequence | ||
+ | it´s crucial to target the non template (= coding) DNA strand. <br> Therefore the oligos must be designed as | ||
+ | follows: | ||
+ | <ol> | ||
+ | <li>Search at your desired target sequenz for a CCN (reverse complement of the PAM sequence) at the coding strand.</li> | ||
+ | <li> Extract the following (3') 30 nucleotides.</li> | ||
+ | <li> Extract the reverse complement.</li> | ||
+ | <li>Add AAAC at the 5' end and GT at the 3' end. This will be your fist oligo.</li> | ||
+ | <li>Take the sequence from step 2 and add TAAAAC at the 5' end. This will be your second oligo.</li> | ||
+ | </ol> | ||
+ | </p> | ||
+ | |||
+ | |||
+ | |||
+ | </div> | ||
Revision as of 21:12, 22 September 2013
crRNA-Design
This tool helps you to design a crRNA-insert for pX334a. The oligos contain overhangs which fit to the BbsI-overhangs by pX334a.
For repression of gene transcription by targeting the coding sequence
it´s crucial to target the non template (= coding) DNA strand.
Therefore the oligos must be designed as
follows:
- Search at your desired target sequenz for a CCN (reverse complement of the PAM sequence) at the coding strand.
- Extract the following (3') 30 nucleotides.
- Extract the reverse complement.
- Add AAAC at the 5' end and GT at the 3' end. This will be your fist oligo.
- Take the sequence from step 2 and add TAAAAC at the 5' end. This will be your second oligo.