iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
Build on Google AI

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

AlphaGenome Atlas 實戰 | Day 23 | 自動化批次標註 —— 整合 API 快速為候選清單計算 AVI 權重

  • 分享至 

  • xImage
  •  

💡 導讀:足球比賽有裁判記牌器,基因診斷也有「ACMG 扣分指引」!

在 一場世足賽中,裁判不能憑自己的喜好隨便把球員紅牌驅逐出場。裁判必須嚴格遵守國際足總的規則:

  • 後方突擊絆倒球員 ➔ 記黃牌(中度犯規);
  • 禁區內故意用手擋球 ➔ 直接紅牌(極度嚴重犯規)!

當累積的黃牌與紅牌達到一定數量時,球員就會被正式判罰出場。

在基因診斷的世界裡也是!我們不能只因為 AlphaGenome 給出了高分,就冒然向病患家屬宣佈「這個變異 100% 就是致病元兇」。全球醫學界有一套權威的國際裁判標準——ACMG/AMP 指引(美國醫學遺傳學及基因體學學會指引)。

現在,如何讓 Gemini 依照 ACMG 裁判規則進行扣分,並組建包含四大專家的 Antigravity 多代理人系統 (Multi-Agent System),打造和規的臨床診斷報告!


一、 什麼是 ACMG/AMP 指引?基因變異的「五級判決機制」

在 ACMG 的標準中,每一個變異被收集到的證據,都會被賦予一個標準代碼:

  • PVS1(極強致病證據):例如蛋白質編碼藍圖被直接中斷、做不出完整產品。
  • PM2(中等致病證據):在正常人群基因庫(如 gnomAD)中極度罕見甚至從未出現。
  • PP3 / PS1(支持性致病證據):AI 預測工具(如 AlphaGenome AVI 分數)顯示其對 RNA 剪接或調控開關有毀滅性打擊。

當系統將所有證據代碼(如 1 個 PVS1 + 2 個 PM2)進行數學組合後,最終會將變異歸類為 五個臨床等級:

ACMG 分級等級 白話意義 臨床代表燈號 醫生的後續處置
1. Pathogenic (致病) 鐵證如山,這個變異就是引發疾病的真兇! 🔴 紅燈 確立診斷,啟動標靶藥物或精準治療。
2. Likely Pathogenic (可能致病) 有高達 90% 以上的把握是致病變異。 🟠 橘燈 進行家系驗證或濕實驗最終確認。
3. VUS (意義不明變異) 證據不足,不確定是害蟲還是無害鄰居。 🟡 黃燈 暫不作臨床處置,持續追蹤最新文獻。
4. Likely Benign (可能良性) 大機率是無害的正常基因多樣性。 🟢 綠燈 排除該變異,繼續排查其他候選者。
5. Benign (良性) 確定無害,是一般健康的正常基因。 ⚪ 灰燈 完全忽略。

二、 Antigravity 多代理人架構 (Multi-Agent System)

為了完成如此嚴謹的 ACMG 診斷,單靠一個 AI 角色太累了。因此我們在 Google AI Studio 與系統後端設計了 Antigravity 多代理人分工協作架構,讓四位專家 AI 與一位總指揮官同台協作:

                    ┌─────────────────────────┐
                    │ 👑 總控編排官 (Orchestrator)│
                    └────────────┬────────────┘
                                 │ (派發診斷任務)
         ┌───────────────────────┼───────────────────────┐
         ▼                       ▼                       ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ 🧬 基因代理人    │     │ 📈 軌跡代理人    │     │ 📚 文獻代理人    │
│ (Gene Agent)    │     │ (Track Agent)   │     │ (Lit Agent)     │
│ 負責 VCF 頻率過濾│     │ 解析 AVI 與 Delta│     │ 搜尋 PubMed 論文 │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │ (匯集三方證據)
                                 ▼
                    ┌─────────────────────────┐
                    │ 🩺 臨床裁決代理人        │
                    │ (ACMG / Clinical Agent) │ ➔ 輸出最終 ACMG 五級診斷報告
                    └─────────────────────────┘
  1. 👑 總控編排官 (Orchestrator):接獲病患 VCF 檔案與症狀,派發任務給三位調查員。
  2. 🧬 基因代理人 (Gene Agent):檢查人群頻率(gnomAD),判定符合 PM2 罕見條款。
  3. 📈 軌跡代理人 (Track Agent):調用 AlphaGenome API 計算 Delta Score,判定符合 PP3/PS1 剪接破壞條款。
  4. 📚 文獻代理人 (Literature Agent):自動搜尋 PubMed,抓取同毒性臨床論文與實驗數據。
  5. 🩺 臨床裁決代理人 (Clinical / ACMG Agent):整合上述三方證據,依據 ACMG 規則計算,最終宣判為 🔴 Pathogenic (致病)!

