模組 7 · Somatic variant calling: tumour–normal and tumour-only

Somatic variant calling:tumor–normal 與 tumor-only

說明配對正常樣本提供的個體基線,以及 tumor-only 分析在 germline 與技術性 artifact 判斷上的限制。

約 55 分鐘建議先修:Phasing

本模組學習目標

  • 說明配對正常樣本提供了什麼,以及沒有它時失去什麼
  • 區分本教材使用的 PON 與 GATK 語境中的 PoN,並說明兩者共同的涵蓋缺口
  • 說明為什麼 somatic 不等於「腫瘤 VCF 減掉正常 VCF」,並列出四個失準來源
  • 解釋 TINC 為什麼讓「normal 有訊號就排除」的規則失效
  • 說明 read-level 的 haplotype 分布為什麼可以在沒有正常樣本時提供替代證據

為什麼重要

本模組比較兩種分析設計:有配對正常樣本的 tumor–normal(TN)模式, 以及只有腫瘤樣本的 tumor-only(TO)模式。是否有 matched normal 會改變可用的對照證據與不確定性。

差異不只是少一個輸入檔案;它會改變可辨識的變異類型與後續判讀方式。

概念與互動

同一批 read,兩種對照,兩種輸出

先把整件事放在一張圖裡。下圖的上下兩排腫瘤 read 完全相同—— 同樣六條 read、同樣四個候選位置。唯一改變的是右邊拿什麼當對照:

同一批腫瘤 read,有配對正常組織與只有腫瘤時的判定差別 上下兩排的腫瘤 read 完全相同:六條 read、四個候選位置。位置 ① 與 ③ 是這個人天生就有的 germline 變異,② 是定序 artifact,④ 是真的 somatic 變異。 上排有配對的正常組織:① 與 ③ 在正常組織裡都看得到,所以都排除,輸出只剩 ④。 下排沒有正常組織,改查族群資料庫:① 的族群等位基因頻率 0.31,高於資料庫收錄門檻 0.001, 查得到所以排除;③ 的頻率只有 0.0002,低於門檻,資料庫裡沒有這一筆,因此被留下來成為假陽性。 兩排的差別只有一個位置,而那個位置的成因是「族群裡常見」與「這個人有」不是同一件事。 位置 ② 兩排都靠 read 的分布排除,與有沒有正常組織無關: 支持 ① 與 ③ 的是同三條 read,支持 ④ 的兩條也在這三條裡面, 但支持 ② 的兩條分屬兩群不同的 read,與同一次突變的來源應該一致不符。 ① ③ germline 變異(天生就有) ② 定序 artifact ④ 真 somatic 變異 顏色是給讀者看的答案,程式看不到 有配對的正常組織 —— tumour–normal(TN) ① 腫瘤樣本的 read ref T A G G G C T G G A T A G A T A T A G G T C G G T A G G 四個位置都跟參考不一樣,全部列為候選。 ①③ 各 3 條支持;② 的 2 條散在兩群。 ② 對照:這個人自己的正常組織 T A G G G A T G G A T G T A G G T A G G ① ③ 在這裡也看得到 → 兩個都排除 ④ 都沒有 → 保留;② 靠 read 分布排除 ③ 輸出 留下來的候選 ④ 真 somatic 已排除 ① ② ③ 輸出裡沒有假陽性 沒有配對正常組織 —— tumour-only(TO) ① 完全相同的腫瘤 read ref T A G G G C T G G A T A G A T A T A G G T C G G T A G G 同一批 read、同一批候選。 唯一改變的是右邊拿什麼當對照。 ② 對照:公開族群資料庫 每個候選在族群中的等位基因頻率 ✓ 排除 不在資料庫裡 → 由 read 分布排除 ✗ 未收錄,留下來 不在資料庫裡 → 但 read 分布支持它 0.0001 0.001 0.01 0.1 1 虛線=資料庫的收錄門檻(af-ge-0.001) ③ 輸出 留下來的候選 ④ 真 somatic ③ 私有 germline 已排除 ① ② 多了一個假陽性 兩排的差別只有位置 ③ —— 它是這個人自己的 germline 變異,族群裡幾乎沒人有,所以查不到; 配對的正常組織查得到,因為那份對照就來自同一個人。位置 ② 兩排都靠 read 的分布排除,跟有沒有 normal 無關。
上排用這個病人自己的正常組織,下排改查公開族群資料庫。輸出的差別只有位置 ③ —— 那是這個人自己的 germline 變異,族群裡幾乎沒人有,所以資料庫查不到,於是被留下來變成假陽性。位置 ② 兩排都靠 read 的分布排除,跟有沒有正常樣本無關。圖上的顏色是給讀者看的答案,程式看不到。

