第4章: AlphaFold: タンパク質折りたたみのブレークスルー

アミノ酸の並びから三次元の形へ、そして進化が訓練データだったと判明するまで

📖 Reading Time: 20-25 minutes 📊 Difficulty: Beginner 💻 Code Examples: 0 📝 Exercises: 0

ビデオ講義

このビデオは以下のテキストと同じ内容をカバーしています。お好みの学習形式をお選びください。

🌐 JP | 🇬🇧 EN | Last sync: 2026-08-19

機械学習道場 > AlphaGoからAlphaFoldへ > 第4章

第3章は1つの境界線の上で終わりました。自己対局の軌跡は、経験が安価で報酬がきれいなところで機能します——そして自然科学のほとんど何ものも、そのようではありません。10億回走らせられる生物学のシミュレータは存在しません。実験の終わりに「あなたが勝った」と曖昧さなく告げてくれる得点も存在しません。

ですから、同じ組織が生物学で最も古い未解決問題の1つに向き合ったとき、本シリーズ前半の機構は何ひとつ転用できませんでした。自己対局なし。報酬関数なし。手の探索もなし。転用されたのは、もっと非特異的で、もっと持続的な何かでした。問題の正しい表現とは何か を問おうとする姿勢、そしてこの問題については データがすでに生成されていた——進化によって、数十億年をかけて、そして配列そのものの中に保存されていた という発見です。

4.1 問題: 並びから形へ

タンパク質は直鎖として製造されます。遺伝子は アミノ酸 の配列——標準的な組では20種類——を指定し、単語の中の文字のように順番に連ねます。この鎖がタンパク質の 一次構造 であり、それを書き下すのは簡単です。シーケンシング技術がアミノ酸配列を豊富かつ安価にしました。

しかし直鎖はほとんど何もしません。作られた直後、その鎖は 折りたたまれます——自発的に、三次元で、特定の再現可能な形へと。そして仕事をするのはその形なのです。

構造が機能を決めます。 酵素が働くのは、その折りたたまれた形が、作用する分子に幾何学的・化学的に相補的なポケットを作るからです。抗体が標的に結合するのは、ループの特定の配置が合致する表面を提示するからです。膜チャネルがある種のイオンだけを通すのは、それが形作る通路の寸法が精確だからです。形が変われば機能は変わるか失われます。きわめて多くの疾患は、突き詰めれば誤った形を取ってしまったタンパク質なのです。

つまり、タンパク質の立体構造を知ることは、しばしば「分子の名前を知っている」ことと「それが何をするのかを理解している」ことの差になります。ここから明白な問いが出てきます。配列が与えられたとき、形を予測できるのか?

数十年にわたって、信頼できる答えは「実のところ無理だ——測りに行きなさい」でした。そして測定は難しいのです。

いずれも遅く、高価で、熟練を要する仕事です。その帰結は広がり続ける隔たりでした。配列は立体構造よりはるかに速く蓄積されました。 膨大な数のタンパク質が、それが何であるかの絵を伴わない、単なる文字列としてのみ知られていたのです。

📚 アンフィンセン: 情報は配列の中にある

そもそも予測を試みてよいという理論的な許可は、クリスチャン・アンフィンセンとその共同研究者たちが1960年代から1970年代にかけて行った一連の実験から来ています。この業績は1972年のノーベル化学賞の一部として認められました。

実験は述べるだけなら単純です。折りたたまれて機能している状態のタンパク質を取ります。完全にほどけて活性を失うように処理します。それから慎重にその処理を取り除き、通常の条件へ戻します。

タンパク質は 自力で折りたたまり直します ——同じ立体構造へ、機能を回復して。折りたたみを導く細胞機構は何も存在しないのに。

ここから引き出される結論が アンフィンセンの熱力学仮説 です。そのようなタンパク質について、天然の立体構造は生理的条件下で熱力学的に有利なものであり、それを指定するために必要な情報はすべて、すでにアミノ酸配列の中に含まれている、というものです。外部の何かが折りたたみを指図しているわけではないのです。

