Team:HokkaidoU Japan/Shuffling Kit/Primer Designer

From 2013.igem.org

(Difference between revisions)
Line 26: Line 26:
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
     <script type="text/javascript">
     <script type="text/javascript">
-
(function() {
+
(function(){var f,g,e,d,c,b,a;e=function(h){switch(h){case"AA":case"TT":return -9.1;case"AT":return -8.6;case"TA":return -6;case"CA":case"TG":return -5.8;case"GT":case"AC":return -6.5;case"CT":case"AG":return -7.8;case"GA":case"TC":return -5.6;case"CG":return -11.9;case"GC":return -11.1;case"GG":case"CC":return -11}};b=function(h){var j,k,m,l;k=0;for(j=m=0,l=h.length-2;0<=l?m<=l:m>=l;j=0<=l?++m:--m){k+=e(h.slice(j,+(j+1)+1||9000000000))}return k};d=function(h){switch(h){case"AA":case"TT":return -24;case"AT":return -23.9;case"TA":return -16.9;case"CA":case"TG":return -12.9;case"GT":case"AC":return -17.3;case"CT":case"AG":return -20.8;case"GA":case"TC":return -13.5;case"CG":return -27.8;case"GC":return -26.7;case"GG":case"CC":return -26.6}};a=function(h){var j,k,m,l;k=0;for(j=m=0,l=h.length-2;0<=l?m<=l:m>=l;j=0<=l?++m:--m){k+=d(h.slice(j,+(j+1)+1||9000000000))}return k};f=function(i){var k,j;k=b(i);j=a(i);return(1000*k/(-10.8+j+1.987*-15.89495209964411))-273.15+16.6*-1.3010299956639813};g=function(i){var k,h,j;if(f(i.slice(0,35))<60){alert("Sequence is too short.")}for(k=j=17;j<=35;k=++j){h=f(i.slice(0,+(k-1)+1||9000000000));if(h>60&&(i[k-1]==="G"||i[k-1]==="C")){break}}return[i.slice(0,+(k-1)+1||9000000000),h]};c=function(l,h,p){var m,i,k,n,o,j;m=g(p);i=g(p.split("").reverse().join(""));k="TTTGGTCTCT"+l+"T"+m[0];o=m[1];n="TTTGGTCTCA"+l+"A"+i[0];j=i[1];return[k,o,n,j]};$(function(){return $("#primer-designer").submit(function(k){var j,i,n,l,h,m;k.preventDefault();i=$(this);j=i.find("button");j.attr("disabled",true);n=i.find('[name="overhang-f"]').val().toUpperCase();l=i.find('[name="overhang-r"]').val().toUpperCase();m=i.find('[name="sequence"]').val().toUpperCase();h=c(n,l,m);$("#primer-f").text(h[0]);$("#tm-f").text(h[1]);$("#primer-r").text(h[2]);$("#tm-r").text(h[3]);return j.attr("disabled",false)})})}).call(this);
-
  var calculate_tm, decide_annealing_site, delta_h, delta_s, main, sigma_delta_h, sigma_delta_s;
+
-
 
+
-
  delta_h = function(seq) {
+
-
    switch (seq) {
+
-
      case 'AA':
+
-
      case 'TT':
+
-
        return -9.1;
+
-
      case 'AT':
+
-
        return -8.6;
+
-
      case 'TA':
+
-
        return -6;
+
-
      case 'CA':
+
-
      case 'TG':
+
-
        return -5.8;
+
-
      case 'GT':
+
-
      case 'AC':
+
-
        return -6.5;
+
-
      case 'CT':
+
-
      case 'AG':
+
-
        return -7.8;
+
-
      case 'GA':
+
-
      case 'TC':
+
-
        return -5.6;
+
-
      case 'CG':
+
-
        return -11.9;
+
-
      case 'GC':
+
-
        return -11.1;
+
-
      case 'GG':
+
-
      case 'CC':
+
-
        return -11;
+
-
    }
+
-
  };
+
-
 
+
-
  sigma_delta_h = function(seq) {
+
-
    var i, sum, _i, _ref;
+
-
    sum = 0;
+
-
    for (i = _i = 0, _ref = seq.length - 2; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
+
-
      sum += delta_h(seq.slice(i, +(i + 1) + 1 || 9e9));
+
-
    }
+
-
    return sum;
+
-
  };
+
-
 
+
-
  delta_s = function(seq) {
+
-
    switch (seq) {
+
-
      case 'AA':
+
-
      case 'TT':
+
-
        return -24;
+
-
      case 'AT':
+
-
        return -23.9;
+
-
      case 'TA':
+
-
        return -16.9;
+
-
      case 'CA':
+
-
      case 'TG':
+
-
        return -12.9;
+
-
      case 'GT':
+
-
      case 'AC':
+
-
        return -17.3;
+
-
      case 'CT':
+
-
      case 'AG':
+
-
        return -20.8;
+
-
      case 'GA':
+
-
      case 'TC':
+
-
        return -13.5;
+
-
      case 'CG':
+
-
        return -27.8;
+
-
      case 'GC':
+
-
        return -26.7;
+
-
      case 'GG':
+
-
      case 'CC':
+
-
        return -26.6;
+
-
    }
+
-
  };
+
-
 
+
-
  sigma_delta_s = function(seq) {
+
-
    var i, sum, _i, _ref;
+
-
    sum = 0;
+
-
    for (i = _i = 0, _ref = seq.length - 2; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
+
-
      sum += delta_s(seq.slice(i, +(i + 1) + 1 || 9e9));
+
-
    }
+
-
    return sum;
+
-
  };
+
-
 
+
-
  calculate_tm = function(seq) {
+
-
    var h, s;
+
-
    h = sigma_delta_h(seq);
+
-
    s = sigma_delta_s(seq);
+
-
    return (1000 * h / (-10.8 + s + 1.987 * -15.89495209964411)) - 273.15 + 16.6 * -1.3010299956639813;
+
-
  };
+
-
 
+
-
  decide_annealing_site = function(seq) {
+
-
    var n, tm, _i;
+
-
    if (calculate_tm(seq.slice(0, 35)) < 60) {
+
-
      alert("Sequence is too short.");
+
-
    }
+
-
    for (n = _i = 17; _i <= 35; n = ++_i) {
+
-
      tm = calculate_tm(seq.slice(0, +(n - 1) + 1 || 9e9));
+
-
      if (tm > 60 and (seq[n - 1] === 'G' || seq[n - 1] === 'C')) {
+
-
        break;
+
-
      }
+
-
    }
+
-
    return [seq.slice(0, +(n - 1) + 1 || 9e9), tm];
+
-
  };
+
-
 
+
-
  main = function(over_f, over_r, seq) {
+
-
    var anneal_f, anneal_r, primer_f, primer_r, tm_f, tm_r;
+
-
    anneal_f = decide_annealing_site(seq);
+
-
    anneal_r = decide_annealing_site(seq.split("").reverse().join(""));
+
-
    primer_f = "TTTGGTCTCT" + over_f + "T" + anneal_f[0];
+
-
    tm_f = anneal_f[1];
+
-
    primer_r = "TTTGGTCTCA" + over_f + "A" + anneal_r[0];
+
-
    tm_r = anneal_r[1];
+
-
    return [primer_f, tm_f, primer_r, tm_r];
+
-
  };
+
-
 
+
-
  $(function() {
+
-
    return $('#primer-designer').submit(function(e) {
+
-
      var $button, $form, overhang_f, overhang_r, result, sequence;
+
-
      e.preventDefault();
+
-
      $form = $(this);
+
-
      $button = $form.find('button');
+
-
      $button.attr('disabled', true);
+
-
      overhang_f = $form.find('[name="overhang-f"]').val().toUpperCase();
+
-
      overhang_r = $form.find('[name="overhang-r"]').val().toUpperCase();
+
-
      sequence = $form.find('[name="sequence"]').val().toUpperCase();
+
-
      result = main(overhang_f, overhang_r, sequence);
+
-
      $('#primer-f').text(result[0]);
+
-
      $('#tm-f').text(result[1]);
+
-
      $('#primer-r').text(result[2]);
+
-
      $('#tm-r').text(result[3]);
+
-
      return $button.attr('disabled', false);
+
-
    });
+
-
  });
+
-
 
+
-
}).call(this);
+
-
 
+
     </script>
     </script>
</html>
</html>

Revision as of 12:04, 19 September 2013

Overhang_F
Overhang_R
Sequence

Forward

sequence
tm

Reverse

sequence
tm