模組 6 · Phasing and haplotagging
Phasing 與 haplotagging
介紹實驗室的核心方法,包含手動 phasing 練習,以及 somatic haplotype HP1-1、HP2-1 與 HP3 的意義。
本模組學習目標
- 將一組 read 分配至 HP1 與 HP2,並說明所採用的判準
- 說明 phase set 是什麼,以及為什麼 haplotype 方向只在 phase set 內部有意義
- 說出 switch error 是什麼、通常發生在哪裡
- 畫出 germline haplotype 與 somatic haplotype 的層級關係,包含 HP3 的處理
為什麼重要
M0 的那個問題到這裡才真正有答案。報告說 T790M 有、C797S 也有, 但要回答它們在不在同一份 DNA 上,得先把 read 依來源分成兩群 —— 這件事就是 phasing。
它產出兩個東西,之後每個模組都會用到:
- 變異的相位寫進 VCF —— 哪些變異在同一條 haplotype 上。
- 每一條 read 的 haplotype 寫進 BAM 的
HPtag —— 這條 read 來自哪一條。 這一步叫 haplotagging。
第二個特別關鍵:M7 判斷 somatic 變異真假時用的「支持 read 是否集中在同一條 haplotype」,
以及 M9 依 haplotype 分開統計甲基化,都是在 HP tag 上算的。
沒有這一步,那些判準根本無從計算。
本模組先用一段簡化 pileup 讓你自己分一次群,再說明工具怎麼做同一件事、 以及它在哪些情況下會分錯。
概念與互動
練習一次 phasing 判讀
下面是一段 pileup,包含三個 heterozygousheterozygous 異型合子在一般二倍體位點上,兩份 allele 不同(例如一份 A、一份 G)。此類位點可作為區分 haplotype 的資訊錨點;複雜拷貝數情況需另行解讀。At a typical diploid locus, carrying two different allele copies (for example A and G). These sites can anchor phasing; copy-number changes require separate interpretation.完整條目 → 位點;每條 read 在其覆蓋到的位點上顯示一個鹼基。 請依跨位點的 allele pattern 將 read 分群,使同群 read 的組合盡可能一致,並保留無法可靠判定的 read。
做完之後,注意三件事:
- 有一條 read 在此練習中無法可靠指派 —— 它沒有覆蓋任何 informative het 位點,因此保持未標記即可。
若該 read 另帶有 somatic signal,才可能在後續流程中進入
HP3類別;一般 untagged read 不等於 HP3。 - 示例中有一個錯誤鹼基(檢查後會被圈出來)。該 read 在其他位點仍可能呈現一致 pattern, 因此可根據多個位點的整體證據進行分群,但此方法不保證修正所有錯誤。
- HP1 與 HP2 整體互換仍可表示相同的相對 phasing。原因見下方說明。
cis 與 trans
phasing 的產物就是回答「兩個變異的相對位置」:
- ciscis兩個 variants 在同一條 haplotype 上。Two variants on the same haplotype.完整條目 →:在同一條 haplotype 上;藥物或功能影響需依特定 EGFR 變異與研究證據判定
- transtrans兩個 variants 分別在兩條不同的 haplotype 上。Two variants on opposite haplotypes.完整條目 →:分屬兩條 haplotype
phase set 與 switch error
phasing 可能因缺乏重疊 read 或 informative 位點而中止,形成新的 phase blockphase block一段可建立連續相位關係的區域。read 長度不足、缺少 informative heterozygous 位點或證據不一致時,可能形成不同 phase blocks。A contiguous stretch over which phasing is consistent. It can break when reads are too short, informative heterozygous sites are absent or evidence conflicts.完整條目 →。
VCF 用 PS 欄位標示每個 block。
switch errorswitch errorphasing 結果自某一位置起將兩條 haplotype 的方向對調,是常見的 phasing 錯誤類型。A phasing error in which the two haplotype labels swap from some point onward; a common phasing error mode.完整條目 → 是常見的 phasing 錯誤類型:自某一位置起,演算法將兩條 haplotype 的標籤對調。 它可能發生在 het 位點稀疏、read 重疊不足或證據歧義較高的區域。
LOH 對 phasing 的限制
LOHLOH 異型合子性喪失原本 heterozygous 的區域變成只剩一種 allele。LOH 不等於缺失 —— 也可能是一條 haplotype 遺失後另一條被複製(copy-neutral LOH)。Loss of heterozygosity: a formerly het region retains only one allele. Not necessarily a deletion.完整條目 → 可能減少可用的 heterozygous 錨點,使 phasing 變弱或分段;LOH 可為部分、copy-neutral 或 subclonal, 未必使所有位點都變成 homozygous。缺乏 informative 位點時,跨區域連結會變得不可靠。
不同工具對 LOH 的處理能力取決於 coverage、purity、LOH 型態與演算法。若 LongPhase-TO 能在特定條件下跨越 LOH, 應以相應 benchmark 與版本文件界定其適用範圍。
haplotagging:將 haplotype assignment 寫入 read
phasingphasing 定相為可判定的 variants 建立其位於不同實體染色體拷貝上的相位關係;VCF 常以 0|1 等形式表示。長 read 可提供跨位點的分子層級觀測證據。Determining which variants lie on the same physical chromosome, turning 0/1 into 0|1. Long reads provide direct molecular evidence.完整條目 → 將 variant 的 haplotype assignment 寫入 VCF;
haplotagginghaplotagging根據已 phase 好的 variants,把每一條 read 指派到 HP1 或 HP2,並把結果寫回 BAM 的 HP tag。Assigning each read to HP1 or HP2 using phased variants, and writing the result back as a BAM HP tag.完整條目 → 則將每條 read 的 assignment 寫入 BAM 的 HPHP tagBAM 裡標示某條 read 屬於哪一條 haplotype 的 tag。LongPhase-S 的 germline haplotag 寫成整數 tag。
之後可在 IGV 中依 haplotype 分組或著色顯示。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.完整條目 →
somatic haplotype 的延伸層級
到目前為止介紹的是標準 germline phasing。接著再說明 somatic haplotype 的延伸層級:
| 標籤 | 意思 |
|---|---|
HP1 / HP2 | 已指派至 germline haplotype 的 read,不表示只涵蓋 germline 變異 |
HP1-1 | 帶有 somatic 變異,且可判定源自 HP1 |
HP2-1 | 帶有 somatic 變異,且可判定源自 HP2 |
HP1-1-1 | 在 HP1-1 之上再累積一個 somatic assignment;不應單獨解讀為已證實的 subclone |
HP3 | 帶有 somatic signal,但尚未能可靠判定源自哪一條 germline haplotype |
若某個 somatic allele 在其他 read 上已有可靠的 HP1-1 assignment, 流程可在條件成立時將攜帶相同 allele 的部分 HP3 read 重新分類為 HP1-1;此步驟可能增加可用 read, 但也需評估相同 allele、mapping 與相位錯誤造成的誤分類風險。
真實證據
以下示範 germline phasing 與 haplotagging 指令:
# 1. 對 germline VCF 執行 phasing
longphase-s phase \
-s SNP.vcf \
-b alignment.bam \
-r reference.fasta \
-t 8 \
-o phased_prefix \
--ont
# 2. 依 phased VCF 將 read 標記為 HP tag
# 注意 -s 吃的是上一步的產物:phase 的 -o 給的是「前綴」,實際檔名是 <前綴>.vcf
longphase-s haplotag \
-r reference.fasta \
-s phased_prefix.vcf \
-b alignment.bam \
-t 8 \
-o tagged_prefix
依目前版本,LongPhase-S 的 --ont/--pb 參數要求與 LongPhase-TO 的處理方式不同。
LongPhase-TO 僅支援 ONT,某些不相容參數可能被接受但不產生預期效果;請依版本文件核對,
不要預期流程在所有版本都提示警告。
完成後,可在 IGV 中依 HP tag 分組,觀察 read 是否呈現 haplotype 分層。
判讀練習
在一段區域完成 haplotag 後,若有 30% 的 read 沒有 HP tag,請列出至少三個可能原因, 並說明可如何區分這些原因。
展開答案
可從以下方向逐一排查:
- read 未覆蓋 informative het 位點 —— 沒有足夠的判斷依據,可能保持未標記。
- 這段區域可能是 LOHLOH 異型合子性喪失原本 heterozygous 的區域變成只剩一種 allele。LOH 不等於缺失 —— 也可能是一條 haplotype 遺失後另一條被複製(copy-neutral LOH)。Loss of heterozygosity: a formerly het region retains only one allele. Not necessarily a deletion.完整條目 → —— 若區段缺乏可用的 het 位點,read 的 haplotype assignment 會變得困難。 若未標記 read 集中於連續區段,應優先檢查 LOH、低複雜度或 coverage。
- mapping quality 太低被濾掉 —— 以此版本設定為例,
haplotag預設-q 1, 而estimate_purity預設為-q 20;同一份資料用不同子命令可能得到不同結果。 - 證據不夠一致 —— 在預設
-p 0.6等門檻下,read 的 allele 若未明顯偏向某一條 haplotype, 工具可能保持未標記。 - phase set 破碎 —— 若 phasing 本身就斷成很多小段,能用的錨點自然變少。
可先檢查未標記 read 是否集中在特定區域(優先檢查 LOH、低複雜度或 coverage), 或均勻散布(再檢查 read 長度、mapping quality 與參數設定)。
實作練習
執行 phasing 與 haplotagging
用上一節那兩道指令跑一次自己的資料(phase 產生
phased_prefix.vcf,haplotag 產生 tagged_prefix.bam)。
兩個步驟都完成後,再依下面三項檢查輸出。
以 IGV 檢查 haplotagging 結果
建議將 tagged_prefix.bam 載入 IGV,依序檢查以下項目:
- 在 read 上按右鍵 → Group alignments by → phase(或 tag
HP) - 前往一個 het 位點
- 在相位品質良好的區域,通常可觀察到 read 分成兩層,且同一層的 read 在該位點上呈現一致 allele pattern
這項可視化有助於理解 haplotype 分層。若分群不清,請檢查輸入 VCF、coverage、mapping quality、 phase set 與工具參數,不能僅憑單一區域判定 phasing 失敗。
量化 phasing 的品質
# phase block 的 contig+PS 鍵數;需搭配 block 長度與 switch error 評估
bcftools query -f '%CHROM\t[%PS]\n' phased_prefix.vcf | grep -v '\t\.$' | sort -u | wc -l
# 計算帶有 HP tag 的 read 比例
total=$(samtools view -c tagged_prefix.bam)
tagged=$(samtools view tagged_prefix.bam | grep -c 'HP:')
echo "標記率: $tagged / $total"
標記率沒有通用門檻可以照抄:它同時受 read 長度、heterozygous 位點密度、coverage、 平台與工具版本影響,同一份資料的不同區段也會不一樣。判讀方式是自己建立基線 —— 先看同一份資料在 het 位點密度正常的區段拿到多少,再拿可疑區段跟它比; 明顯偏低時才依上方「30% 沒有 HP tag」那份清單逐項排查。
學習檢核
本模組術語
- 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)。
- PS tag(phase set)
- 標示某群 variants 屬於同一 phase block 的編號。同一 PS 內的相位方向可相互比較;不同 PS 的 HP1/HP2 方向彼此獨立。
- cis
- 兩個 variants 在同一條 haplotype 上。
- haplotagging
- 根據已 phase 好的 variants,把每一條 read 指派到 HP1 或 HP2,並把結果寫回 BAM 的
HPtag。 - heterozygous(異型合子)
- 在一般二倍體位點上,兩份 allele 不同(例如一份 A、一份 G)。此類位點可作為區分 haplotype 的資訊錨點;複雜拷貝數情況需另行解讀。
- phase block
- 一段可建立連續相位關係的區域。read 長度不足、缺少 informative heterozygous 位點或證據不一致時,可能形成不同 phase blocks。
- phasing(定相)
- 為可判定的 variants 建立其位於不同實體染色體拷貝上的相位關係;VCF 常以
0|1等形式表示。長 read 可提供跨位點的分子層級觀測證據。 - switch error
- phasing 結果自某一位置起將兩條 haplotype 的方向對調,是常見的 phasing 錯誤類型。
- trans
- 兩個 variants 分別在兩條不同的 haplotype 上。