Primer3のTm値計算は oligotm.c というプログラムが担っています。
今回はこちらをJavaScriptに移植しました。
ファイルのダウンロードは以下からできます。
Download
git clone https://github.com/Kazuki-Nakamae/oligotmJS.git;
使い方は以下のようです。
example.html
<script src="./oligotm.js"></script>
<script>
var instance = new oligotm();
/*
oligotm(Sequence,
DNA concentration,
Concentration of salt,
Salt concentration (mM),
Concentration of dNTPs (mM),
tm_method_type({ breslauer_auto: 0, santalucia_auto: 1 }),
salt_correction_type({ schildkraut: 0, santalucia: 1, owczarzy: 2 })
*/
var Tmvalue = instance.oligotm("ATTTGCGCGAATGCAATCGG", 50, 50, 0, 0, 0, 0) // primer3 default setting
console.log(Tmvalue)
</script>
68.302986
出力値は実際のPrimer3の出す値とずれてないことがわかります。
実際に行ったテストでは、デフォルトのパラメータで 1bp-40bp の範囲でそれぞれ10万種類の配列をNodejs上で計算し、その出力値がoligo.tmの出力と相違がないことを確認しています。
また、18bp-36bp の範囲でそれぞれ1配列ずつを実際のブラウザ(IE11, Edge, Chrome, FireFox, Safari, Opera)で計算し、その値がPrimer3 plusが返す値と同一であることを確認済みです。
何かご意見や問い合わせがありましたらコメントして頂けると幸いです。