これがこれ以降のすべてに対する許可証です。もし配列が立体構造を決めていないのなら、配列から構造への予測は不可能なことを試みていることになります。アンフィンセンは、情報はそこにあると言っています。それを読み取るのが簡単だとは言っていません。

📚 レヴィンタールのパラドックス: なぜ探索は答えではないのか

サイラス・レヴィンタールは見かけ上の矛盾を指摘し、それがその後の誰もがこの問題を考える枠組みを形作りました。

現実的な長さのタンパク質の鎖を考えます。主鎖に沿った各結合は、いくつかの異なる向きを取りえます。したがって可能な三次元配置の数は 鎖の長さについて指数的 であり——天文学的に大きく、サンプルしうる範囲をはるかに超えます。

それなのに、実際のタンパク質は1秒に満たない時間で折りたたまれます。

この2つの言明が、ともにランダムな探索を記述しているはずがありません。もしタンパク質が正しいものを見つけるまで配置を次々に試していたのなら、折りたたみは宇宙の年齢より長くかかるでしょう。明らかにそうはなっていません。

その解決は、折りたたみは探索ではなく降下である ということです。エネルギー地形は、平坦な中に穴が1つ隠されているのではありません。それは 漏斗(ファネル) の形をしており、部分的に正しい配置がすでにエネルギー的に有利になるようにバイアスされていて、鎖は天然状態へ向かって下り坂を導かれます。局所的な構造が素早く形成され、それが次に何が起こりうるかを制約するのです。

レヴィンタールのパラドックスをここで述べたのには具体的な理由があります。それは 配置の力任せの列挙が誤った道具である ことを述べており、ひいては、すべての原子の動きを追おうとする物理シミュレーションが、この問題に難しいほうから取り組んでいることを述べています。何か別のものが必要でした。それは統計だったと判明したのです。

4.2 CASP: この分野の誠実な採点板

立体構造予測は、多くの計算科学の分野を悩ませる問題を抱えていました。自分自身を欺くのがきわめて容易なのです。答えを知っていれば、答えを出すまで手法を調整してしまい、そして手法を手に入れたと信じてしまいます。

CASP ——Critical Assessment of Structure Prediction ——は、それを不可能にするために作られ、1994年以来2年ごと に開催されています。

その設計こそが信頼できる理由です。立体構造を解いたがまだ公表していない実験研究者が配列を提供します。予測者は配列だけを受け取り、モデルを ブラインドで 提出します——実験グループの外の誰も答えを知りません。それから独立の評価者が、伏せられていた実験構造と予測を比較します。

答えに向けて調整することはできません。答えを持っていないからです。したがってCASPは計算科学において比較的誠実な採点板の1つであり、立体構造予測を、明確で、コミュニティ全体で共有され、偽装できない進歩の尺度をもつ分野へと変えました。その歴史を読むことは、この分野のプレスリリースではなく実際の軌跡を読むことです——そして長いあいだその軌跡は 着実で、苦労して勝ち取られた、漸進的な改善 でした。予測はすでに解かれた何かに似たタンパク質については有用で、それ以外では当てになりませんでした。

そして2回のCASPがそれを変えました。

2018年のCASP13 は AlphaFold ——その最初のバージョン——が首位を占めました。そのアプローチは、それに先立つ伝統の中にはっきり位置づけられるものでした。残基の各ペアについて、折りたたまれた構造で 接触(contact) しているかどうかを深層学習で予測し(後に距離の分布の予測へ精錬されました)、それから予測された制約を使って三次元モデルを構築するのです。新しかったのは、そうしたペアごとの関係の深層学習による予測が、どれだけ良くなっていたかという点でした。AlphaFold 1は主導的なシステムであり、明らかに一歩前進でした——しかしそれは一歩であり、この分野の全体像は変わっていませんでした。

2020年のCASP14 は種類として違いました。AlphaFold 2 は、多くの標的について実験構造に匹敵する予測を生み出したのです。評価者たちの判定は強いもので、この問題は 単一のタンパク質ドメインについては本質的に解決されたと広く記述される に至りました——慎重に扱うべき表現であり、4.4節がまさにそれを行います。この手法は2021年に Nature 誌で発表されました。

