Pythonプログラミング(総合演習課題)

このページでは、生物学を学んでいない学生のために、DNA上の遺伝情報について、簡単に説明する。

遺伝子に書き込まれた情報

DNAの構造決定については、それに深く関わったRosalind Franklinの再評価も進んでいる。 また、歴史的な論文は こちらで読むことができる。

この授業では「情報」にまつわる様々なことがらを学んでいるが、最も我々の存在に深く関わるものと言えば、何と言っても、遺伝情報であろう。 20世紀の中頃、J. WatsonとF. CrickがDNAの二重螺旋構造と遺伝のメカニズムを明らかにして以来、生命に関する我々の理解は急激に深まった。 DNAの仕組みの解明がもたらした一番のインパクトは、生命現象を、塩基の配列(後述)という記号の列の問題として(も)考えることができるようになったことで、 こうして記号化(ディジタル化)された「情報」は、コンピュータや数学を使って扱う格好の対象と言えるだろう。 事実、生物学、医学、薬学、農学など、生命現象に関わるあらゆる学問の中で、 バイオインフォマティクス(bioinformatics)は今や重要な役割を演じている。

けれども、この授業は、そうした物語や生物学的な知識を学ぶ目的で開講されているわけではないし、そうした方面に好奇心が旺盛な受講者ばかりとは限らないだろうから、 ここでは、専ら情報の操作にフォーカスして話しを進めたい。 以下で前提するのは、ごく簡単な知識だけである。

タンパクはアミノ酸の配列である

生物の体の基本的な部品はタンパク質である。もちろん、材料としては、体のほとんどは水であるし、骨はリン酸カルシウムなどの無機質が 強度を生んでいるわけだけれども、生物としての様々な機能を担っているのは、タンパク質である。 タンパク質は20種類のアミノ酸とよばれるパーツ(分子)が 数珠つなぎになった構造をしており、アミノ酸の配列によってその種類(=機能)が決まる。 「数珠繋ぎ」とはいっても、生体の中でタンパクは紐のような形で存在しているわけではなく、高度に折りたたまれ、他のタンパクとも組み合わされることにより、 三次元的で複雑な「部品」となる。 そして、20種類のアミノ酸の配列が、タンパクの設計図にあたる。ここでは、その20種類を

20種類のアミノ酸

A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y

の記号で表すことにする(これらの一部はアミノ酸の名称の頭文字)。 すると、タンパクの設計図とは "MVQIPQNPLILVDGSSYLYRAYHAFPPL・・・"といった記号の並び、ということになる。

DNAの情報は4種類の塩基で綴られている

生体の設計図としてのタンパクのアミノ酸配列は、細胞の核と呼ばれる部分に存在する DNA(Deoxyribonucleic acid)という高分子に記録されている。 DNAは1次元的な紐状に、A, T, C, Gの記号で表される4種類の塩基(nucleotide) がずらりと並んだ構造をしている。 つまり、DNAの分子(鎖)を記号で表すと、"ATGTACTATT・・・"のような記号の列になる。 この紐は、ストランド(strand)と呼ばれている。

慣習上、DNAの鎖の片方を 3'末端、他方を5'末端と読んで区別している。これらの名称は末端の分子構造に由来。

鎖や紐は両方の端に区別はないけれども、DNAには、分子の構造から決まった「方向」がある。 (回文を除けば)文字の列としての単語や文に、読まれるべき方向があるのと同じである。

DNAの巧みなところは、そうした紐が2本で1セットの分子となっている点である。 そして、二本の対向する鎖の塩基同士は、必ず、AとT、CとGがペアを組むようになっている。例えば

鎖1: ATGTACTATTTAAAAAACAC・・・ →
鎖2: TACATGATAAATTTTTTGTG・・・ ←

のように。 そして、この2本がより合わさったような格好に収まったのが、良く知られているDNAの 二重螺旋構造である。 その際、上で述べた鎖の「方向」は互いに逆となっている。 つまり、鎖1を読む方向が「左から右」であるならば、鎖2は、その反対の「右から左」に読まれる。

塩基配列はアミノ酸の配列に翻訳される

生物の設計図に相当するのが、タンパクのアミノ酸配列とすれば、DNAの(A,T,C,G)の4文字で綴られた 記号の列の中に、どのようにアミノ酸の情報が埋め込まれているのかが、遺伝情報を読み解く上での重要なポイントとなる。 そのルールは(わかってみれば)案外と簡単で、「塩基を3つずつセットにしながら区切り、 3つの塩基の組み合わせで1つのアミノ酸を表現(コード)する」というものだ。 例えば(AAT)の組はアスパラギン(N)、(GGT)の組はグリシン(G)を、・・といった具合に。 この対応表は、ネットなどですぐに調べることができる。たとえばこちら。 以下に、アミノ酸配列への翻訳過程の例を示す:

     塩基配列:ATGTACTATTTAAAAAAC・・・
3つ一組に分解する:ATG  TAC  TAT  TTA  AAA AAC・・・
アミノ酸に翻訳する: M    Y    Y    L    K    N ・・・

