iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
Build on Google AI

《解構生命暗物質:用 AlphaGenome Atlas 破譯 98% 非編碼基因組的 30 天實戰》系列 第 12 篇

AlphaGenome Atlas 實戰 | Day 12 | 讀懂 AVI 評分指標 —— 它是「危險優先級」,不是「發病機率」!

  • 分享至 

  • xImage
  •  

💡 導讀:身高排名前 1%,就代表一定能打進 NBA 嗎?

如果學校體檢報告顯示你的身高排在全校前 1%,這是否意味著你 100% 確定會成為職業 NBA 籃球員?

當然不!身高很高(前 1%)代表你具備了極高的人才優勢與被球探關注的「優先權」,但你最終能不能打進 NBA,還取決於你的運球技術、體能訓練、場上位置,以及球隊願不願意選你。

在基因醫學的世界裡,許多人看到 AI 給出一個「高風險評分」時,常會陷入相同的誤解,以為這代表病患有九成的機率會生病。但 Google DeepMind 的 AlphaGenome 團隊特別強調:AVI 分數提供的是「優先級(Prioritization)」,絕對不是「罹病機率(Probability)」!

今天,我們就來拆解 AVI 分數的數學真相,並看看 AI 如何透過「特徵歸因」幫我們打開黑盒子!


一、 預測分數的陷阱:是「排隊優先級」,不是「發病機率」

AVI 分數採用了類似傳統 CADD 工具的 Phred 標度(PR Scale)。這是一種對數轉換的數學表達方式,代表的是一個變異在全人類 90 億種可能變化中的 「罕見與破壞力排名」:

  • 分數 10:代表該變異的潛在影響力進入了全部預測結果的前 10%。
  • 分數 20:代表它擠進了 前 1%(影響力非常顯著)。
  • 分數 30:代表它屬於極端的 前 0.1%(非常罕見且破壞力極強)。

當一個變異拿到了 20 分的高分,只代表 AI 幫你把這顆可疑的變異從幾百萬個字母的大海裡 「撈到了桌面上」,提醒醫生:「這顆變異非常不尋常,請優先檢查它!」

至於病患究竟會不會發病?這還取決於:

  1. 發生在哪個基因上:有些基因容忍度很高,就算受損也不會致病;有些基因則是失之一毫,差之千里。
  2. 遺傳模式:是顯性遺傳(單顆就致病)還是隱性遺傳(需要兩顆都突變)?
  3. 臨床症狀與家族史:必須結合病患實際的生理檢查。

AI 負責「排序與定位」,而最終的臨床診斷,依然需要人類專家結合實際症狀來定奪。


二、 打開黑盒子:為什麼我們需要「特徵歸因(Feature Attribution)」?

如果 AI 系統只丟出一個冷冰冰的高分數,卻不解釋原因,這就像股票分析軟體只給你顯示「這檔股票 95 分,買進!」,卻不告訴你原因一樣。專業操盤手需要知道:這 95 分是因為公司賺大錢、外資大買,還是單純的市場炒作?

在基因學中也是一樣, 兩個 AVI 分數完全相同的變異,背後的生物學機制可能截然不同:

候選變異 AVI 分數 特徵歸因(主要信號來源) 白話機制解讀 後續驗證與臨床推論方向
變異 A 22 (前 1%) AlphaMissense(蛋白質結構破壞) 實體零件壞掉:蛋白質的 3D 物理結構被破壞。 檢驗目標蛋白質是否發生結構失穩或功能喪失。
變異 B 22 (前 1%) AlphaGenome(RNA 剪接異常) 剪接藍圖出錯:蛋白質藍圖沒壞,但 RNA 剪接位置出錯。 設計細胞實驗,檢驗 mRNA 長度是否異常。
變異 C 21 (前 1%) AlphaGenome(轉錄因子結合度下降) 開關被稍微調暗:僅在特定神經元中些微降低產量。 可能不致命,而是影響某種複雜的生理性狀。

如果沒有特徵歸因,醫生就無法知道變異 B 需要做 RNA 剪接實驗,而變異 A 需要做蛋白質結構分析。DeepMind 刻意保留了特徵歸因,讓每一個高分背後都有清晰的證據鏈!


💻 三、 實作:【3D 基因組矩陣】提取 1 Mb 窗口下的 2D Contact Map 折疊數據 (contact_map_2d.py)

AlphaGenome 能在 1 Mb(100 萬鹼基)的超長視野 下,輸出 2,048 bp 解析度的 2D 接觸矩陣(Contact Maps)。今天我們來計算 3D 空間折疊結構是否因為突變而發生了崩塌!

💻 程式碼:contact_map_2d.py

# contact_map_2d.py - 2D 染色質 3D 折疊矩陣解析器
import numpy as np
import config
from hello_alphagenome import fetch_variant_raw_response

def compute_2d_contact_delta(raw_response):
    """計算 2D Contact Map 矩陣突變前後的落差"""
    tracks = raw_response.get("tracks", [])
    contact_track = next((t for t in tracks if t.get("assay_type") == "contact_maps"), None)

    # 若 API 無 2D 矩陣,提供 10x10 的模擬對角接觸矩陣
    if not contact_track or "ref_signal_2d" not in contact_track:
        ref_mat = np.eye(10) * 0.5
        alt_mat = np.eye(10) * 0.5
        alt_mat = 0.65  # 模擬第 2 區與第 7 區跨越空間打電話!
        alt_mat = 0.65
    else:
        ref_mat = np.array(contact_track["ref_signal_2d"])
        alt_mat = np.array(contact_track["alt_signal_2d"])

    delta_mat = alt_mat - ref_mat
    max_3d_impact = float(np.max(np.abs(delta_mat)))

    return {
        "matrix_shape": delta_mat.shape,
        "max_3d_impact": max_3d_impact,
        "delta_matrix": delta_mat
    }

if __name__ == "__main__":
    raw = fetch_variant_raw_response(config.TEST_VARIANT)
    res_3d = compute_2d_contact_delta(raw)

    print("\n" + "="*50)
    print(f"📐 3D Contact Map 矩陣維度: {res_3d['matrix_shape']}")
    print(f"⚠️ 最大 3D 空間折疊改變量: {res_3d['max_3d_impact']:.4f}")
    print("="*50)


明天,我們將迎來模組三的最高潮!我們將拿著這套 AVI 評分與特徵歸因武器,親自拆解那名六週大幼兒的「頑固型癲癇謎團」,看看 AI 是如何在 98% 的基因暗物質中精準揪出真兇的!



上一篇
AlphaGenome Atlas 實戰 | Day 11 | 打破維度災難 —— 拆解 AVI 綜合評分的 18 類特徵架構
下一篇
AlphaGenome Atlas 實戰 | Day 13 | 頑固型癲癇謎團 —— 當全基因組與 RNA 檢測都找不到病因
系列文
《解構生命暗物質:用 AlphaGenome Atlas 破譯 98% 非編碼基因組的 30 天實戰》 共 19 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言