請注意這張圖真正的重點:位置 ① 與 ③ 都是這個人天生就有的 , 在腫瘤樣本裡長得一模一樣(各三條支持、VAF 都是 0.5)。它們的命運不同, 不是因為變異本身有什麼差別,而是因為資料庫知不知道它

位置 ④ 兩種模式都留得住,那是我們要的 。 caller 產生的是 ,還不是最終答案;本教材以 作為 (TN)calling 的範例,(TO)則以 ClairS-TO 為例, 實際輸入與過濾流程請依版本文件確認。

沒有正常組織時,改用什麼當對照

在部分臨床或研究情境,matched normal 可能因成本、檢體量或取得條件而缺失。 替代方案是公開的族群資料庫:利用 allele frequency 與已知變異紀錄提供 germline 線索。 本教材在 LongPhase-TO/ClairS-TO 情境中將這組集合稱為 (population database set), 它包含 1000 Genomes、gnomAD、dbSNP、CoLoRSdb 等來源。

上圖下排的橫軸就是這件事的關鍵。資料庫有一個收錄門檻—— 實際下載的檔名裡寫著 af-ge-0.001,意思是只收頻率 0.001 以上的位點。 位置 ① 的族群頻率 0.31,遠高於門檻,查得到;位置 ③ 只有 0.0002,落在門檻左邊, 資料庫裡根本沒有這一筆。「族群常見」與「這個人有」不是同一件事,缺口就從這裡來。

在 GATK Mutect2 語境,PoN 通常指由多個正常樣本建立的 recurrent-artifact panel。 名稱相同、內容不同 —— 而且更重要的是,這兩種資料各守住一個方向,中間會留下一格:

兩種叫做 PON 的資料各守一個方向,中間留下一格涵蓋不到 把候選變異放在兩個軸上:橫軸是這個變異在族群中的等位基因頻率,縱軸是它在多份正常樣本中 反覆出現的程度。族群資料庫(1000G、gnomAD、dbSNP、CoLoRSdb)能排除的是右半邊:族群中常見的 germline 變異。GATK Mutect2 的 recurrent-artifact PoN 能排除的是上半邊:在很多正常樣本裡 反覆出現的技術性 artifact。左下角那一格兩者都涵蓋不到,而那一格裡同時住著三種東西 —— 這個人私有的 germline 變異、沒見過的 artifact,以及我們真正想找的 somatic 變異。 因為它們在這兩個軸上的座標一樣,任何靠查表的方法都分不出來。 兩種叫做「PON」的資料,各守住一個方向 罕見 常見 橫軸:這個變異在族群中的等位基因頻率 縱軸:在多份正常樣本中反覆出現的程度 GATK PoN 涵蓋 (反覆出現的技術性 artifact) 族群資料庫涵蓋 (常見 germline) 兩種資料都涵蓋不到 反覆出現的 artifact 族群常見 germline 這個人私有的 germline 沒見過的 artifact 真的 somatic 變異 左下角那一格裡有三種東西 這個人私有的 germline 族群裡幾乎沒人有,所以資料庫沒收錄 沒見過的 artifact 沒有人統計過它,所以 PoN 裡也沒有 真的 somatic 變異 它是新長出來的,本來就不會在任何資料庫裡 三者在這兩個軸上的座標一樣。 所以「再多加幾個資料庫」不會把它們分開。 要把這一格拆開,必須換一個軸 —— 不再問「這個位置別人有沒有」, 而是問「支持它的那些 read,彼此的結構是否像一次真的突變」。這就是 read-level 證據要做的事。
橫軸是族群頻率,縱軸是在多份正常樣本中反覆出現的程度。族群資料庫排除右半邊,GATK 的 recurrent-artifact PoN 排除上半邊,左下角那一格兩者都涵蓋不到 —— 而那一格裡同時住著這個人私有的 germline、沒見過的 artifact,以及我們真正要找的 somatic 變異。因為三者在這兩個軸上座標一樣,再多加幾個資料庫也不會把它們分開。

