PythonでPCRプライマーのTm値計算機を作るシリーズです。
第1回の今回は、相補鎖配列の表示とGC含量の計算を行いたいと思います。
シリーズの中では比較的簡単ですが、Tm値計算機には必須の機能だと思います。
Pythonの基本的な機能、文字列の操作と計算で可能です。
さっそく作ってきたいと思います。
相補鎖配列の取得
相補鎖配列の取得は以下の手順で行いたいと思います。
- 配列を逆読みにする
- 対となる塩基に変換する
文字列のリバース
まずは1. の逆読みです。
文字列を逆にする場合は、pythonのlistでよく使われるスライスを用います。
文字列にもスライスが使えるんです!!
逆にする場合は、[::-1] をつけるだけです。
primer = "ATGAGCCCTGAAGT" reverse = primer[::-1] print(reverse) #TGAAGTCCCGAGTA
塩基対の変換
リバース配列が取得できましたので、
2. 対となる塩基対に変換し、相補的配列を取得します。
A→T、C→G、T→A、G→C に変換します。
Pythonで文字列を変化する関数といえば、A.replace()がありますが、
replaceは一種類の変換しかできません。 (Aは文字列オブジェクト)
今回は全部変換しますので、そんな時はA.translate()が便利です。
どのように変換させたいか辞書をstr.maketrans()で作成し、
A.translate()に入れればOKです。
complement = reverse.translate(str.maketrans({'A':'T', 'T':'A', 'G':'C', 'C':'G'})) print(complement) #ACTTCAGGGCTCAT
これで相補鎖配列ACTTCAGGGCTCATが取得できました。
GC含量の計算
次にGC含量を計算していきます。
- GとCの数をカウント
- 配列長を取得し、GCの割合を計算
GC数をカウント
文字列の中に含まれる文字を検索するには、
A.count('検索したい文字')でできます。
CとGの数を足すだけですので、以下のようになります。
gc = primer.count('G') + primer.count('C') print(gc) #7
GC%を算出
GCの数が取得できましたので、
あとは GCの数/プライマーの配列長×100 を計算するだけです。
文字列の長さは、len(A)で取得できます。(Aは文字列オブジェクト)
GC = gc / len(primer) *100 print(GC) #50.0
これで相補鎖配列とGC%を取得できました。
次回は、Tm値の計算に取り掛かろうと思います。