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' src='http://stefankraemer.bplaced.net/crDesign.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>
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||||||||||||||||||||||||||||||||<br>Oligo2: &nbsp;&nbsp;&nbsp;&nbsp;" +
 +
 
 +
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

CrispR

crRNA-Design

Enter Target Sequence
choose Program

Which strand should be targeted?

non coding strand coding strand

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:

  1. Search at your desired target sequenz for a CCN (reverse complement of the PAM sequence) at the coding strand.
  2. Extract the following (3') 30 nucleotides.
  3. Extract the reverse complement.
  4. Add AAAC at the 5' end and GT at the 3' end. This will be your fist oligo.
  5. Take the sequence from step 2 and add TAAAAC at the 5' end. This will be your second oligo.