💻 三、 實作:撰寫 ACMG 自動化評估與 Multi-Agent 協作腳本

現在,打開你的程式碼編輯器,建立 Python 腳本 antigravity_multi_agent.py。我們實作這套能整合 ACMG 條款的多代理人推理邏輯:

import os
import json
from dotenv import load_dotenv
import google.generativeai as genai

load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))

# 1. 定義【臨床裁決代理人】的 ACMG 判決 System Instruction
ACMG_AGENT_SYSTEM_INSTRUCTION = """
你是一位嚴謹的 ACMG/AMP 臨床遺傳學診斷專家 Agent。
請根據前端三位代理人(基因、軌跡、文獻)提供的綜合數據,自動套用 ACMG 指引進行條款計分:

1. 檢查變異人群頻率 < 0.0001 ➔ 賦予 PM2 條款 (Moderate)
2. 檢查 AlphaGenome AVI > 20 且 Delta Splicing > 0.5 ➔ 賦予 PP3/PS1 條款 (Supporting/Strong)
3. 檢查是否有文獻證明同基因功能喪失 ➔ 賦予 PP4/PS3 條款

【最終輸出】計算條款組合,輸出國際標準的 ACMG 分級 (Pathogenic / Likely Pathogenic / VUS / Likely Benign / Benign) 與 JSON 格式說明。
"""

def run_antigravity_acmg_pipeline(gene_data, track_data, literature_data):
    """整合三大代理人數據,交由 ACMG 臨床代理人進行最終裁決"""

    model = genai.GenerativeModel(
        model_name="gemini-1.5-pro",
        system_instruction=ACMG_AGENT_SYSTEM_INSTRUCTION,
        generation_config={"response_mime_type": "application/json"}
    )

    # 打包三位 Agent 收集到的證據包
    evidence_payload = {
        "gene_agent_evidence": gene_data,
        "track_agent_evidence": track_data,
        "literature_agent_evidence": literature_data
    }

    prompt = f"請針對以下四大代理人搜集到的證據包,進行 ACMG/AMP 自動化條款對照與最終分級:\n{json.dumps(evidence_payload, ensure_ascii=False)}"

    print("🩺 [Antigravity Multi-Agent] 臨床裁決代理人正在進行 ACMG 綜合審查...")
    response = model.generate_content(prompt)

    return json.loads(response.text)

if __name__ == "__main__":
    # 模擬前三大 Agent 傳回的綜合數據 (以六週大幼兒 DNM1 變異為例)
    mock_gene_evidence = {"gene": "DNM1", "variant": "chr9:128225994:G:A", "gnomad_af": 0.0, "acmg_rule": "PM2"}
    mock_track_evidence = {"avi_score": 24.7, "max_delta_splicing": 0.85, "tissue": "Glutamatergic_Neuron", "acmg_rule": "PP3_Strong"}
    mock_lit_evidence = {"pubmed_pmid": "38212345", "finding": "In-frame insertion causes dominant-negative loss of function", "acmg_rule": "PS3"}

    # 執行最終 ACMG 裁決
    acmg_verdict = run_antigravity_acmg_pipeline(mock_gene_evidence, mock_track_evidence, mock_lit_evidence)

    print("\n" + "="*50)
    print("🏆 Antigravity 多代理人系統最終 ACMG 診斷判決報告 (JSON):")
    print(json.dumps(acmg_verdict, ensure_ascii=False, indent=2))
    print("="*50 + "\n")

執行這段腳本後,系統會自動輸出包含 ACMG_Classification: "Pathogenic" 的 JSON 報告,並詳細載明符合了 PM2 + PP3 + PS3 條款,提供了完整且符合國際醫療標準的數位報告!



上一篇
AlphaGenome Atlas 實戰 | Day 22 | 數據前處理與初篩 —— 使用 Python 提取與過濾候選非編碼變異
系列文
《解構生命暗物質:用 AlphaGenome Atlas 破譯 98% 非編碼基因組的 30 天實戰》 共 23 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言