biojavascript

とりあえず、
http://bioruby.org/archive/doc/Japanese/tutorial.html
を参考に作ってみた。

<html>
<head>
<title>biojavascript</title>
<script src="prototype.js" type="text/javascript"></script>
<script src="biojavascript.js" type="text/javascript"></script>
</head>
<body>
<form name="testform">
seq:<input type="text" value="ttaaatcgctcgg" name="seq" id="seq">
<input type="button" value="click" onclick="test1();">
</form>
<pre id="canvas1"></pre>

</body>
</html>
//http://snipplr.com/view/699/stringrepeat/
String.prototype.repeat = function( num )
{
  for( var i = 0, buf = ""; i < num; i++ ) buf += this;
  return buf;
}

String.prototype.complement = function()
{

  var comp =
    {
      "a":"t",
      "t":"a",
      "g":"c",
      "c":"g"
    };
  return comp[this];
}

function test1()
{
  doublehelix($F("seq"));
}

function dh_sub(b,c,row)
{
  pairs = [ [5, 0], [4, 2], [3, 3], [2, 4],
            [1, 4], [0, 3], [0, 2], [1, 0] ];
  if( (row%16) < 8 ){
    pairspos = (row%16);
  }else{
    t = b;
    b = c;
    c = t;
    pairs.reverse();
    pairspos = (row%16)-8;
  }


  str = ' '.repeat(pairs[pairspos][0])+b+'-'.repeat(pairs[pairspos][1])+c+"\n";
  return str;
}

function doublehelix(seq)
{

  str='';
  for( i = 0 ; i < seq.length ; i++){
    b = seq.substring(i,i+1);
    str = str + dh_sub(b,b.complement(),i);

  }

  $("canvas1").innerHTML=str;
  return;
}

Stringを拡張することもないか。。。