|
|
Line 7: |
Line 7: |
| <link rel="stylesheet" type="text/css"> | | <link rel="stylesheet" type="text/css"> |
| <script type="text/javascript" src="script.js"></script> | | <script type="text/javascript" src="script.js"></script> |
- | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
| |
- | <script type='text/javascript' src='http://www.tikku.com/scripts/ui/jQuery.radmenu.js'></script>
| |
| | | |
- | <script type="text/javascript"> | + | <script type='text/javascript' src='http://stefankraemer.bplaced.net/crDesign.js'></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>
| |
| <style type="text/css"> | | <style type="text/css"> |
| body{width:1100px;} | | body{width:1100px;} |