4.3 AlphaFold 2はどう機能するのか、原理の水準で

以下が記述するのは 考え方 であって実装ではありません。このアーキテクチャには多数の構成要素と膨大な工学的細部がありますが、概念的な重みの大半は5つの原理が担っています。

📚 (1) データとしての進化: アラインメントから接触を読む

これが最も深い着想であり、本シリーズの2つの半分をつなぐものです。AlphaFold 2は、あなたが尋ねた配列だけを受け取るのではありません。マルチプル配列アラインメント(MSA) を受け取ります。すなわち、その配列と、進化的に関連する多数の配列——広い範囲の生物にわたって現れる同じタンパク質——を、対応する位置が同じ列に並ぶように整列させたものです。

なぜこれがそれほど役に立つのでしょうか。共進化 のおかげです。具体的なペアで論理を示します。

折りたたまれた構造において、位置30と位置85が、鎖に沿っては遠く離れているのに、すぐ隣り合って座っていると仮定します。さらに、この生物では位置30が 正に帯電した 残基を、位置85が 負に帯電した 残基を担っており、両者のあいだの引力——塩橋——が折りたたみを保つのに役立っていると仮定します。

ここで進化を、数百万年、数千種にわたって走らせます。

こうしてアラインメント全体を見ると、特徴的なものが観察されます。どちらの列も保存されていない ——どちらの位置も種を越えて自由に変化する——にもかかわらず、両者は独立には変化しない。その変化は相関しているのです。一方が反転すると、他方が補償するように反転します。

その相関は、空間的制約の化石記録です。鎖の上では遠く離れているが空間では隣接する2つの位置は、アラインメントの中に統計的な痕跡 を残し、それは構造について何も知らずに読み出せるのです。

これこそ、実験的に解かれた立体構造が比較的少ないにもかかわらず、この問題が扱いやすかった理由です。訓練データは、解かれた構造に限られてなどいませんでした。シーケンシングされたゲノムはすべて、結果がすでに記録された進化の実験 であり、しかもそれが非常にたくさんあるのです。4.5節でこの信号を具体的かつ測定可能にします。

これには2つの留保が伴い、どちらも本物のシステムが処理しなければならず、どちらも私たちのコードにも現れます。第1に、関連する配列は 由来によって 関連しているので、任意の2つの位置が、触れているからではなく単に配列が祖先を共有しているために相関して見えることがあります——補正しなければならない交絡です。第2に、決して変化しない位置はまったく信号を担いません。完全に保存された列は、それが何と触れているかについて何も教えてくれないのです。

📚 (2) ペア表現とEvoformer

AlphaFold 2は 2つの表現を同時に 保持しており、それらを分離しておくことが設計の中心です。

ペア表現こそが、座標が存在するより前に構造が暗黙のうちに宿る場所です。それは幾何についてのネットワークの進化しつつある仮説なのです。

Evoformer は両方を処理するブロックです。その決定的な特徴は、2つの表現がアテンションを使って 繰り返し、双方向に情報を交換する ことです。

この交換を何度も繰り返すことが 反復的精錬 を構成します。最初のパスは粗く、部分的に矛盾した絵を生み、それ以降の各パスがそれを調停して、強い局所的な証拠を外へ伝播させ、他所のより弱い制約を解決していきます。ネットワークは一撃で答えを計算しているのではありません——答えへ収束しつつあるのです。

📚 (3) 構造モジュール: 関係から座標へ

ここまではすべて抽象的です。位置とペアの表現です。どこかの時点で、実際の三次元の対象が出てこなければなりません。

構造モジュール は精錬された表現を取り、明示的な3D座標 を生み出します。鍵となる設計判断は、座標を制約のない数値として予測しないことです。それは幾何を直接に扱います——各残基を、位置と向きをもつ剛体の局所フレームとして扱い、それらのフレームが空間でどう配置されるかを予測するのです。