下方元件用同一組候選點數一次數量,看 precision 怎麼掉下來:

互動練習
注意不是所有候選都受到同樣影響。符合資料庫條件的常見 germline 變異通常仍可被標記;private germline 與未被收錄的 artifact 可能保留為額外候選,需以其他證據判讀。

TN calling 也不是把兩個 VCF 相減

前面那張圖為了講清楚缺口,把 TN 流程畫得很乾淨:normal 有訊號就排除。 實務上不能這樣做,而且失準的地方在配對正常樣本時就已經發生:

為什麼 somatic 不等於「腫瘤 VCF 減掉正常 VCF」 四種機制會讓「兩個 VCF 相減」的直覺失準。 一、正常樣本裡混進了腫瘤 DNA,真的 somatic 變異在正常樣本中也會出現低頻支持, 照「有訊號就刪」的規則會刪掉真答案。 二、正常樣本的深度通常比腫瘤低;就算真有低頻訊號,25× 下期望只有 0.5 條 read, 看到 0 條的機率約六成,所以「沒看到」多半只是深度不夠。 三、germline 變異的 VAF 不是固定 0.5:少一份拷貝會往上偏,多一份會往下偏, 所以不能用固定門檻判斷是不是 germline。 四、兩邊的 caller 各自都會漏報;正常樣本漏掉一個 heterozygous 位點,差集就會多留一個 germline。 常見但不成立的直覺 腫瘤 VCF 正常 VCF = somatic 這個等式不成立 下面四件事都會讓它失準 —— 而且前兩件在配對正常樣本時就已經發生: ① normal 有訊號 ≠ 不是 somatic 少數 read 也帶了這個變異 因為正常組織裡本來就混了 一點腫瘤細胞(TINC) 照「有訊號就刪」 會刪掉真的 somatic ② normal 沒訊號 ≠ 真的沒有 兩邊的深度本來就不一樣 腫瘤 正常 50× 25× 若正常樣本混入 4% 腫瘤 DNA: somatic 的 normal VAF ≈ 0.02 25× × 0.02 ≈ 0.5 條 read 看到 0 條的機率約 60% 「沒看到」多半只是 深度不夠,不是證據 ③ VAF 不是 0.5 ≠ 不是 germline 同一個 germline 變異: 兩份都在 少一份 多一份 0 0.5 1 VAF 少一份=LOH;多一份=擴增 固定門檻會把偏掉的 germline 誤判成 somatic ④ 兩邊的 caller 都可能漏報 腫瘤 VCF 正常 VCF 虛線那一行是漏掉的 heterozygous 位點 差集就會多留一個 germline 當成 somatic 四件事的共同點:「有沒有訊號」是二元的,但底下的證據是連續的。 所以配對模式仍然需要一整套機率與品質過濾,而不是一個減法。
四個失準來源。① 正常組織裡本來就混了一點腫瘤細胞,真 somatic 在 normal 也會有低頻支持。② 正常樣本的深度通常只有腫瘤的一半;就算真有低頻訊號,25× 下期望只有 0.5 條 read,看到 0 條的機率約六成。③ germline 的 VAF 不是固定 0.5,copy number 會把它推上去或拉下來。④ 兩邊的 caller 各自都會漏報。共同點是:「有沒有訊號」是二元的,底下的證據卻是連續的。

TINC:normal 裡的訊號強度說明三種不同的事

第一項值得單獨看一次,因為它最容易被寫成錯的規則。下圖三欄的腫瘤樣本完全相同 (24 條 read、6 條帶變異、VAF 都是 0.25),差別只在配對正常樣本裡有幾條:

同一個位置,在配對正常樣本裡看到訊號,有三種完全不同的意思 三欄的腫瘤樣本完全相同:24 條 read 裡有 6 條帶變異,VAF 都是 0.25。 差別只在配對正常樣本。左欄正常樣本一條都沒有,這是最單純的 somatic。 中欄正常樣本有 1 條,VAF 0.04 —— 這是正常組織裡混進了腫瘤細胞(tumour-in-normal contamination),變異仍然是 somatic,但「normal 有訊號就排除」的規則會把它刪掉。 右欄正常樣本有 12 條,VAF 0.50,那是 heterozygous germline 該有的樣子,應該排除。 所以判斷依據不是「normal 有沒有訊號」,而是「訊號有多強」,需要一個門檻; 門檻放得太低會刪掉被污染樣本裡的真 somatic,放得太高會留下 germline。 同一個位置,normal 裡的訊號強度說明三種不同的事 ① 乾淨的正常樣本 normal 完全沒有訊號 腫瘤樣本 24 條 read tumour VAF = 6/24 = 0.25 配對正常樣本 24 條 read normal VAF = 0/24 = 0.00 保留為 somatic 候選 腫瘤有、正常沒有 —— 這是最單純的情況 ② 正常樣本被腫瘤污染 normal 有一點訊號 腫瘤樣本 24 條 read tumour VAF = 6/24 = 0.25 配對正常樣本 24 條 read normal VAF = 1/24 = 0.04 仍然是 somatic 0.04 遠低於 germline 的 0.5 這是污染,不是遺傳 ③ 這其實是 germline normal 有一半訊號 腫瘤樣本 24 條 read tumour VAF = 6/24 = 0.25 配對正常樣本 24 條 read normal VAF = 12/24 = 0.50 判為 germline,排除 0.50 就是 heterozygous germline 該有的樣子 判斷依據不是「有沒有」,是「有多強」 0 0.25 0.5 0.75 1 normal 樣本在這個位置的 VAF 門檻 T 保留 排除 門檻放在哪裡是取捨:放太低會刪掉被污染樣本裡的真 somatic,放太高會留下 germline。
normal VAF 0.00 是最單純的 somatic;0.04 是正常組織裡混進了腫瘤細胞,變異仍然是 somatic;0.50 才是 heterozygous germline 該有的樣子。所以判斷依據不是「normal 有沒有訊號」,而是「訊號有多強」—— 需要一個門檻,而門檻放太低會刪掉被污染樣本裡的真 somatic,放太高會留下 germline。

VAF 可作為輔助訊息,但實際值取決於 purity、copy number、zygosity、multiplicity、 clonality 與 depth(完整關係式見 M8)。因此不能只用「有沒有訊號」或單一固定門檻判定。

沒有正常組織時,還剩下什麼證據

回到那張 涵蓋不到的左下角。要把住在同一格裡的三種東西分開, 必須換一個問法:不再問「這個位置別人有沒有」,而是問「支持它的那些 read,彼此的結構像不像一次真的突變」

真的變異一定是從某一條既有的 上長出來的,所以支持它的 read 應該集中在一條 haplotype 上。如果同一個「變異」的支持 read 分散在兩條染色體上, 那等於同一個位置各獨立突變了一次 —— 機率極低,更像比對或定序造成的問題:

沒有正常組織時,改看支持 read 落在哪一條 haplotype 上 兩欄的支持 read 總數刻意設成完全一樣:12 條 read 裡有 4 條帶著這個候選變異, VAF 都是 0.33。光看數量分不出來,要看這 4 條落在哪裡。 左欄的 4 條全部同時帶著 HP1 的 germline allele,也就是這個變異只出現在一條染色體上 —— 跟「一次體細胞突變從一條既有 haplotype 長出來」相容。 右欄的 4 條有 2 條帶 HP1 的 allele、2 條帶 HP2 的 allele,等於同一個位置在兩條染色體上 各獨立發生了一次一樣的突變,機率極低,更像比對或定序造成的問題。 這個判準不需要配對正常樣本,只需要同一條 read 上同時看得到 germline 錨點與候選位置, 所以它是 long read 才拿得到的證據。但它有例外:真的發生兩次獨立突變,或 phasing 本身出錯時, 判斷都會失效,因此只能作為補充證據。 兩邊的支持 read 一樣多 —— 分得出來的是它們的分布 同一條 long read 上同時看得到 germline 錨點與候選位置,才問得出「這個變異在哪一條上」。 真的 somatic 變異 4 條支持 read 全在 HP1 germline 錨點 候選位置 germline 錨點 T A C T A C T A C T A C T G C T G C G G A G G A G G A G G A G G A G G A HP1 HP2 6 條 6 條 支持這個候選的 read:4 條,VAF = 4/12 = 0.33 其中 HP1:4 條  HP2:0 條 所有支持 read 都在同一條 haplotype 上 一次體細胞突變只會發生在一條染色體上, 所以這個分布跟真的 somatic 相容。 定序或比對造成的 artifact 4 條支持 read 分散在兩條上 germline 錨點 候選位置 germline 錨點 T A C T G C T G C T A C T G C T G C G G A G A A G G A G G A G A A G G A HP1 HP2 6 條 6 條 支持這個候選的 read:4 條,VAF = 4/12 = 0.33 其中 HP1:2 條  HP2:2 條 同一個變異同時出現在兩條 haplotype 上 同一個位置在兩條染色體上各突變一次的機率極低, 更像是比對或定序造成的問題。 這個判準不需要配對正常樣本,只需要 read 夠長 —— 所以它是 tumour-only 拿得到的替代證據。 但它有例外:真的發生兩次獨立突變,或 phasing 本身出錯時都會失效,所以只能當補充證據。 LongPhase-S 把它實作成 read-level 與 haplotype origin 兩個過濾器,門檻與細節見 M12。
兩欄的支持 read 總數刻意設成一樣(12 條裡 4 條,VAF 都是 0.33),因為重點正是「光看數量分不出來」。左欄 4 條全在 HP1;右欄 2 條在 HP1、2 條在 HP2。這個判準不需要配對正常樣本,只需要 read 夠長到同時蓋住 germline 錨點與候選位置 —— 所以它是 long read 才拿得到的證據。
實作對照:LongPhase-S 與 LongPhase-TO

這個想法在兩個工具裡有不同的實作:LongPhase-S 做成 read-level 與 haplotype origin 兩個過濾器(四個過濾器與各自的門檻見 M12);LongPhase-TO 把它擴展成三個位點的 ,用路徑結構判斷(見 M13)。

一句話總結

tumor-only 的核心困難

配對正常樣本提供的是這個人的 germline 對照;population database set 提供的是族群層級的 germline 證據。兩者不能互換:族群裡罕見的私有 germline 與尚未觀察到的 artifact 會落在資料庫的涵蓋範圍之外,成為額外候選,其中部分是 false positive。 補救的方向不是再加資料庫,而是改用 read-level 的連結結構、copy number、LOH 與品質等 不依賴「別人有沒有」的證據 —— 但這些都是補充證據,系統性 artifact 或 phasing error 仍會造成例外。

真實證據

TN calling 指令示範

docker run \
  -v ${INPUT_BAM_DIR}:${INPUT_BAM_DIR} \
  -v ${OUTPUT_DIR}:${OUTPUT_DIR} \
  -u $(id -u):$(id -g) \
  hkubal/clairs:v0.4.1 \
  /opt/bin/run_clairs \
  --normal_bam_fn ${INPUT_BAM_DIR}/normal.bam \
  --tumor_bam_fn  ${INPUT_BAM_DIR}/tumor.bam \
  --ref_fn ${INPUT_REF_DIR}/reference.fasta \
  --threads 64 \
  --platform ont_r10_dorado_sup_5khz_ssrs \
  --output_dir ${OUTPUT_DIR}

TO 模式:準備 population database set

mkdir PoN
BASE=http://www.bio8.cs.hku.hk/clairs-to/databases
wget -P PoN $BASE/gnomad.r2.1.af-ge-0.001.sites.vcf.gz
wget -P PoN $BASE/dbsnp.b138.non-somatic.sites.vcf.gz
wget -P PoN $BASE/1000g-pon.sites.vcf.gz
wget -P PoN $BASE/CoLoRSdb.GRCh38.v1.1.0.deepvariant.glnexus.af-ge-0.001.vcf.gz

