LifeScience Hack

生物系創薬研究者がAI(誇大表示)を手に入れるまでの過程(Python、Deep Learning、ライフサイエンス)

PCRプライマーのTm値の計算機を作ってみよう①~相補鎖配列とGC含量の計算~

PythonPCRプライマーのTm値計算機を作るシリーズです。 第1回の今回は、相補鎖配列の表示とGC含量の計算を行いたいと思います。
シリーズの中では比較的簡単ですが、Tm値計算機には必須の機能だと思います。
Pythonの基本的な機能、文字列の操作と計算で可能です。
さっそく作ってきたいと思います。

相補鎖配列の取得

相補鎖配列の取得は以下の手順で行いたいと思います。

  1. 配列を逆読みにする
  2. 対となる塩基に変換する

文字列のリバース

まずは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含量を計算していきます。

  1. GとCの数をカウント
  2. 配列長を取得し、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値の計算に取り掛かろうと思います。