これが重要なのは、立体構造が、任意の数値の羅列には従わない制約に従う からです。結合長は自由に変わりません。原子どうしが同じ空間を占めることはできません。そしてタンパク質の立体構造は、どう回転させ平行移動させても同じ立体構造です——だから表現は座標系の恣意的な選び方に依存すべきではありません。この幾何をモジュールに組み込むということは、ネットワークが自分の容量を、実際に未解決である問い——部品どうしがどう配置されているのか——に費やし、そもそも疑いの余地がなかった化学とユークリッド空間についての事実の再導出には費やさない、ということです。

第3章のMuZeroとの並行性に気づく価値があります。どちらの場合も、勝因は、システムが実際に生み出さねばならないものと整合した表現を選び、それ以外の何にも容量を費やすことを拒んだことにあるのです。

📚 (4) リサイクリング: 全体をもう一度走らせる

以上のすべてを包むさらなるループがあります。1回の完全なパスの出力——精錬された表現と予測された構造——が、次の完全なパスの 入力へ戻されます。これが リサイクリング と呼ばれるものです。

その効果は、ネットワークが自分の答えを見たうえで、それを改訂できるようになることです。最初のパスはある領域を自信をもって配置し、別の領域を曖昧なまま残すかもしれません。次のパスでは、自信のある領域が、曖昧な領域を制約する文脈として利用可能になります。これは反復的精錬をもう一度、単一のブロックではなくネットワーク全体のスケールで行うものです。

これは生物学を超えて本当に有用な工学的着想です。モデルに自分の下書きを見せ、噛み合っていない部分を調停する機会を与えるのです。

📚 (5) 信頼度: 自分が知らないことを知る

信頼性の推定を伴わない予測は危険です。利用者が、自信のある答えと当て推量を区別できないからです。AlphaFold 2は構造とともに、pLDDTと呼ばれる残基ごとの信頼度スコア を出力します。

大まかには、各残基について、この構造の当該部分を正しく配置できたとモデルがどれだけ確信しているか、ということです。高い信頼度は真剣に受け取るべき領域を示し、低い信頼度は慎重に扱うべき領域を示します——そして実務上、低信頼度の領域はしばしば、予測すべき単一の明確な構造をそもそも持たない、真に 天然変性 の部分に対応しています。

科学利用にとって、この価値はいくら強調してもしすぎることはありません。どこが信頼できないかを報告するモデルは、責任をもって使えます。あらゆる予測を等しい見かけの権威とともに提示するモデルは、そうできません。研究者は自信のある領域の上に構築し、不確かな領域のまわりに実験を設計できます。予測が単に印象的なだけでなく真に使えるものになった理由の大きな部分がこれです。

その使いやすさは、その後スケールをもって届けられました。2021年、DeepMindと EMBL-EBI は AlphaFoldタンパク質構造データベース を立ち上げ、予測された構造を広く公開しました——手法を、どの研究者も参照できるインフラへと変えたのです。

4.4 何を解決し、何を解決しなかったのか

「タンパク質折りたたみ問題は解決された」という表現は解きほぐす必要があります。誠実な版のほうが見出しより面白いからです。

本当に変わったこと。 十分な進化情報が利用できる 単一の、行儀の良いタンパク質ドメイン について、予測は しばしば当てにならない から たいてい科学的に有用なだけ正確である へ移りました。予測をスケールをもって公開したことと合わせれば、これは日常的な生物学研究が「利用可能である」と前提できるものの変化です。実務上の意義は誇張のしようがないほどです。

依然として難しいこと。 以下はすべて現在進行形の問題であり、そのどれもCASP14で解決されてはいません。

正しい要約はこうです。長らく残っていた問題が、はるかに小さな問題へと縮小され、そして残った問題はいまも実在する。 この枠づけは水を差すものではありません。それが達成を判読可能にするのであり、次の研究者に未解決の問いがどこにあるのかを告げるのです。

4.5 ハンズオン: 進化から接触を読み出す

