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を拡張することもないか。。。