目次
mRNAスプライシングとは
通常、真核生物はDNAを転写し作り出した前駆体mRNAに対しスプライシング(英:Splicing)という操作を行い、成熟mRNAを生成します。この部分で調節を行うことによって、転写後の更なる多様性を確保しています。
このスプライシングのうち、前駆体mRNAから取り除かれる部分をイントロン、再接続されて成熟mRNAとして残るものをエキソンと言います。
このうち、特定のエキソンのみを選び出し成熟mRNAを合成する過程を選択的スプライシング(英:Alternative splicing)と呼びます。
これにより、一つの遺伝子から多様なタンパク質を生み出すことが可能になります。(分析する側からするといい迷惑ですが、真核生物の遺伝子の95%ほどが選択的スプライシングの対象となっています。)
今回はそのRNAスプライシングをpythonを利用して擬似的にやってみることにします。
条件設定
以下にスプライシング対象となる前駆体mRNAおよびイントロンを複数与えます。(ここでは翻訳にbiopythonを使うため、便宜的にチミンを採用しています。)
seqに前駆mRNAを代入します。
seq = '''ATGAACTTGAGCGCCATGCGAATGTGTTCTCGAGACAAGCATCAATCAAATCACAGCACT
AAATGTAAGAAATCCGCACAGGACAAAAATAGTAATACGGTTCATAAACCTCCGGGGGCT
AAATTGCTTTCGCGCTCGTTCCATAGCCCGGCCTATCGCTATAACTTACAGGTCCGAGGG
AGGTGGCAACCCTCTTCCATTCAGCACACAGTTTGGTGAATCCCCTGTTCGTCCAGGAGT
TGCCTGGCAATCTATGCTCTTGGAGCTTCCACGAGTTGGAACGGCAATCGACTACTGGGT
AGGAATGTTCCTTTAACGAATGTCTGCACCGAGAATCGTTTCACGTCGGAATATCTTACT
GAGCCCTGTACATGGACGCTTATTCGAACCCCTTTAATTATATAATGAGGAGGCCCGAGC
AAGCTATGCGCGGCTGTATGCGTCGAACGTGTAGGATAGGGATCTCAGGAAGGACTCCGA
TCCATTCCAGCGACGACTTTTTTCCGGCATTCAGCACCGACTCCCCGGAAGGTGAATAAA
TAATGGGTACACGCGATGAGGTCGTCGAACGGCCGATAGACATCTCGGAAAACTGCGCAC
CGGCAGGACTACCCGTCGTTCTCGTTCCCCTATGGACCCTGCAGCGACAGGCAGGCGAAA
GCCAAAGGATGTATATCTCACTAAGATCGCCCACGGTTTTCCTGGCATGCGGAATTTTGC
ATGAACTTCGCCACAATCCGTACCAATCTCCAGTTTGAAATTCGCGAATACTCCTGCGTG
TCTTAACTTGAGCCATATTTGATGTGCTAGCCTAAAACTCGATGGATGGAAGTTTCCGGG
GATTGCGATAGGGCTTGCCAATCAAAGAACTGTGTACTTATCCGGCGAGTCATCTTGTTG
GTAGACGAGCGATCCTGTATGGGTAGACCTAGTTTCTCTACAGATGCGCCATGGTCGATA
CCCTACAACCCGGCACCCTGA'''
intronsに14種類のイントロンを登録します。
introns = ['CGGCCTATCGCTATAACTTACAGGTCCGAGGGAGGTGGCAAC','TGGCAATCTATGCTCTTGGA','GGCTGTATGCGTCGAACGTGTAGGATAGGG','GATGGATGGAAGTTTCCGGGGATTGCGATAGGGCTTGCCA','AAAATAGTAATACGGTTCATA','TATCTTACTGAGCCCTGTACATGGACGCTTATTCGAACCCCTTT','CGTGTCTTAACTTGAGCCATATTTGA','CCGTACCAATCTCCAGTTTGA','CGACTACTGGGTAGGAATGTTCCTTTAACGAAT','AAGGATGTATATC','AAGCATCAATCAAATC','TCCCCGGAAGGTGAATAAATAATGGGTACACGCGATGAG','CTACCCGTCGTTCT','CCGGCGAGTCATCTTGTTGGTAGACGAGCGATCCTGTATG']
イントロンの呼び出しと翻訳
操作自体は、introns中の要素を一つずつ取り出してその配列に対応する部分をseqから削除していくと言うシンプルな流れです。
from Bio.Seq import Seq
#Seqモジュールをインポートします。
for intron in range(len(introns)):
seq = Seq(seq.replace(introns[intron],"").replace("\n",""))
#seq にintrons中のインデックスに対応するintronを空白に置換することでスプライスすると考えます。
print(seq.translate())
#seqをtranslateしたものをターミナルに出力します。
実行結果
以下がターミナルに出力されたseqに対するスプライシングの結果です。
出力結果
MNLSAMRMCSRDTALNVRNPHRTNLRGLNCFRARSIARPIAITYRSEGGGNPLPFSTQFGESPVRPGVAASTSWNGNVCTENRFTSENYIMRRPEQAMRISGRTPIHSSDDFFPAFSTDVVERPIDISENCAPAGRSPMDPAATGRRKPSLRSPTVFLACGILHELRHNNSRILLCASLKLIKELCTYGRPSFSTDAPWSIPYNPAP*
意外と長いですね。
成熟mRNAを取り出したい場合は、print(seq)でターミナルに出力することができます。
選択的スプライシングをする場合は、条件に応じて上記のコードに条件分岐を追加することで実現できます。