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> &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>
 +
</head>
</head>
Line 59: Line 230:
<div id="main_contant">
<div id="main_contant">
-
CONTENT <br>
+
<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

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.