Team:Freiburg/Project/modeling
From 2013.igem.org
(Difference between revisions)
m |
|||
Line 8: | Line 8: | ||
<script type="text/javascript" src="script.js"></script> | <script type="text/javascript" src="script.js"></script> | ||
- | + | <script type="text/javascript"> | |
+ | |||
+ | 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> | ||
+ | |||
<style type="text/css"> | <style type="text/css"> |
Revision as of 09:40, 26 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.