Team:HokkaidoU Japan/Shuffling Kit/Primer Designer

From 2013.igem.org

(Difference between revisions)
Line 27: Line 27:
     <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 i,e,c,a,f,d,h,g,b;a=function(j){switch(j){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}};g=function(j){var k,l,n,m;l=0;for(k=n=0,m=j.length-2;0<=m?n<=m:n>=m;k=0<=m?++n:--n){l+=a(j.slice(k,+(k+1)+1||9000000000))}return l};f=function(j){switch(j){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}};b=function(j){var k,l,n,m;l=0;for(k=n=0,m=j.length-2;0<=m?n<=m:n>=m;k=0<=m?++n:--n){l+=f(j.slice(k,+(k+1)+1||9000000000))}return l};i=function(j){var l,k;l=g(j);k=b(j);return(1000*l/(-10.8+k+1.987*-15.89495209964411))-273.15+16.6*-1.3010299956639813};c=function(k){var m,j,l;if(i(k.slice(0,35))<60){alert("Sequence is too short.")}for(m=l=17;l<=35;m=++l){j=i(k.slice(0,+(m-1)+1||9000000000));if(j>60){if(k[m-1]==="G"||k[m-1]==="C"){break}}}return[k.slice(0,+(m-1)+1||9000000000),j]};e=function(j){switch(j){case"A":return"T";case"T":return"A";case"G":return"C";case"C":return"G"}};h=function(k){var j;return((function(){var o,m,n,l;n=k.split("");l=[];for(o=0,m=n.length;o<m;o++){j=n[o];l.push(e(j))}return l})()).reverse().join("")};d=function(n,j,r){var o,k,m,p,q,l;o=c(r);k=c(h(r));m="TTTGGTCTCT"+n+"T"+o[0];q=o[1];p="TTTGGTCTCA"+n+"A"+k[0];l=k[1];return[m,q,p,l]};$(function(){return $("#primer-designer").submit(function(m){var l,k,p,n,j,o;m.preventDefault();k=$(this);l=k.find("button");l.attr("disabled",true);p=k.find('[name="overhang-f"]').val().toUpperCase();n=k.find('[name="overhang-r"]').val().toUpperCase();o=k.find('[name="sequence"]').val().toUpperCase();j=d(p,h(n),o);$("#primer-f").text(j[0]);$("#tm-f").text(j[1]);$("#primer-r").text(j[2]);$("#tm-r").text(j[3]);return l.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) {
+
-
        if (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>
   </body>
   </body>
</html>
</html>

Revision as of 12:57, 19 September 2013

Overhang_F
Overhang_R
Sequence

Forward

sequence
tm

Reverse

sequence
tm