注意:有些文件把資料夾變數寫成 PATH="PoN" 再使用 $PATH;這會覆寫 shell 的可執行檔搜尋路徑。此處改用 BASE, 實際參數仍應依工具版本文件核對。

四個檔案名稱(gnomaddbsnp1000gCoLoRSdb)都指向族群 germline 資料庫,與本教材的 population database set 定義一致;它不同於 GATK Mutect2 所稱的 recurrent-artifact PoN。 其中兩個檔名帶著 af-ge-0.001 —— 那就是前面那張圖裡的收錄門檻, 低於這個頻率的位點不在檔案裡,所以查不到。

haplotype-aware somatic indel calling 在不同 tumor DNA fraction 下的 F1、precision、recall
haplotype-aware recalibration 的效果。在此資料中,改善主要出現在 precision;若僅對既有候選進行後處理,通常可移除部分假陽性,但無法恢復 caller 未輸出的變異。

判讀練習

某個腫瘤樣本的一個位點有 50 條 read 覆蓋,其中 24 條支持 alt(VAF = 0.48), 且未被所使用的 population database set 涵蓋。

在 tumor-only 模式下,請列出需要檢查的證據與可能分類。

展開答案

VAF 約 0.5 且未被族群資料庫涵蓋時,可優先考慮 private germline, 但不能排除 somatic 或其他來源。

在簡化的 diploid、單拷貝模型下,somatic VAF 可近似為 purity/2; 較一般的模型還受 purity、multiplicity 與 total copy number 影響,並會受到 normal DNA、 clonality、mapping bias 與 depth 影響,因此不能單獨依 VAF 分類。

接著檢查這 24 條支持 read 的 haplotype 分布:如果幾乎全部落在同一條 haplotype 上,與「真的變異」相容(private germline 或 somatic 都會這樣);如果大致均分在兩條上, 更像 artifact —— 因為那等於同一個位置各自獨立突變了一次。此外還要看 copy number、LOH、品質與獨立證據。

要注意這個判準本身是理想化的:實務資料不會這麼乾淨, 系統性 artifact 或 phasing error 都會造成例外,所以它是提高或降低疑慮,不是定案。 前面提到的三位點路徑結構()就是為了讓這個判準更穩健: 左右鄰居都要對得上,才算得出「跟某一條既有 haplotype 只差候選這一格」的那條路徑。

實作練習

比較兩種 calling 設計的結果

此練習比較 paired 與 tumor-only 的輸出差異。若有配對資料,可在相同參考序列與 相近過濾設定下執行兩種模式,再比較結果:

# isec 要求 bgzip 壓縮+索引,少了索引會直接報錯
bcftools index -f paired.vcf.gz
bcftools index -f tumoronly.vcf.gz

# 配對模式找到、而僅腫瘤模式未找到的候選(數量依資料與設定而異)
bcftools isec -C paired.vcf.gz tumoronly.vcf.gz | wc -l

# 僅腫瘤模式多出的候選(可能包含 private germline、artifact 或 paired caller 漏報)
bcftools isec -C tumoronly.vcf.gz paired.vcf.gz | wc -l

若檔案還是未壓縮的 .vcf,先 bcftools view -Oz -o out.vcf.gz in.vcf 轉成 bgzip 格式再建索引;一般的 gzip 壓出來的檔案 bcftools index 不接受。

檢查多出來的候選是什麼

上面第二條指令的輸出,就是本模組那張圖裡的位置 ③。逐項檢查它們:

下面第 2 步先講一件事再看指令:HP 標籤的型別依工具而異。 longphase-s haplotag 寫的是整數 HP:i:somatic_haplotag 與整個 longphase-to 寫的是字串 HP:Z:。 只 grep 其中一種,另一種資料會安靜地數出 0,所以下面用 HP:[iZ]: 同時涵蓋兩者。

# 1) 在配對正常樣本裡數這個位置的 ref/alt read —— 接近一半提示 private germline
#    第 5 欄是每條 read 在該位置讀到的字母,可以直接數(. 與 , 代表與參考相同)
samtools mpileup -f reference.fasta -r chr1:1000000-1000000 normal.bam

