6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PCRプライマーのTm算出とか濃度計算とか効率化したい

Last updated at Posted at 2015-11-06

大学の研究でDNAの合成や点変異の導入といった作業をする機会が最近増えてきたため、頻繁にプライマーを設計している。プライマーのTmを算出したり濃度計算するために先生からExcelのファイルをもらったんだけど、イマイチ使いづらい。なのでTmや濃度を計算する簡単なスクリプトをRubyで作ってみた(既存のものを探したほうが早いかもしれないけど)。

必要な機能

  1. DNA合成PCRプライマーの塩基配列を入力するとTmを算出できる。
  2. 点変異導入PCRプライマーの塩基配列を入力するとTmを算出できる。
  3. A260の値を渡すことで濃度を算出できる。
  4. リバースプライマーの塩基配列を出力できる。

とりあえずこのくらい。

Primerクラスの定義

あまり深く考えずにクラスを作ってみた。

class Primer

	def initialize(ary)
		@original_ary = ary.upcase
		@adenine = @original_ary.count "A"
		@guanine = @original_ary.count "G"
		@thymine = @original_ary.count "T"
		@cytosine = @original_ary.count "C"
		@abs_c = @adenine*15300+@guanine*11800+@thymine*9300+@cytosine*7400
	end

	#m_conメソッド:A260を引数とすることでμMスケールの濃度を算出する
	def m_con(abs)
		abs.fdiv(@abs_c)*1000000
	end

	#tmメソッド:アニーリング温度を算出して返す
	def tm
		60.8+0.41*(@guanine+@cytosine)/@original_ary.size*100-500.fdiv(@original_ary.size)
	end
	#tm_insertメソッド:点変異導入時に使用。インサート塩基数を引数としてアニーリング温度を算出して返す
	def tm_insert(ins_num)
		81.5 + 0.41*(@guanine+@cytosine)/@original_ary.size*100-675.fdiv(@original_ary.size-ins_num.to_f)
	end
	#tm_mismatchメソッド:点変異導入時に使用。ミスマッチ塩基数を引数としてアニーリング温度を算出してお返す
	def tm_mismatch(mis_num)
		81.5 + 0.41*(@guanine+@cytosine)/@original_ary.size*100-675.fdiv(@original_ary.size) - mis_num.fdiv(@original_ary.size)
	end

	#rvメソッド。initializeで与えた配列のRv配列を返す
	def rv
        @original_ary.tr("ATGC", "TACG").reverse
    end
end

動作確認

例えばDNA合成を行うに際して、"CTCTGGACTCTAGCACTGAG"というプライマーのTmや濃度を計算する場合、

# task1という名前でインスタンスを作成。コンストラクタに塩基配列を渡す。
task1 = Primer.new "CTCTGGACTCTAGCACTGAG" 

# Tmの算出。tmメソッドはTmの値を返す。
p task1.tm

# リバース配列の出力。rvメソッドはインスタンス作成時に渡した塩基配列に対するリバースの配列を返す。
p task1.rv

# 濃度の計算。m_conメソッドはA260の値を引数として受け取り、μMスケールの濃度を返す。
p task1.m_con 61.87

結果

58.349999999999994
"CTCAGTGCTAGAGTCCAGAG"
293.0838465182378

あくまで自分用に作ったものなので色々と雑ですが・・・

6
7
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?