4.3節の共進化の議論は本章の概念的な心臓であり、受け入れるより検査するに値する種類の主張です。ここではそれを測定可能なものとして示します。

疎水性・極性・塩基性・酸性という4つの残基クラスからなる小さなアルファベット上に、関連する配列の人工的なファミリーを構築します。その中で3つの選ばれた 位置ペア は、塩橋がそう強いるのとまったく同じように、一緒に変異します。それから構造を捨て、アラインメントだけを保持し、相互情報量 だけを使ってどのペアが接触していたかの復元を試みます。

\[ I(i, j) \;=\; H(i) + H(j) - H(i, j) \]

これは2つの列が独立に変化するときゼロになり、一方を知ることが他方について教えてくれるとき大きくなります。

罠も仕掛けます。配列は3つの 系統 から来ており、8つの列が系統に応じてドリフトします。それら8つのあいだのすべてのペアは、空間で一度も触れることなく相関して見えるでしょう——4.3節で名指しした祖先共有の交絡です。平均積補正(average product correction, APC) が標準的な処方です。各列が何とでも相関しがちである一般的な傾向に帰せられる相関を、各ペアから差し引くのです。

import numpy as np

# ---------------------------------------------------------------
# データとしての進化: アラインメントから空間的な接触を読み出す。
# 関連する配列の人工的なファミリーを構築し、その中でいくつか選ばれた
# 位置の「ペア」が一緒に変異するようにする——折りたたまれた構造で
# 触れ合う2つの残基がそうならざるをえないのと同じように。それから
# 構造を捨て、アラインメントだけを保持し、どのペアが接触していたかを
# 統計だけから復元しようと試みる。これがAlphaFoldの入力が拠って立つ
# 共進化の信号である。
# ---------------------------------------------------------------
rng = np.random.default_rng(20201130)

N_SEQ, L = 800, 24                 # 配列数、位置(列)数
ALPHABET = np.array(list("hp+-"))  # 縮約クラス: 疎水性/極性/塩基性/酸性
Q = len(ALPHABET)

# 正解データ。数値は、相手の残基が最初の残基に「応答する」確率——
# すなわちそのペアがどれだけきつく制約されているかである。
CONTACTS = {(4, 19): 0.95,         # きついペア
            (9, 14): 0.90,         # もう1つのきついペア
            (2, 21): 0.60}         # ゆるいペア: 実在するが、ノイジー
PARTNER = np.array([2, 3, 0, 1])   # h<->+, p<->- : 「応答」の規則

# 構造的な意味をもたない交絡: 祖先の共有。配列は3つの系統から来ており、
# これらの列は系統ごとにドリフトする。それらのあいだのすべてのペアは、
# 空間で一度も触れることなく相関して見える。
LINEAGES, LINEAGE_COLS = 3, [0, 3, 6, 7, 11, 15, 18, 22]


def make_alignment():
    """整数コード化された残基からなる (N_SEQ, L) のアラインメントを生成する。"""
    # 列ごとの背景組成。ディリクレのalphaが小さい => 保存的になる
    conc = rng.lognormal(mean=0.0, sigma=1.0, size=L)
    for col in [c for pair in CONTACTS for c in pair]:
        conc[col] = 2.0            # 決して変化しない列は信号をもたない
    background = np.array([rng.dirichlet(np.full(Q, c)) for c in conc])
    lineage_comp = {(col, lin): rng.dirichlet(np.full(Q, 0.6))
                    for col in LINEAGE_COLS for lin in range(LINEAGES)}
    lineage_of = rng.integers(0, LINEAGES, size=N_SEQ)

    msa = np.zeros((N_SEQ, L), dtype=np.int8)
    for n in range(N_SEQ):
        for col in range(L):
            p = (lineage_comp[(col, lineage_of[n])] if col in LINEAGE_COLS
                 else background[col])
            msa[n, col] = rng.choice(Q, p=p)
        for (i, j), strength in CONTACTS.items():
            if rng.random() < strength:      # 相手が応答する
                msa[n, j] = PARTNER[msa[n, i]]
    return msa


