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

Screen Shot 2018-02-14 at 3.35.15 PM.png

出力値は実際のPrimer3の出す値とずれてないことがわかります。

実際に行ったテストでは、デフォルトのパラメータで 1bp-40bp の範囲でそれぞれ10万種類の配列をNodejs上で計算し、その出力値がoligo.tmの出力と相違がないことを確認しています。
また、18bp-36bp の範囲でそれぞれ1配列ずつを実際のブラウザ(IE11, Edge, Chrome, FireFox, Safari, Opera)で計算し、その値がPrimer3 plusが返す値と同一であることを確認済みです。

何かご意見や問い合わせがありましたらコメントして頂けると幸いです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.