模組 ★ · Capstone
Capstone:整合式位點判讀
整合單一位點的多項證據,完成可重現的推論流程,並撰寫明確標示不確定性的結論。
本模組學習目標
- 獨立判讀一個位點的所有證據,並得出有根據的結論
- 在有配對正常樣本與只有腫瘤樣本兩種情境下做出不同的判斷,並說明理由
- 在同一個位點上跑完兩種流程,並在各自的輸出檔案裡找到答案
- 計算 precision 與 recall,並指出它們在這個案例裡的限制
- 寫出一段明確區分「觀測到的」與「推論出來的」結論
為什麼重要
前面十四個模組各自處理一件事。這一節把它們放回同一個位點上, 要求你自己判讀,而不是照著步驟做。
評量的重點不是指令跑不跑得動,是你的解讀有沒有證據撐住。 實務上要說清楚三件事:你觀測到什麼、你從觀測推論出什麼、以及哪些結論還受資料或模型限制。 這三件事混在一起寫,別人就無法判斷你有幾分把握。
概念與互動
案例:chr9 上的一個候選點
給定條件:
| 項目 | 值 |
|---|---|
| 樣本 | HCC1395(乳癌細胞株),ONT R10 |
| 位置 | chr9:5,073,770,落在 JAK2 基因範圍內 |
| 候選變異 | SNV,G → T |
| Tumor coverage | 50×,其中 11 條支持 ALT |
| Normal coverage | 25×,其中 0 條支持 ALT |
| 估計 puritytumour purity 腫瘤純度樣本中腫瘤細胞所佔的比例。purity 越低,somatic 訊號被正常細胞稀釋得越嚴重,偵測越困難。The fraction of cells in a sample that are tumour cells. Low purity dilutes somatic signal.完整條目 → | 0.6(本題簡化模型中視為 tumor DNA fraction) |
| 該區段 copy numbercopy number 拷貝數某段基因體在細胞內的拷貝數。多數正常常染色體區段為 2,可再分為 major 與 minor allele copy number。How many copies of a genomic segment a cell carries; a typical diploid autosomal segment has two. It can be split into major- and minor-allele copy numbers.完整條目 → | 2(無 CNV,無 LOHLOH 異型合子性喪失原本 heterozygous 的區域變成只剩一種 allele。LOH 不等於缺失 —— 也可能是一條 haplotype 遺失後另一條被複製(copy-neutral LOH)。Loss of heterozygosity: a formerly het region retains only one allele. Not necessarily a deletion.完整條目 →) |
| 周圍 200 bp 內的 het germline SNP | 2 個,皆已 phase |
支持 ALT 的 11 條 read 的 HP tagHP tagBAM 裡標示某條 read 屬於哪一條 haplotype 的 tag。LongPhase-S 的 germline haplotag 寫成整數 HP:i:1;somatic haplotag 與 LongPhase-TO 則寫成字串 HP:Z:1-1。BAM tag assigning a read to a haplotype. Integer HP:i:1 for germline haplotag; string HP:Z:1-1 for somatic.完整條目 → | 10 條 HP1、1 條 HP2 |
| 序列脈絡 | 非 homopolymer、非重複區 |
| PON | 不在任何族群資料庫中 |
完整推理鏈示例
任務一:是否為 somatic 變異?
請先列出支持與反對的理由,再展開解析。
展開答案
結論:目前證據與 somatic 變異相容,支持度較高。證據如下:
支持的證據:
- VAF 與簡化模型相容。觀測 VAF = 11/50 = 0.22。 在 tumor DNA fraction = 0.6、diploid、無拷貝數變化、單拷貝且 clonal 的合成假設下, 理論預期為 。0.22 略低於此值,可能與 CCFcancer cell fraction 癌細胞比例帶有某個特定突變的腫瘤細胞佔全部腫瘤細胞的比例。用來區分 clonal()與 subclonal()突變。不等於 VAF。The fraction of tumour cells carrying a given mutation; distinguishes clonal from subclonal. Not the same as VAF.完整條目 → 約 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 的能力較弱。
剩下能用的:
- PONPON 正常樣本面板/族群資料庫(依流程而異)PON 依分析流程有兩種用法,兩者不可互換:本教材的 tumor-only 流程以它指稱 population germline database set(如 1000G、CoLoRSdb、dbSNP、gnomAD 的聯集);GATK Mutect2 的 Panel of Normals(PoN)則由多個正常樣本建立,用來標記反覆出現的技術性 artifact。兩者都不能完全取代同一病人的 matched normal。The abbreviation is workflow-dependent and the two uses are not interchangeable. In this tutorial's tumour-only workflows, PON denotes a population germline database set; in GATK Mutect2, a Panel of Normals (PoN) is built from multiple normal samples to flag recurrent technical artifacts. Either can miss a private germline variant or an unseen artifact, so neither replaces a patient's matched normal.完整條目 → 查詢 —— 不在這個族群資料庫裡,會降低常見 germline 的可能性, 但排除不了病人私有的 germline 變異(M7 的核心限制)。
- VAF 0.22 —— 在沒有拷貝數、LOH 或 purity 偏差的簡化 diploid 假設下, 典型 het germline 的 VAF 通常接近 0.5;實際腫瘤樣本的 VAF 仍可能受這些因素影響, 因此 tumor-only 下不能以單一 VAF 值作出定論。
- haplotype 結構 —— 這是 LongPhase-TO 主要利用的證據。 用左右兩個 germline SNP 建 triplet graphtriplet graphLongPhase-TO 判斷候選變異真假時用的最小結構:候選位置加上左右各一個變異,共三個位置。把 read 上看到的 allele 組合畫成路徑後,真的 somatic 變異會形成一條「跟某一條 germline haplotype 只差候選這一格」的新路徑;定序錯誤則湊不出一致的路徑。因為左右兩側都要對得上,所以三個位置是最小單位。LongPhase-TO's minimal unit for judging a candidate: the candidate plus one flanking variant on each side. A true somatic allele forms a third path differing from one parental haplotype at the candidate alone; artifacts show no consistent path.完整條目 →,看支持這個候選的 read 是不是都落在同一條 haplotype 上(M13 的第二件事)。本例 10:1 偏向 HP1,符合這個樣態。
因此結論可寫成:「目前證據與 somatic 變異相容,但無法完全排除私有 germline 變異」 —— 並在報告中明確標示這項限制。
這也是 tumor-only 研究需要特別報告 precision 的原因之一: 族群資料庫無法涵蓋所有個體特異的 germline 變異。
任務三:算一次效能
假設你在這個 chr9 評估資料集上跑完流程,並與所採用的 SEQC2 truth set 比對後得到:
算出 precisionprecision 精確率所有 calls 中實際為真陽性的比例:TP / (TP + FP)。後處理常以提升此指標為目標。Of the calls you made, the fraction that are correct: TP / (TP + FP).完整條目 →、recallrecall 召回率在指定評估範圍內,所有真陽性中被找出的比例:TP / (TP + FN)。若只對固定的 caller 候選集做後處理,recall 只能維持或下降,不能恢復 caller 從未輸出的真陽性;報告時應說清楚這個候選集範圍。Within a stated evaluation scope, the fraction of true positives that were found: TP / (TP + FN). With a fixed caller candidate set, post-filtering can preserve or lower recall but cannot recover variants the caller never emitted; report the candidate-set scope explicitly.完整條目 →、F1F1precision 與 recall 的調和平均。當資料裡 FN 遠多於 FP 時,precision 的改善對 F1 的影響有限 —— 見 M10。The harmonic mean of precision and recall. A precision gain has little effect when false negatives dominate the evaluation.完整條目 →。然後回答:
如果你加一個後處理過濾器,把 FP 從 88 降到 44,F1 會變成多少?這個改善值得嗎?
展開答案
目前:
把 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)。
真實證據
同一個位點,兩種流程各跑一次
任務二是用想的,這一節要你真的跑出來看。 同一份腫瘤資料跑兩次:一次帶配對正常樣本,一次假裝沒有。 兩種流程把答案寫在完全不同的地方,這是新手最常卡住的一點。
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
③ 把兩邊兜起來
跑完之後回答三個問題,這才是這一節的重點:
- 兩邊對這個位點的歸屬(HP1 還是 HP2)一致嗎?不一致的話,哪一邊的證據比較薄?
- 兩邊估出來的純度差多少?差距落在什麼範圍還算合理?
- 僅腫瘤版多報了哪些位點?其中有多少是配對版判定為 germline 的? 這個差集就是失去正常樣本的代價,而且可以量出來。
用 IGV 看一眼
把 capstone_sn.bam 載入 IGV,依 HP tag 分組並跳到候選位點。
要看的是:帶 ALT 的 read 是不是集中在同一條 haplotype 上,以及兩側 germline allele 是否一致。
這些視覺訊號仍要跟 mapping/base quality、覆蓋度與過濾結果一起判讀,
單看一張截圖不足以下結論。
判讀練習
最後一題著重於區分觀測與推論。
你在同一個區域找到三個候選 somatic 變異,而且有一條 read 同時跨過全部三個,
顯示 ALT–ALT–REF。你想說「我發現了一個 subclone」。
你可以這樣寫嗎?
展開答案
不可以。這是整份教材最後要留給你的一課。
你直接觀測到的是:一個 DNA 分子片段的序列上,第一與第二個變異同時存在,第三個不存在。 這不是對細胞數量或獨立分子數量的直接計數。從這裡到「存在一個 subclone」,中間隔著三道檢查:
即使三道都做完,得到的仍是與 clone/subclone 差異相容的候選解釋, 而不是已確認的細胞族群;要確認還需要拷貝數、細胞比例或單細胞/多區域資料。
(承上)那麼,如何在報告中適當表述?
展開答案
建議表述:「在 chr9:5.03–5.11 Mb 區域的 HP1 family 中, read 證據支持一個分支式、多步驟的候選拓撲,其結構與 clone/subclone 的分化相容。 此結果是區域層級的候選解釋,尚需單細胞或多區域資料驗證。」
這樣可明確區分觀測證據、模型推論與尚待驗證的部分。
實作練習
換一個自己的位點,從頭做一次
上一節用的是指定好的 chr9 位點。這一次自己挑一個, 把整套判讀重做一遍 —— 這才是驗收。
- 從
capstone_to.vcf裡挑一個GT2不是./.的位點。 刻意挑一個證據沒那麼漂亮的(例如支持的 read 只有 5、6 條,或GT2是1|1)。 - 把該位點的觀測值全部列出來:coverage、支持 ALT 的條數、HP 分布、序列脈絡、PON 命中與否。
- 用任務一的五類證據逐條檢查一次。
- 再用任務二的方式問一次:如果沒有正常樣本,你會少掉哪一條?
- 用 IGV 看一眼,確認你的判讀跟畫面對得起來。
通過標準
寫一頁報告,內容包含:
- 你選的位點與所有觀測值
- 你的判斷(somatic/germline/定序錯誤)與逐條理由
- 如果改成只有腫瘤樣本,判斷會怎麼變、為什麼
- precision 與 recall 的計算,以及它們在這個案例裡的限制
- 一段明確的不確定性陳述 —— 哪些結論你有信心、哪些只是「與資料相容」
第 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()與 subclonal()突變。不等於 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 訊號被正常細胞稀釋得越嚴重,偵測越困難。