RNA(ribonucleic acid:リボ核酸) もまた、生物の各種機能と遺伝に関係した重要なパーツである。 mRNA(messenger RNA) など、幾つかにタイプに分類されている。
原子生物の起源はタンパクなのかそれともRNAなのかを巡って、 興味深い議論がある

細胞内では、DNA上の配列は、一旦mRNAと呼ばれる分子に転写され、それをもとにタンパクの合成が行われることが分かっている。 そして、mRNAでの転写の際、DNA上の塩基T(thymine)に対応する箇所にはU(uracil)と呼ばれる塩基が置かれる。 よって、文献やネット上で変換表を調べる際には、UはTに読み換えて解釈して構わない。

4種類の塩基が三つであるから、原理的には4X4X4=64通りのアミノ酸が表現できることになるが、 実際に表現すべき数は20であるから、変換表の中には重複(違う塩基配列で、同じアミノ酸をコードしている)箇所が多くある。 また、アミノ酸を表すのではなくて、系列(シーケンス)の読み出しの終了を表すコードも存在する(TGA,TAA,TAG)。

塩基配列の読み出し方には冗長性がある

遺伝子の中には、最終的にはアミノ酸配列に翻訳されないイントロン(intron)と呼ばれる 部分が含まれる場合があり、 RNAによるスプライシング(RNA splicing)という過程を経て、 イントロンが除去された上で、タンパクが合成される。 であるから、単純に、塩基配列=アミノ酸配列、であるとは限らないが、この演習ではその辺りの詳細は単純化して扱うことにする。

細胞からDNAを取り出して、(A,T,C,G)の系列を読み出す作業は、今やそのかなりの工程が機械化されていて、 遺伝情報のデータベースには、新しいデータがどんどんと蓄積されている。 数年前には、ヒトの塩基配列も全て解読されてしまった。 けれども、これでタンパクの設計図が全て明らかになったのかというと、実はそうでもない。 というのは、塩基配列のうちで、実際にタンパク質の設計図が書き込まれいる部分は、あちこちに点在しているため、 その箇所を探し出す必要があるからだ。 塩基の配列の多くは、遺伝情報とは全く関係なかったり(ジャンク)、情報の読み出し方の制御など、タンパク質の設計図以外の用途に使われている。 また、タンパクではなくRNAをコードしている箇所も多く見つかっている。

DNAの解析によって、仮に、

ATGTACTATTTA

いう配列が見つかったとすると、DNAの反対側の紐には、それと対になる

TACATGATAAAT

という配列も同時に存在する。ここで、この紐には方向があることを思い出すと、反対側の配列は、順序をひっくり返して

TAAATAGTACAT

と読まなければならない。つまり、"ATGTACTATTTA"という配列を考える際には、同時に、それと対になる"TAAATAGTACAT"も考慮する必要があるわけだ。 実際に(mRNAと酵素の働きで)遺伝情報がDNAから読み出される場合は、この2つの可能性の、どちらか一方のみが使われることが分かっている。 ある塩基配列が与えられたら、それを解釈するには、すでに2つの可能性があるというわけだ。

さらに、どの文字を出発点にして情報を読み出すべきか(「三つずつ」の区切り方)、についても3つの可能性が残る。 3文字で1つのアミノ酸、のルールを思い出すと、上の例("ATGTACTATTTA")では、

ATG TAC TAT TTA     (..A) TGT ACT ATT (TA.)    (.AT) GTA CTA TTT (A..)

という3通りの読み出し方が可能である。 そうすると、対向する鎖の分も含めると、一連のシーケンスのデータから、合わせて 2X3=6 通りの場合が生じることになる。

塩基配列から遺伝情報を得るには「読み取り枠」を探す必要がある

上で述べた6通りの並び方の中の、どの部分に、実際のタンパクの情報が書き込まれているのかを探し当てるのは、なかなか骨の折れる作業である。 とは言っても、全く規則がないわけではなくて(多くの場合)、

タンパクがコードしてある箇所は ATG で始まり、TAA, TAG, TGA のいずれかで終わる

「開始」コードのATGはメチオニンというアミノ酸のコードとしても使われる。また、 細菌のDNAでは、読み取り領域が重複している場合もあったりするので、 遺伝子探しは、なかなか大変な作業のようだ。

ことが知られている。6通りの系列それぞれについて、まずATGを探し出し、TAA,TAG,TGAのどれかに行き当たるまで読み進めれば、 その間にタンパクの情報が書き込まれている(可能性が高い)。 このようなDNAの各部分のことを、Open Reading Frames(ORFs)と呼ぶ。 塩基配列が分かったら、次に、ORFを探すことが、遺伝情報解析の第一歩になる。 そして、ORFの中から、実際にタンパクの合成に関わっている箇所を特定するのが次なるステップということになる。

ここでは、実際の遺伝情報データベースの塩基配列データを元に、コンピュータによって、ORFを自動的に探し出す ことを目標に、プログラムの作成に取り組んでみよう。