# 想要精確數字而不是用眼睛數,讓 bcftools 把 AD 欄挖出來
bcftools mpileup -f reference.fasta -r chr1:1000000-1000000 -a AD normal.bam \
  | bcftools query -f '%POS\t%REF\t%ALT\t[%AD]\n'

# 2) 支持 read 落在哪一條 haplotype 上
#    haplotag 過的 BAM 裡直接數 HP 標籤;兩邊都有支持就要提高疑慮
samtools view tumor.haplotagged.bam chr1:1000000-1000000 \
  | grep -oE 'HP:[iZ]:[12]' | sort | uniq -c

第 1 步的兩道指令是同一件事的兩種讀法:samtools mpileup 給的是可以用眼睛看的 pileup 字串,bcftools mpileup 給的是 VCF —— 後者預設帶 allele depth, 所以要加 -a AD 才數得出來。

兩項要合起來看。VAF 接近 0.5 可提示 private germline, 但仍需排除污染、比對偏差與其他模型不確定性;haplotype 分布可提示 artifact, 但真的兩次獨立突變或 phasing error 都會造成例外。沒有單一證據可以定案。

學習檢核

原始文獻與程式碼

  • ClairS(tumour-normal):ClairS: a deep-learning method for long-read somatic small variant calling,bioRxiv,2023。程式碼在 github.com/HKU-BAL/ClairS
  • ClairS-TO(tumour-only):ClairS-TO: a deep-learning method for long-read tumor-only somatic small variant calling,Nature Communications,2025。程式碼在 github.com/HKU-BAL/ClairS-TO
  • DeepSomatic:Accurate somatic small variant discovery for multiple sequencing technologies with DeepSomatic,Nature Biotechnology,2025。程式碼在 github.com/google/deepsomatic

本模組術語

ClairS
配對 tumor–normal 的 somatic variant caller。tumor-only 版本叫 ClairS-TO。
DeepSomatic
Google 的 somatic variant caller,同樣有 tumor-only 版本。
PON(正常樣本面板/族群資料庫(依流程而異))
PON 依分析流程有兩種用法,兩者不可互換:本教材的 tumor-only 流程以它指稱 population germline database set(如 1000G、CoLoRSdb、dbSNP、gnomAD 的聯集);GATK Mutect2 的 Panel of Normals(PoN)則由多個正常樣本建立,用來標記反覆出現的技術性 artifact。兩者都不能完全取代同一病人的 matched normal。
TINC(腫瘤污染正常樣本)
Tumour-in-normal contamination:配對正常樣本含有腫瘤來源訊號,使 genuine somatic 變異也可能在 normal 中被觀察到,因而可能被錯誤過濾。
candidate(候選變異)
caller 提出、但尚未被確認的變異位點。本實驗室多數工具位於 caller 之後,進行再校正,處理的就是這些 candidates。
copy number(拷貝數)
某段基因體在細胞內的拷貝數。多數正常常染色體區段為 2,可再分為 major 與 minor allele copy number。
germline variant(生殖系變異)
在生殖系形成、通常存在於多數細胞的變異;可遺傳給子代,但不代表必然傳遞。
haplotype(單倍型)
同一條實體染色體拷貝上,具有一致相位的一組 alleles 或 variants。HP1 與 HP2 是任意的相對標籤。
somatic variant(體細胞變異)
在非生殖系細胞譜系中、通常於受精後取得的變異;可只存在於部分細胞,通常不由親代遺傳給子代。癌症基因體學常分析此類變異。
triplet graph
LongPhase-TO 判斷候選變異真假時用的最小結構:候選位置加上左右各一個變異,共三個位置。把 read 上看到的 allele 組合畫成路徑後,真的 somatic 變異會形成一條「跟某一條 germline haplotype 只差候選這一格」的新路徑;定序錯誤則湊不出一致的路徑。因為左右兩側都要對得上,所以三個位置是最小單位。
tumour-normal(配對腫瘤/正常)
同時定序病人的腫瘤與正常組織;正常樣本提供個體 germline 背景,有助於辨識 somatic 候選。
tumour-only(僅腫瘤)
只有腫瘤樣本、沒有配對正常樣本。在成本或檢體受限時很常見,但少了 germline 對照,分析難度會大幅提高。