ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

PythonでmRNAの遺伝情報を解読してタンパク質を合成する

f:id:short_4010:20180514172447j:plain

最近、pythonで作りたいものが浮かばず、でもプログラミングはしたいし、ブログも書きたいなぁと日々悶々としていたところ、mRNAを解読するプログラムを書いたらタイトルがカッコいい(遺伝情報とか入ってるとガチっぽい)上に、(高校生物で習った人はわかると思うが)やること自体はすごく簡単なので、いいじゃんと思い、作ってみました。

翻訳について

さて、生体内でDNAが転写されることによりmRNAという物質が生産されます。

そのmRNAはアデニン(A)、ウラシル(U)、グアニン(G)、シトシン(C)という4つの塩基がいくつも繋がってできています。例えば、mRNAの例として以下のようなものが挙げられます。


AUGUUUAAUUAG


この、mRNAは3つの塩基がひとつになって(コドンと言う)、ひとつのアミノ酸を指定します。それらの組み合わせは以下のようであることが知られています。


f:id:short_4010:20180514174009g:plain
コドン表


例えば、上に例として挙げたmRNAは以下のようにコドンごとに分けることができます。


AUG UUU AAU UAG


そして、上のコドン表を参照すると、上記のmRNAにより以下のようなアミノ酸が指定されることがわかります。また、このような過程のことを翻訳と呼びます。


メチオニン-フェニルアラニン-アスパラギン


アミノ酸が繋がったものがタンパク質なので、今回のmRNAが翻訳されることにより上記のタンパク質が合成されるわけです。
(ただし、一般にタンパク質はアミノ酸が50個以上繋がった物質のことを言うので正確には50個未満のアミノ酸からなる物質はペプチドと呼ぶ)

ちなみに、メチオニン開始コドンと呼ばれ、mRNAの読み取りはここからスタートします。また、表中の終止コドンというのは、対応するアミノ酸が存在せず、mRNAの読み取りは終止コドンにて終了することを表しています。今回の例でも、最後のコドンは UAG となっており、終止コドンとなっています。

pythonで実装

さて、この翻訳の過程をpythonで書いてみました。基本的な処理はすごく簡単です。ほとんど文字列一致の処理だけです。

具体的には入力された mRNAから開始コドンと終止コドンを見つけ出し、コドンリスト(読み取り部位)を作成し、それを前から順番に3つずつ読み取っていき、対応するアミノ酸を指定しています。

例外的な入力がされた場合にエラー原因を比較的具体的に表示するよう頑張ってみました。


例① 特に例外がない場合

入力する mRNA : UGGUGUAUGUUUAUUGUUGUCACUAUGUGGUGUAUGUUUAUUGUUGUCACUUAAUGGUGUAUG
読み取り部位 : AUGUUUAUUGUUGUCACUAUGUGGUGUAUGUUUAUUGUUGUCACUUAA
合成されるタンパク質 : メチオニン-フェニルアラニン-イソロイシン-バリン-バリン-トレオニン-メチオニン-トリプトファン-シス テイン-メチオニン-フェニルアラニン-イソロイシン-バリン-バリン-トレオニン

キャプチャ :
f:id:short_4010:20180514181457p:plain


例② 存在しないコドンが含まれている場合

入力する mRNA : AUGACUGCUCAUGAUUGIGGUUAA
読み取り部位 : AUGACUGCUCAUGAUUGIGGUUAA

キャプチャ :
f:id:short_4010:20180514181816p:plain


例③ コドンリストの長さがおかしい場合

入力する mRNA : AUGUCUCCUACUAA
読み取り部位 : AUGUCUCCUACUAA

キャプチャ :
f:id:short_4010:20180514182000p:plain


割愛しますが、開始コドンが存在しない場合や終止コドンが存在しない場合もそれらを指摘するようになっています。

スマートではないですが、コードはこんな感じです。初心者なので、どうしても冗長感が出てしまいます。もっとスマートに書けるようになりたいです。