模組 ★ · Capstone

Capstone:整合式位點判讀

整合單一位點的多項證據,完成可重現的推論流程,並撰寫明確標示不確定性的結論。

約 120 分鐘建議先修:LongPhase-TO

本模組學習目標

  • 獨立判讀一個位點的所有證據,並得出有根據的結論
  • 在有配對正常樣本與只有腫瘤樣本兩種情境下做出不同的判斷,並說明理由
  • 在同一個位點上跑完兩種流程,並在各自的輸出檔案裡找到答案
  • 計算 precision 與 recall,並指出它們在這個案例裡的限制
  • 寫出一段明確區分「觀測到的」與「推論出來的」結論

為什麼重要

前面十四個模組各自處理一件事。這一節把它們放回同一個位點上, 要求你自己判讀,而不是照著步驟做。

評量的重點不是指令跑不跑得動,是你的解讀有沒有證據撐住。 實務上要說清楚三件事:你觀測到什麼、你從觀測推論出什麼、以及哪些結論還受資料或模型限制。 這三件事混在一起寫,別人就無法判斷你有幾分把握。

概念與互動

案例:chr9 上的一個候選點

給定條件:

項目
樣本HCC1395(乳癌細胞株),ONT R10
位置chr9:5,073,770,落在 JAK2 基因範圍內
候選變異SNV,G → T
Tumor coverage50×,其中 11 條支持 ALT
Normal coverage25×,其中 0 條支持 ALT
估計 0.6(本題簡化模型中視為 tumor DNA fraction)
該區段 2(無 CNV,無
周圍 200 bp 內的 het germline SNP2 個,皆已 phase
支持 ALT 的 11 條 read 的 10 條 HP1、1 條 HP2
序列脈絡非 homopolymer、非重複區
PON不在任何族群資料庫中

完整推理鏈示例

判讀一個候選位點的完整推理鏈 從觀測資料開始,依序檢查五類證據: 頻率是否符合預期、配對正常組織是否乾淨、支持的 read 是否集中在同一條染色體上、 序列脈絡是否容易出錯、以及公開資料庫有沒有收錄。 每一項標示定性支持程度,最後匯總成一個帶有明確不確定性的結論。 右側列出每一項如果換成只有腫瘤樣本的情況會怎麼改變。 觀測資料 tumor 50× · ALT 11 normal 25× · ALT 0 ALT 的 HP: 10 / 1 purity 0.6 · CN 2 ① 頻率符合預期嗎 11/50 = 0.22,理論值 0.30 → 相容 ② 正常組織乾淨嗎 25× 深度、0 條 → 降低 het germline 可能 ++ ③ 支持的 read 集中嗎 10 比 1 偏向一條 → 支持來源一致 ++ ④ 序列脈絡容易出錯嗎 非重複、非 homopolymer → 已知風險較低 ⑤ 資料庫有收錄嗎 沒有 —— 但這只排除「常見」的遺傳變異 若只有腫瘤樣本 ① 還在 ② 不可用 (此類證據不可用) ③ 還在,而且變成主力 ④ 還在 ⑤ 還在,但幫助有限 → 無法排除「這個人   獨有的遺傳變異」 結論該怎麼寫 有配對正常組織時 「與 somatic 變異相容,支持度較高。」 四項支持證據,其中兩項有力: 正常組織乾淨、支持 read 集中。 保留的疑慮:那 1 條例外要解釋, 而 purity 0.6 本身是估計值。 只有腫瘤樣本時 「與 somatic 變異相容,  但無法完全排除是這個人  獨有的遺傳變異。」 而且必須在報告裡明講這個限制 —— 此表述明確標示證據限制。
左:逐項檢查五類證據,標示其定性支持程度。右:改用僅有腫瘤樣本的情境時,第二類證據不可用;下方比較兩種情境的結論表述與確定程度。

任務一:是否為 somatic 變異?

請先列出支持與反對的理由,再展開解析。

展開答案

結論:目前證據與 somatic 變異相容,支持度較高。證據如下:

支持的證據:

  • VAF 與簡化模型相容。觀測 VAF = 11/50 = 0.22。 在 tumor DNA fraction = 0.6、diploid、無拷貝數變化、單拷貝且 clonal 的合成假設下, 理論預期為 0.6×1÷2=0.30。0.22 略低於此值,可能與 約 0.73 的次要 clone 或取樣波動相容;這不是對 CCF 的直接量測。
  • normal 樣本未觀測到 ALT。25× 深度、0 條 ALT。若此位點是典型 het germline, 在相同覆蓋與取樣假設下原本可預期約一半 read 支持 ALT;觀測到 0 條會降低此解釋的可能性, 但不能僅憑此結果完全排除 germline。
  • haplotype 來源偏向一致。11 條中有 10 條是 HP1。這支持 ALT read 集中於一個 haplotype, 但仍需結合 mapping/base quality、read 證據數量與 haplotagging 品質判讀,不能單獨視為證明。
  • 序列脈絡未見已知高風險特徵。此處不是 homopolymer 或重複區,因而降低部分 ONT 錯誤來源的疑慮; 這項觀察不足以排除所有 SNV 誤差。

需要保留的疑慮:

  • 那 1 條 HP2 read 可能反映定序、比對或 haplotagging 誤差,也可能是更複雜的局部訊號。 10:1 仍偏向單一來源;若比例更接近 1:1,單一 haplotype 的解釋就會減弱。
  • purity 0.6 是模型估計值而非直接量測值。如果估計偏差, 「VAF 與預期相容」這項證據也會隨之改變。
  • 11 條 read 的絕對數量不算多。統計波動的空間仍在。

任務二:如果沒有 normal 樣本呢?

同一個位點,但你只有 tumor BAM。判斷會怎麼改變?

展開答案

確定程度會下降,因為缺少配對 normal 的直接比較。

上面四條支持證據裡,第二條(normal 未觀測到 ALT)不可用, 因此排除 germline 的能力較弱。

剩下能用的:

  • 查詢 —— 不在這個族群資料庫裡,會降低常見 germline 的可能性, 但排除不了病人私有的 germline 變異(M7 的核心限制)。
  • VAF 0.22 —— 在沒有拷貝數、LOH 或 purity 偏差的簡化 diploid 假設下, 典型 het germline 的 VAF 通常接近 0.5;實際腫瘤樣本的 VAF 仍可能受這些因素影響, 因此 tumor-only 下不能以單一 VAF 值作出定論。
  • haplotype 結構 —— 這是 LongPhase-TO 主要利用的證據。 用左右兩個 germline SNP 建 ,看支持這個候選的 read 是不是都落在同一條 haplotype 上(M13 的第二件事)。本例 10:1 偏向 HP1,符合這個樣態。

因此結論可寫成:「目前證據與 somatic 變異相容,但無法完全排除私有 germline 變異」 —— 並在報告中明確標示這項限制。

這也是 tumor-only 研究需要特別報告 precision 的原因之一: 族群資料庫無法涵蓋所有個體特異的 germline 變異。

任務三:算一次效能

假設你在這個 chr9 評估資料集上跑完流程,並與所採用的 SEQC2 truth set 比對後得到:

用實際數字算一次 precision、recall 與 F1 把本例評估資料的結果分成 TP、FP、FN 三類。 precision 表示報出的候選中有多少為 TP; recall 表示 truth set 中有多少被找到;F1 是兩者的調和平均。 下半部在假設 FP 減半且未誤刪 TP 的理想化情境下,示範三個指標的變化, 說明 F1 的改善為何可能小於 precision 的改善。 先把評估結果分成 TP、FP、FN FN:漏掉的 FN = 335 TP:抓對的 TP = 412 FP:報錯的 FP = 88 報出的候選 = 500 個 truth set 中的事件 = 747 個 precision 報出候選中 TP 的比例 412 ÷ 500 = 0.824 recall truth set 找回的比例 412 ÷ 747 = 0.551 F1 兩者的調和平均 = 0.661 若 FP 減半且未誤刪 TP(理想化情境) precision 0.824 → 0.904 +0.080 F1 0.661 → 0.685 +0.024 原因:recall 不變 —— 未被 caller 產生的 FN,後處理無法補回。
先將結果分為 TP、FP、FN,再說明 precision、recall 與 F1 各自使用哪些計數。以下數值僅適用於本例的評估設定:若 FP 減半且未誤刪 TP,precision 增加 0.080,而 F1 增加 0.024;recall 不變。

算出 。然後回答: 如果你加一個後處理過濾器,把 FP 從 88 降到 44,F1 會變成多少?這個改善值得嗎?

展開答案

目前:

  • precision=412/(412+88)=0.824
  • recall=412/(412+335)=0.551
  • F1=2×0.824×0.551/(0.824+0.551)=0.661

把 FP 減半之後(假設未誤刪 TP,屬於理想化情境):

  • precision = 412/456 = 0.904(+0.080)
  • recall = 0.551(不變)
  • F1 = 0.685只有 +0.024

值得注意的是這兩個數字動的幅度差很多。precision 增加 8 個百分點, F1 只動了 2.4 個百分點 —— 因為 FN(335)遠多於 FP(88), F1 被 recall 那一側綁住了。只要 FN 一直是大宗,再怎麼壓 FP,F1 都不會有大改變。

而且這仍是理想化假設。實際過濾器可能誤刪部分 TP, 使 FN 增加並縮小改善幅度。

值得嗎?看你的用途:

  • 如果下游需要人工逐一檢視候選點,precision 提升可減少需檢視的 FP 數量;實際節省幅度仍取決於資料集與工作流程。
  • 如果你的目標是「盡量不要漏掉任何可能的 driver」,那 recall 才是關鍵,這個改善幫助有限。
  • 如果你要在論文裡宣稱「方法變好了」,只報 F1 會低估你的貢獻,只報 precision 則是選擇性呈現。 兩個都報,並解釋 FN 的組成。

最後應追查 335 個 FN 中有多少是 caller 一開始就未產生的候選。 若占大多數,後處理無法補回這些事件,應改從 caller、覆蓋度或候選產生階段處理(guardrail #10)。

真實證據

同一個位點,兩種流程各跑一次

任務二是用想的,這一節要你真的跑出來看。 同一份腫瘤資料跑兩次:一次帶配對正常樣本,一次假裝沒有。 兩種流程把答案寫在完全不同的地方,這是新手最常卡住的一點。

同一個位點跑兩種流程,答案會寫在不同的檔案、不同的欄位 左邊是有配對正常組織時跑的 longphase-s somatic_haplotag: 它的答案寫在輸出 BAM 每一條 read 的 HP 標籤上,例如 HP 冒號 Z 冒號 2-1, 意思是這條 read 屬於 HP2 的體細胞後代;估出來的腫瘤比例另外寫在 purity.out 檔案。 右邊是只有腫瘤樣本時跑的 longphase-to phase: 它的答案寫在輸出 VCF 的 FORMAT 欄位,GT 是 0 直槓 0、GT2 是點直槓 1, 同樣表示這個變異長在 HP2 上;腫瘤比例寫在 VCF 檔頭,並多輸出一份 LOH 區段的 BED。 下方是重點:兩邊對這個位點的判斷一致,都指向 HP2, 但右邊少了正常組織這個直接對照,所以無法排除這個病人私有的遺傳變異,把握較低。 要找答案時得先知道它被寫在哪裡,這是兩個工具最常被搞混的地方。 同一個位點,兩種流程把答案寫在不同地方 先知道答案寫在哪個檔案的哪個欄位,才找得到它。 有配對正常組織 longphase-s somatic_haplotag 答案寫在輸出 BAM 的 read 標籤上 read_0142 chr9 5073770 … HP:Z:2-1 ← 這條 read 屬於 HP2 的後代 腫瘤比例寫在另一個檔案 capstone_out_purity.out 沒有 LOH 輸出 只有腫瘤樣本 longphase-to phase 答案寫在輸出 VCF 的 FORMAT 欄位 chr9 5073770 … GT:GT2:GT3 0|0:.|1:./. ← 同樣是長在 HP2 上 腫瘤比例寫在 VCF 的檔頭裡 ##tumor_purity=0.61 另外多一份 <prefix>_LOH.bed 兩邊的判斷一致,但把握不一樣 右邊少了正常組織這個直接對照,所以排除不掉「這個病人私有的遺傳變異」—— 結論要照實寫出這一點。
配對版把每條 read 的歸屬寫成 BAM 的 HP:Z: 標籤,純度另外寫一個檔; 僅腫瘤版把每個位置的歸屬寫成 VCF 的 GT2,純度寫在 VCF 檔頭,並多輸出一份 LOH 區段。 兩邊對這個位點的判斷一致,但右邊少了正常組織這個直接對照。

兩個 repo 都沒有附範例資料,要自己準備一個小區段來跑。

① 有配對正常樣本

REGION="chr9:5000000-5200000"

longphase-s somatic_haplotag \
  -s phased_normal.vcf \
  -b normal.bam \
  --tumor-snv-file tumor.vcf \
  --tumor-bam-file tumor.bam \
  -r reference.fasta \
  --region "${REGION}" \
  -t 8 \
  -o capstone_sn \
  --output-somatic-vcf \
  --somatic-calling-log

# 純度寫在這個檔案裡,不會印到畫面上
grep -A2 'Estimation result' capstone_sn_purity.out

# 每條 read 被分到哪一類
samtools view capstone_sn.bam | grep -o 'HP:Z:[0-9-]*' | sort | uniq -c

② 假裝沒有正常樣本

longphase-to phase 沒有 --region 參數, 所以要先把 BAM 與 VCF 切出小區段再跑:

# 先切出區段(longphase-to 不吃 --region)
samtools view -b tumor.bam "${REGION}" > tumor_sub.bam && samtools index tumor_sub.bam
bcftools view -r "${REGION}" tumor.vcf -Ov -o tumor_sub.vcf

longphase-to phase \
  -s tumor_sub.vcf \
  -b tumor_sub.bam \
  -r reference.fasta \
  -t 8 \
  -o capstone_to \
  --caller clairs_to_ssrs \
  --pon-file PoN/gnomad.vcf.gz,PoN/dbsnp.vcf.gz \
  --strict-pon-file PoN/1000g-pon.vcf.gz \
  --loh

# 純度寫在 VCF 檔頭
grep '##tumor_purity' capstone_to.vcf

# 這個位點的三層答案
bcftools query -r chr9:5073770 -f '%POS\t[%GT\t%GT2\t%GT3]\n' capstone_to.vcf

③ 把兩邊兜起來

跑完之後回答三個問題,這才是這一節的重點:

  1. 兩邊對這個位點的歸屬(HP1 還是 HP2)一致嗎?不一致的話,哪一邊的證據比較薄?
  2. 兩邊估出來的純度差多少?差距落在什麼範圍還算合理?
  3. 僅腫瘤版多報了哪些位點?其中有多少是配對版判定為 germline 的? 這個差集就是失去正常樣本的代價,而且可以量出來。

用 IGV 看一眼

capstone_sn.bam 載入 IGV,依 HP tag 分組並跳到候選位點。 要看的是:帶 ALT 的 read 是不是集中在同一條 haplotype 上,以及兩側 germline allele 是否一致。 這些視覺訊號仍要跟 mapping/base quality、覆蓋度與過濾結果一起判讀, 單看一張截圖不足以下結論。

判讀練習

最後一題著重於區分觀測與推論。

你在同一個區域找到三個候選 somatic 變異,而且有一條 read 同時跨過全部三個, 顯示 ALT–ALT–REF。你想說「我發現了一個 subclone」。

你可以這樣寫嗎?

展開答案

不可以。這是整份教材最後要留給你的一課。

你直接觀測到的是:一個 DNA 分子片段的序列上,第一與第二個變異同時存在,第三個不存在。 這不是對細胞數量或獨立分子數量的直接計數。從這裡到「存在一個 subclone」,中間隔著三道檢查:

從「你看到什麼」到「你可以寫什麼」中間隔著三道檢查 左上是你真正觀測到的東西:一條 read 跨過三個位置,前兩個帶 ALT、第三個是 REF。 右上是不能直接寫出來的結論「我發現了一個 subclone」,中間用打叉的虛線箭頭表示這一跳被禁止。 左側由上而下是三道必須先做的檢查: 第一,這個組合是不是定序或比對錯誤造成的,需要多條彼此獨立的 read 才能確認; 第二,一條 read 是一個 DNA 分子,不是一個細胞,所以分子數不等於細胞數; 第三,要把 VAF 換算成細胞比例,必須先知道該處的拷貝數與突變拷貝數。 底部是三道檢查都做完之後,實際可以寫進報告的句子: read 證據支持一個區域層級的候選拓撲,其結構與 clone 或 subclone 的分化相容, 仍需單細胞或多區域資料驗證。 右側說明這條界線為什麼重要:觀測講的是分子的狀態,結論講的是細胞族群的存在, 兩者之間隔著取樣波動、錯誤率與拷貝數三個未知。 從「你看到什麼」到「你可以寫什麼」 中間隔著三道檢查。跳過它們,結論就超出資料撐得住的範圍。 你真正看到的 T A G 位置 ① 位置 ② 位置 ③ 一條 read 上:①② 帶 ALT,③ 是 REF。這就是全部的觀測。 不能直接跳到這裡 「我發現了一個 subclone」 這句話講的是一群細胞存在 而你手上只有一條分子的序列。 檢查一 這是真的,還是錯誤? 需要多條彼此獨立的 read 都看到同樣組合,才排除得了定序與比對錯誤。 檢查二 幾條分子,不等於幾個細胞 一條 read 是一個 DNA 分子片段,不是一個細胞(guardrail #7)。 檢查三 VAF 要換算才變成細胞比例 換算需要先知道該處的拷貝數突變拷貝數,兩者都要另外估。 這條界線為什麼重要 觀測講的是分子的狀態 結論講的是細胞族群的存在 兩者之間隔著三個未知: · 取樣到的分子夠不夠多 · 錯誤率有多高 · 那一段有幾份拷貝 寫得太滿,讀的人就無法 判斷你到底有幾分把握。 三道檢查都做完之後,可以寫的是這樣一句話 「read 證據支持一個區域層級的候選拓撲,其結構與 clone/subclone 的分化相容。」 並補上一句:這是候選解釋,尚需單細胞或多區域資料驗證。
左上是你真正看到的,右上是不能直接跳過去的結論。 中間三道檢查每一道都需要額外的證據:多條獨立 read 排除錯誤、分子數不等於細胞數(guardrail #7)、 VAF 要靠拷貝數與突變拷貝數才換算得成細胞比例。底部是三道都做完之後真正可以寫的那句話。

即使三道都做完,得到的仍是與 clone/subclone 差異相容的候選解釋, 而不是已確認的細胞族群;要確認還需要拷貝數、細胞比例或單細胞/多區域資料。

(承上)那麼,如何在報告中適當表述?

展開答案

建議表述:「在 chr9:5.03–5.11 Mb 區域的 HP1 family 中, read 證據支持一個分支式、多步驟的候選拓撲,其結構與 clone/subclone 的分化相容。 此結果是區域層級的候選解釋,尚需單細胞或多區域資料驗證。」

這樣可明確區分觀測證據、模型推論與尚待驗證的部分。

實作練習

換一個自己的位點,從頭做一次

上一節用的是指定好的 chr9 位點。這一次自己挑一個, 把整套判讀重做一遍 —— 這才是驗收。

  1. capstone_to.vcf 裡挑一個 GT2 不是 ./. 的位點。 刻意挑一個證據沒那麼漂亮的(例如支持的 read 只有 5、6 條,或 GT21|1)。
  2. 把該位點的觀測值全部列出來:coverage、支持 ALT 的條數、HP 分布、序列脈絡、PON 命中與否。
  3. 用任務一的五類證據逐條檢查一次。
  4. 再用任務二的方式問一次:如果沒有正常樣本,你會少掉哪一條?
  5. 用 IGV 看一眼,確認你的判讀跟畫面對得起來。

通過標準

寫一頁報告,內容包含:

  1. 你選的位點與所有觀測值
  2. 你的判斷(somatic/germline/定序錯誤)與逐條理由
  3. 如果改成只有腫瘤樣本,判斷會怎麼變、為什麼
  4. precision 與 recall 的計算,以及它們在這個案例裡的限制
  5. 一段明確的不確定性陳述 —— 哪些結論你有信心、哪些只是「與資料相容」

第 5 點是這份教材真正要教會的事:把證據的邊界寫出來,而不是把話講滿。

延伸學習:完成 capstone 後可補哪些背景

可依研究題目選擇補充方向:

如果你的題目是需要補的背景
配對樣本的 indel卷積神經網路(CNN)基礎、把 pileup 編碼成影像、類別不平衡的處理
僅腫瘤樣本的 indel 或甲基化梯度提升樹(XGBoost)、特徵工程、PCA
subclone 重建布林超立方體、簡約演化樹、Group Steiner tree

這三列的演算法背景都是本教材尚未涵蓋的部分 —— 教材教的是怎麼判讀證據,不是怎麼訓練模型。若研究涉及這些方向,需要另外補足。

學習檢核

本模組術語

F1
precision 與 recall 的調和平均。當資料裡 FN 遠多於 FP 時,precision 的改善對 F1 的影響有限 —— 見 M10。
HP tag
BAM 裡標示某條 read 屬於哪一條 haplotype 的 tag。LongPhase-S 的 germline haplotag 寫成整數 HP:i:1;somatic haplotag 與 LongPhase-TO 則寫成字串 HP:Z:1-1
LOH(異型合子性喪失)
原本 heterozygous 的區域變成只剩一種 allele。LOH 不等於缺失 —— 也可能是一條 haplotype 遺失後另一條被複製(copy-neutral LOH)。
PON(正常樣本面板/族群資料庫(依流程而異))
PON 依分析流程有兩種用法,兩者不可互換:本教材的 tumor-only 流程以它指稱 population germline database set(如 1000G、CoLoRSdb、dbSNP、gnomAD 的聯集);GATK Mutect2 的 Panel of Normals(PoN)則由多個正常樣本建立,用來標記反覆出現的技術性 artifact。兩者都不能完全取代同一病人的 matched normal。
cancer cell fraction(癌細胞比例)
帶有某個特定突變的腫瘤細胞佔全部腫瘤細胞的比例。用來區分 clonal(1)與 subclonal(<1)突變。不等於 VAF。
copy number(拷貝數)
某段基因體在細胞內的拷貝數。多數正常常染色體區段為 2,可再分為 major 與 minor allele copy number。
precision(精確率)
所有 calls 中實際為真陽性的比例:TP / (TP + FP)。後處理常以提升此指標為目標。
recall(召回率)
在指定評估範圍內,所有真陽性中被找出的比例:TP / (TP + FN)。若只對固定的 caller 候選集做後處理,recall 只能維持或下降,不能恢復 caller 從未輸出的真陽性;報告時應說清楚這個候選集範圍。
triplet graph
LongPhase-TO 判斷候選變異真假時用的最小結構:候選位置加上左右各一個變異,共三個位置。把 read 上看到的 allele 組合畫成路徑後,真的 somatic 變異會形成一條「跟某一條 germline haplotype 只差候選這一格」的新路徑;定序錯誤則湊不出一致的路徑。因為左右兩側都要對得上,所以三個位置是最小單位。
tumour purity(腫瘤純度)
樣本中腫瘤細胞所佔的比例。purity 越低,somatic 訊號被正常細胞稀釋得越嚴重,偵測越困難。