def entropy(counts):
    p = counts / counts.sum()
    p = p[p > 0]
    return float(-(p * np.log2(p)).sum())


def joint_counts(col_i, col_j):
    return np.bincount(col_i.astype(int) * Q + col_j.astype(int),
                       minlength=Q * Q).reshape(Q, Q)


def mutual_information(col_i, col_j):
    """プラグイン推定による相互情報量(ビット単位): H(i) + H(j) - H(i, j)。"""
    jc = joint_counts(col_i, col_j)
    return entropy(jc.sum(axis=1)) + entropy(jc.sum(axis=0)) - entropy(jc.ravel())


msa = make_alignment()
print(f"Alignment: {N_SEQ} sequences x {L} positions, alphabet '{''.join(ALPHABET)}'")
for n in range(5):
    print("   " + "".join(ALPHABET[msa[n]]))

# --- 共進化の物語を、具体的にする ------------------------------
i, j = 4, 19
jc = joint_counts(msa[:, i], msa[:, j])
print(f"\nJoint counts for the true contact ({i}, {j}); rows = position {i}:")
print("        " + "".join(f"{c:>7}" for c in ALPHABET))
for a in range(Q):
    print(f"     {ALPHABET[a]}  " + "".join(f"{jc[a, b]:>7}" for b in range(Q)))
print(f"   Marginals: position {i} {jc.sum(axis=1)}, position {j} {jc.sum(axis=0)}")
print("   Each row has ONE dominant column: when position 4 changes,")
print("   position 19 changes with it. Neither column alone is conserved.")

# --- すべてのペアを採点する ------------------------------------
mi = np.zeros((L, L))
for a in range(L):
    for b in range(a + 1, L):
        mi[a, b] = mi[b, a] = mutual_information(msa[:, a], msa[:, b])

# 平均積補正: 各列が何とでも相関しがちである一般的な傾向だけから
# あるペアが示すであろう相互情報量を差し引く。
row_mean = mi.sum(axis=1) / (L - 1)
mi_apc = mi - np.outer(row_mean, row_mean) / row_mean.mean()
np.fill_diagonal(mi_apc, 0.0)

PAIRS = [(a, b) for a in range(L) for b in range(a + 1, L)]


def label(pair):
    if pair in CONTACTS:
        return f"TRUE CONTACT (coupling {CONTACTS[pair]:.2f})"
    if pair[0] in LINEAGE_COLS and pair[1] in LINEAGE_COLS:
        return "lineage artefact"
    return ""


METHODS = [("raw MI", "raw mutual information", mi),
           ("MI-APC", "MI after average product correction", mi_apc)]
rankings = {}
for short, name, score in METHODS:
    order = sorted(PAIRS, key=lambda ab: score[ab], reverse=True)
    rankings[short] = order
    print(f"\nTop 8 pairs by {name}:")
    print(f"   {'rank':>4} {'pair':>10} {'score':>9}   note")
    for r, pair in enumerate(order[:8], 1):
        print(f"   {r:>4} {str(pair):>10} {score[pair]:>9.4f}   {label(pair)}")

print(f"\nRank of each true contact, out of {len(PAIRS)} candidate pairs:")
print(f"   {'pair':>10} {'coupling':>9} " + " ".join(f"{s:>8}" for s in rankings))
for pair, strength in CONTACTS.items():
    ranks = " ".join(f"{order.index(pair) + 1:>8}" for order in rankings.values())
    print(f"   {str(pair):>10} {strength:>9.2f} {ranks}")

off = mi[np.triu_indices(L, 1)]
print(f"\nBackground MI over all {len(PAIRS)} pairs: median {np.median(off):.4f}, "
      f"95th pct {np.percentile(off, 95):.4f} bits")
print(f"Strongest true contact (9, 14): {mi[9, 14]:.4f} bits "
      f"-- {mi[9, 14]/np.median(off):.0f}x the median")

出力:

