人類的 DNA 就像是一本由 A、T、C、G 四個字母寫成的巨型密碼書。
如果把單一鹼基(A、T、C、G)比喻成「英文字母」,那麼由 4 到 20 個鹼基組合而成的特定序列——調控基序(Cis-regulatory Motifs),就是這本書裡的 「單字」與「密碼指令」!
細胞裡的 轉錄因子(Transcription Factors, TFs) 就像是負責閱讀密碼的蛋白質侍衛。當侍衛看到特定的單字密碼(例如 TATA-box 或 CTCF)時,就會黏上去把基因的開關打開或關閉。
但是,如果這串單字中間發生了一個字母突變(比如將原本的單字改錯了一個字),侍衛就會看不懂密碼、憤而離去,或者意外造出了一個錯誤的新密碼,導致大腦或肝臟的基因表現大亂!
後續來看看 AlphaGenome Atlas 究竟是如何化身為生醫界的 「AI 語言學家」,自動從 30 億個 DNA 字母中破解並歸納出全基因組超過 2,500 種調控單字(Motifs) 的神秘文法!
過去,生物學家要找出一個基因開關附近有哪些調控單字,必須在實驗室裡做幾百次繁瑣的蛋白質結合實驗(如 ChIP-seq)。
DeepMind 研究團隊(包含 Stowers 研究所的 Julia Zeitlinger 博士等人)利用 AlphaGenome 做到了傳統實驗做不到的事:
OCT-SOX 或 AP1-IRF),就像是句子裡的固定片語組合!AlphaGenome 破解的調控字典,最厲害的地方在於它具備 「細胞特異性(Cell-type Specificity)」——也就是說,同一個單字在皮膚細胞和在大腦細胞裡,AI 預測出的含義與功能是完全不同的!
chr17:43125410:G>A 突變時,AlphaGenome 預測顯示 E2F 單字直接被「抹除(Ablated)」,導致 BRCA1 基因表達量斷崖式下跌,細胞失去了修復 DNA 的能力!| 調控單字類別 (Motif Class) | 代表性單字與轉錄因子 | 細胞內的生物學功能 (Biochemistry Function) | AlphaGenome 多模態觀察 |
|---|---|---|---|
| 開模型/激活型 (Activators) | HNF1, HNF4, CEBP |
像「油門」,打開染色質並大力拉高 RNA 轉錄量。 | DNase、H3K27ac 與 RNA-seq 訊號同步飆高。 |
| 壓制型 (Repressors) | ZEB, GLI, ZNF274 |
像「煞車」,關閉染色質或招募抑制性組織蛋白(H3K9me3)。 | 訊號呈顯著負向抑制(Net Negative Impact)。 |
| 雙重調控型 (Dual/Context) | CTCF, REST |
像「3D 拓撲架構鎖」,負責形塑 DNA 3D 結構或視環境開關。 | 在 Contact Maps(3D 結構圖)與不同細胞系展現多變功能。 |
在我們的 神經罕病與基因調控分析助理 專案中,我們可以撰寫一段 Python 腳本 analyze_motif_disruption.py,輸入一個變異座標,自動對比變異前後是否「破壞了某個調控單字」:
import os
import json
from dotenv import load_dotenv
import alphagenome as ag
# 載入隱藏設定檔中的憑證
load_dotenv()
def analyze_variant_motif_disruption(variant_query, target_tissue="brain"):
"""
查詢 AlphaGenome Atlas 數據,分析該變異是否破壞了特定的調控單字 (Cis-regulatory Motif)
"""
client = ag.Client()
print(f"🔍 正在查詢變異 {variant_query} 在 [{target_tissue}] 中的調控單字 (Motif) 破壞情況...")
try:
# 呼叫 API 獲取變異註解與 Motif 匹配資料
response = client.get_variant_annotation(variant_query, include_motifs=True)
variant_id = response.get('variant_id', variant_query)
avi_score = response.get('avi_score', {}).get('percentile', 0)
motifs = response.get('affected_motifs', [])
print("\n" + "="*55)
print(f"🧬 變異座標: {variant_id} | AVI 風險評分: {avi_score} / 30")
if not motifs:
print("ℹ️ 此變異未重疊或破壞已知的調控單字 (Non-motif region)。")
else:
print(f"⚠️ 偵測到 {len(motifs)} 個受到此變異影響的 DNA 調控單字 (Motifs):")
for idx, m in enumerate(motifs, 1):
tf_name = m.get('tf_family', 'Unknown TF')
motif_id = m.get('motif_id', 'N/A')
impact = m.get('impact_type', 'Disrupted') # e.g., Disrupted (破壞) or Created (新造)
print(f" #{idx} 調控單字: {tf_name} ({motif_id})")
print(f" ➔ 破壞類型: 【{impact}】")
print(f" ➔ 匹配強度變化: {m.get('ref_binding_score', 0):.2f} ➔ {m.get('alt_binding_score', 0):.2f}")
print("="*55 + "\n")
except Exception as e:
print(f"❌ Motif 破壞分析失敗: {e}")
if __name__ == "__main__":
# 測試 BRCA1 啟動子上的 E2F 單字破壞變異範例 (或 DNM1 變異)
test_variant = "chr17:43125410:G:A"
analyze_variant_motif_disruption(test_variant, target_tissue="mammary_gland")
這段腳本能幫臨床研究員快速抓包:「這個變異之所以高分,是因為它把 E2F/TP63 調控單字的結合強度從 1.5 直接拍扁到了 0.0!」,精準還原了分子等級的犯罪現場!