Alignment: 800 sequences x 24 positions, alphabet 'hp+-'
   ---+h-h-ph+++-h---++hp-h
   -phh-+p+ph+p+-+---hpp+hh
   pphhh-+pph+h+-+h--++p+-h
   --+h-+p-+php+--h--+pp+hh
   -h-+h++-p++p+-hh--++pp+h

Joint counts for the true contact (4, 19); rows = position 4:
              h      p      +      -
     h        3      3    448     11
     p        0      1      0    109
     +        9      1      0      0
     -        1    207      4      3
   Marginals: position 4 [465 110  10 215], position 19 [ 13 212 452 123]
   Each row has ONE dominant column: when position 4 changes,
   position 19 changes with it. Neither column alone is conserved.

Top 8 pairs by raw mutual information:
   rank       pair     score   note
      1    (9, 14)    1.3888   TRUE CONTACT (coupling 0.90)
      2    (4, 19)    1.2343   TRUE CONTACT (coupling 0.95)
      3    (2, 21)    0.5431   TRUE CONTACT (coupling 0.60)
      4    (6, 15)    0.2733   lineage artefact
      5    (6, 22)    0.2575   lineage artefact
      6     (6, 7)    0.2383   lineage artefact
      7     (3, 6)    0.2303   lineage artefact
      8    (6, 11)    0.2265   lineage artefact

Top 8 pairs by MI after average product correction:
   rank       pair     score   note
      1    (9, 14)    1.2302   TRUE CONTACT (coupling 0.90)
      2    (4, 19)    1.1050   TRUE CONTACT (coupling 0.95)
      3    (2, 21)    0.5110   TRUE CONTACT (coupling 0.60)
      4    (6, 15)    0.1664   lineage artefact
      5    (6, 22)    0.1547   lineage artefact
      6     (6, 7)    0.1399   lineage artefact
      7     (3, 6)    0.1398   lineage artefact
      8    (6, 11)    0.1369   lineage artefact

Rank of each true contact, out of 276 candidate pairs:
         pair  coupling   raw MI   MI-APC
      (4, 19)      0.95        2        2
      (9, 14)      0.90        1        1
      (2, 21)      0.60        3        3

Background MI over all 276 pairs: median 0.0071, 95th pct 0.1184 bits
Strongest true contact (9, 14): 1.3888 bits -- 195x the median

結果の読み方。 5つの観察を挙げます。最後の2つが、あなたを誠実に保つものです。

ゆるいペアの結合を 0.60 から 0.35 に下げて再実行してみてください。それが順位のどこに着地するか、そしてそのスコアが系統のアーティファクトにどこまで近づくかを観察してください。その交差点——真だが弱い制約が交絡と区別できなくなる場所——がこのアプローチ全体の実務的な限界であり、本物のシステムが相互情報量よりはるかに多くを必要とする理由なのです。

🎯 演習問題

  1. 許可証。 アンフィンセンの熱力学仮説を1文で述べ、それがなければ配列から構造への予測が不良設定になる理由を精確に説明してください。そのうえで、この仮説が予測を簡単だと 含意しない 理由を説明してください。

  2. なぜシミュレートしないのか。 レヴィンタールのパラドックスはしばしば「折りたたみはランダムな探索ではありえない」と要約されます。漏斗による解決を自分の言葉で説明し、そのうえで、すべての原子の運動をシミュレートして構造を予測する見込みについて、このパラドックスが何を含意するのかを説明してください。

  3. 共進化の論理。 自分自身の残基ペアを——4.3節の塩橋とは異なる化学で——考案し、同じ物語を語ってください。なぜ一方の位置だけの変異が選択で排除されるのか、なぜ補償する2つの変異はそうならないのか、そしてこれがアラインメントにどんなパターンを残すのか。個々の 列に何が見えるかを明示的に述べてください。

  4. デモに計器を付ける。 配列数 N_SEQ が50, 100, 200, 400, 800 と変化するようにコードを改変し、各サイズにおける各真接触の順位を記録してください。アラインメントの深さがどこまで浅くなると、ゆるいペアは復元できなくなりますか。あなたの答えを4.4節の最後の箇条書きと関連づけてください。

  5. 予測を監査する。 ある同僚がAlphaFoldで予測した立体構造を見せ、そこに見えるポケットに対する阻害剤の設計を提案しています。同意する前に尋ねる5つの問いを挙げてください——信頼度スコアについて少なくとも1つ、そのタンパク質が動的である可能性について1つ、利用可能なアラインメントの深さについて1つを含めてください。

まとめ

タンパク質はアミノ酸の直鎖として作られ、自発的に特定の三次元の形へ折りたたまれます。そして 機能を決めるのはその形 です。その形を測定すること——X線結晶構造解析、クライオ電顕、NMRによって——は遅く高価で熟練を要する仕事であり、その結果、配列は立体構造よりはるかに速く蓄積されました。アンフィンセンの再折りたたみ実験(1960〜70年代、1972年ノーベル賞)は、必要な情報はすべてすでに配列の中にあるという 熱力学仮説 を確立し、予測を適切に定義された問題にしました。レヴィンタールのパラドックス は、それが列挙では見つからないことを確立しました。配置の数は鎖の長さについて指数的なのに、折りたたみは1秒足らずで起きる。したがって地形は探索されるのではなく 漏斗状 でなければなりません。

CASP は 1994年以来2年ごと に開催され、予測者に伏せられた実験構造に対して ブラインドで モデルを提出させることで、進歩を測定可能にしました。数十年にわたって進歩は漸進的でした。2018年のCASP13ではAlphaFold 1 が、ペアごとの接触予測に適用された深層学習によって首位を占めました。2020年のCASP14におけるAlphaFold 2 はこの分野を変え、問題は 単一ドメインについては本質的に解決されたと広く記述される に至りました。手法は2021年に Nature 誌で発表され、AlphaFoldタンパク質構造データベース が同2021年に EMBL-EBI とともに立ち上がりました。

設計を支えるのは5つの原理です。データとしての進化: マルチプル配列アラインメントは 共進化 を露わにします。空間的に接触する2つの位置は、補償的な変異が折りたたみを保存するために相関して変化するのです。ペア表現 は位置のあらゆるペアについての信念を保持し、Evoformer はアテンションを使ってそれとMSAのあいだで情報を繰り返し交換します。幾何的な自己整合性を強制する更新も含めて。構造モジュール はそれらの関係を実際の座標へ変えつつ、実在の幾何が従う制約を組み込みます。リサイクリング は完了したパスを入力へ戻し、ネットワークが自分の下書きを改訂できるようにします。そして pLDDT が残基ごとの信頼度を報告し、それが出力を安全に積み上げられるものにしています。

私たちの共進化のデモは、第1の原理を測定可能にしました。800配列のアラインメントから、仕込んだ3つの接触はすべて 276通りの候補ペアのうち1, 2, 3位 にランクされ、最強のものは 背景の中央値0.0071に対して1.3888ビット でした——一方で同時出現数の表は、その制約が どちらか一方の列だけでは見えない ことを示しました。仕込んだ祖先共有の交絡は順位4から8を占め、平均積補正 はそれをおよそ39%切り下げる一方、真の信号にはおよそ11%のコストしかかけませんでした。

誠実な境界線は、この達成と同じくらい重要です。深いアラインメントをもつ 単一の静的なドメイン は、当てにならない状態から日常的に有用な状態へ移りました。複合体、動的挙動、天然変性領域、単一変異の影響、既知の近縁が少ないタンパク質は依然として難しい。 長らく残っていた問題はより小さな問題へ縮小され、そのより小さな問題はいまも実在します。

次章は一歩下がって、囲碁からタンパク質への軌跡が実際に何を教えたのか——ゲームから科学へ何が引き継がれ、何が引き継がれなかったのか、そして同じ組織がほとんど何の共通点もない2つの問題を解いた10年から、1つの分野が何を学ぶべきなのか——を問います。

← 第3章: Zeroとその先: 人間なしで学ぶ 第5章: 遺産: ゲームから科学へ →

免責事項