把使用者手動觀察、再用 pysam 驗證的 chr2:18M subclone 重建敘述,逐項對照「2026-03-14 historical canonical ISM artifact 在這些位點留下什麼」,並另以 current release-baseline source inspection 說明現行能力。誠實界定:哪些 ISM 撐得起(characterize 半邊)、哪些 ISM 根本沒有(reconstruct 骨幹半邊)、為什麼,以及模組命名的 over-claim 風險。
ISM C++ 足夠描述這個案例的「單位點 allele-associated 甲基」半邊,但解釋不了「跨位點重建」半邊。 chr2:18M 敘述裡的 pos3=A、block L、block R、互斥 linkage 與 pos3-conditioned 甲基數字,不是 ISM C++ 算的,是 pysam 自訂腳本算的。block L / block R 無跨距 read,關係 unresolved;甲基 association 不能把它們合併。ISM C++ 另以同一生物樣本、同一批位點做 label-first 檢定;它輸出的是「單位點 ALT/REF-associated 甲基結構」,不是獨立 biological replicate,也不是「跨位點 lineage 重建」。
▸ 給 PI 一句話:ISM 在 chr2 三個 sSNV 得到 allele PERMANOVA p=0.001 ×3,是強的位點特異 allele-associated methylation evidence;三次檢定來自同一生物樣本,且甲基分組由 ALT/REF 標籤條件化,不能當作獨立 clone validation 或「硬證據」。ISM 沒有多-sSNV read linkage、clone tree 或 corrected CCF;重建骨幹不在 SubcloneAnalyzer(它只是 4-bucket 跨區分類器)。
SubcloneAnalyzer 不是 subclone 重建器——是把全基因組 ≥50 個 region 依 ASM 特徵塞進 4 個固定桶的 if/else(SubcloneAnalyzer.cpp:100-128)。沒有 read linkage、沒有樹、沒有 CCF、沒碰任何 SNV。TreeStructure 不是腫瘤演化樹——是 read×read 甲基距離的 dendrogram(葉=read,邊=甲基距離),沒有祖先-後代、沒有 CCF。verification_class_legacy="Subclone" = 「cluster 結構顯著但標籤不顯著」(SignificanceAnalyzer.cpp:307-340),只是 cis-ASM/double-dip 候選旗標,不是被確認的 subclone。current Verification schema-v2 另納入 PERMANOVA/PERMDISP axes。HCC1395 乳癌細胞株,chr2:18,068,480–18,108,828(~40 kb,2p24.2,KCNS3 intron,落在 SEQC2 LOH-annotated interval chr2:16,146,119–22,100,000,且有 HP2-dominant imbalance)。使用者手動 IGV 觀察「LOH context→多群 read」假說,再用 pysam 逐 read 萃取 6 個 candidate sequence-variant loci 的 base + HP/PS + MM/ML 甲基,對照 SEQC2 truth + DORADO 跨 basecaller 技術重現 + 第二輪計算複核;其中 5 個位點為 truth-evaluable TP、1 個為 truth-unevaluable tumor-associated candidate。未整合 allele-specific CN,不能判定 CN-loss、cnLOH、事件機制或 retained parental copy。
| # | 座標 | 變異 | SEQC2 | 歷史 TVAF 近似轉換* | 候選分子狀態角色 |
|---|---|---|---|---|---|
| 1 | 18,068,480 | C>G | TP HighConf | 0.814 | unresolved block L |
| 2 | 18,072,546 | G>C | TP HighConf | 0.786 | unresolved block L |
| 3 | 18,086,020 | G>A | 落 HC 空隙 | — | α local-state pivot candidate(truth-unevaluable) |
| 4 | 18,096,269 | C>G | TP MedConf | 0.489 | unresolved block R(C>G truth-evaluable TP;鄰接 20bp poly-T 的 G/T/DEL 三態 homopolymer-uncertain) |
| 5 | 18,099,697 | G>C | TP | 0.097 | α-1 read-level 條件包含 candidate(低 observed VAF;不證 cellular subclone) |
| 6 | 18,108,828 | C>G | TP HighConf | 0.772 | unresolved block R |
* 此欄為 case-specific 的歷史近似轉換,未校正 copy number、LOH 與 purity;不是 canonical corrected CCF,也不是 cellular-clone corroboration。
| Claim | 已驗證內容 | 裁決 |
|---|---|---|
| A 6 sSNV 逐 read REF/ALT | tumor/normal allele 兩 basecaller 重現;matched normal 未見六個預期 ALT,但有偶發其他 non-reference error calls | ✔ 有界確認 |
| B read linkage 定義 local-state candidates | 在 strict operational union 與現有覆蓋下,pos3=A 與 pos1G/2C/6G markers 為 0 observed co-alt;現有覆蓋 reads 中 (5)C 只與 (3)A 同現。(1)(2) block L 與 (4)(6) block R 無跨距 read,關係 unresolved;甲基 association 不能橋接或合併。absence 不證唯一 cellular lineage、parent-child 或取得順序 | ⚠ 候選模型 |
| C 遺傳分組後甲基差異 | 10 候選 CpG;normal-ASM-screen-negative 子集 {2.1,2.2,3.1,3.2,5.1,5.2},最強技術重現 {3.1,3.2}(如 3.2 HKU α0.97/β0.14 q=4.1e-5、DORADO 1.00/0.006 q=2.4e-5) | ⚠ 有界關聯 |
| D LOH context + matched-normal screen | SEQC2 LOH annotation + HP1-low imbalance 1.7%(4/236,HP2 label 占 98.3%)方向相容;matched normal 未見六個預期 ALT。未整合 allele-specific CN,不能判定 CN-loss vs cnLOH、機制或 retained parent | ⚠ context-compatible |
| E 非時間 compatibility graph | read-level 共現/互斥與 (3)/(5) 條件包含 pattern 只約束非時間、非唯一的 local-state compatibility graph。same-read、absence、VAF 或甲基 association 都不能判定 parent-child、取得順序、common node、cellular lineage 或 block L/R 關係 | ⚠ 觀測 L2 / 模型 L3 |
| F pos3 不可由 SEQC2 判成 FP | tumor ALT 分子 HKU 29 / DORADO 21(BQ20)、雙股、兩份 normal reads 未觀察到 A;但位點落 SEQC2 HC 空隙,外部 truth 不可評估 | ⚠ 腫瘤相關候選 |
依目前 claim ceiling,可防守用語是 "local, LOH-annotation-compatible mutation-state candidates with bounded, mutation-conditioned methylation association";不是 confirmed cellular-subclone reconstruction。完整走查見 頁 04/頁 05。
pysam 自訂腳本(extract_locus_matrix.py + analyze_matrix.py → independent_audit.json,build commit b761336),不是 ISM C++ 算的。下一節只讀回 2026-03-14 historical canonical artifact;其 producer commit 未有獨立 receipt,不能當 current-source rerun。好消息:ISM C++ binary 確實在 chr2:18M 的 sSNV anchor 上跑過(canonical paired_full TP 批次,20260314_..._complete_matrix)。每個 somatic SNV ±5000bp 是一個獨立 region,輸出 metadata.txt / reads.tsv / methylation.csv / distance/<METRIC>/matrix.csv / clustering/{tree.nwk, significance.json}。以下是三個 sSNV region 的 ISM 實測統計(本 session 由 significance.json 讀回)。
| sSNV region | reads | optimal_k | cluster×ALT Fisher p / V | cluster×HP Fisher p / V |
cluster PERMANOVA (unsupervised) |
allele PERMANOVA (ALT vs REF, label-first) |
|---|---|---|---|---|---|---|
chr2:18,068,480#1 · Region 2738 · 47 CpG |
36 REF21/ALT15 | 2 | 0.144 / 0.30 | 0.039 / 0.66 | invalid · F=0 · p=1.0 | F=15.43 · p=0.001 · disp_p=1.0 |
chr2:18,072,546#2 · 43 reads |
43 REF23/ALT20 | 3 | 0.000 / 0.95 | 0.020 / 0.79 | invalid · F=0 · p=1.0 | F=23.65 · p=0.001 · disp_p=1.0 |
chr2:18,099,697#5 · 低 VAF(CCF 0.10) |
34 REF23/ALT11 | 4 | 0.000 / 0.78 | 1.000 / 0.00 | invalid · F=0 · p=1.0 | F=12.25 · p=0.001 · disp_p=1.0 |
dispersion_p=1.0 是該 historical producer 的輸出,不能套用 current analytic F-tail 語意,也不能寫成完全排除離散度假象。
② cluster PERMANOVA(unsupervised)三位點全 invalid → ISM 的「無監督切群結構」檢定在此無有效結論;訊號完全靠 a-priori allele 標籤,不靠盲切。
③ ISM 的 allele call(REF21/ALT15 等)與 pysam(#1 C22/G16)幾乎吻合 = 兩條 pipeline 交叉驗證 per-read base calling 一致。
output/canonical/HCC1395/paired_full/20260314_..._complete_matrix/intersubmod_tp/filtered_snv_tp/chr2/chr2_{18068480,18072546,18099697}/.../clustering/significance.json(本 session Read)。
RegionProcessor.cpp)GlobalTest.cpp)LabelTest.cpp;只對 methylation-derived labels 而言非循環,仍依賴 variant calling/basecalling/alignment/haplotag assumptions,且不建立 cellular identity)
⤷ chr2 的顯著結果全落在軸 B 的 allele 維度(label-first,ALT vs REF)。這也是 ISM 唯一能跟 chr2 敘述對上的單元 —— 但它是單位點的 allele-甲基關聯,不是跨位點 lineage。三統計分工細節 → 頁 09。
把第 1 節的 6 個 claim,逐一對到第 2 節的 ISM C++ as-built 能力。✔ 合理=ISM 有對應實作且實測支持;⚠ 部分/弱=有但語意降級或較弱;✘ 缺少=ISM 根本沒有,靠 pysam/外部。
| chr2 claim | ISM C++ as-built 對應 | 裁決 | 原因(file:line) |
|---|---|---|---|
| A 6 sSNV 逐 read REF/ALT | 每 region 單錨點 ALT/REF base-calling(CIGAR-accurate);reads.tsv 有 alt_support 欄 |
⚠ 部分 | 有逐 read allele,但 ISM 一次只看一個 SNV anchor;reads.tsv 無 PS 欄 → 無法串多 SNV(ReadParser.cpp:167-261、RegionWriter.cpp:151) |
| B 互斥 linkage 定 local-state candidates (block L / block R 關係 unresolved) |
無。每 candidate sequence-variant locus 獨立成 region;無 cross-SNV read linkage 引擎;唯一跨位點構造 SubcloneAnalyzer 是特徵向量分桶,非 read 共享 |
✘ 缺少 | 多 sSNV 在同 read 的共現/互斥 candidate table 不在 ISM C++;由 pysam linkage 00/10/01/11 做,且不能單獨確認 lineage(main.cpp 每 SNV 獨立、SubcloneAnalyzer.cpp:100-128) |
| C 甲基與兩 local-state labels 的 association | read×read 甲基距離 → 群 + label-first allele/HP PERMANOVA;實測 allele PERMANOVA p=0.001 跨 3 位點複製 | ✔ 合理 (單位點/allele 軸) |
ISM 直接把 read 依 ALT/REF 分組測甲基距離(LabelTest.cpp:307,86-133、StructureTest.cpp:153-201)。但這是單位點 allele-甲基,且未在 allele 軸跑 cis-control(見下節) |
| D LOH annotation-compatible context + normal=REF | 外部 LOH BED overlap + hp_ratio 失衡 heuristic;實測同位點 HP 失衡 34:2。未整合 allele-specific CN,不能判定 CN-loss/cnLOH、機制或 retained parent |
⚠ 合理 (註記非重建) |
ISM 把 LOH 當輸入註記,不自己 call LOH、不建 CN model、不 phasing(LohBedAnnotator.cpp:73,88) |
| C′ normal-anchored ASM-control (篩出可觀察的 germline-ASM confound) |
delta-of-deltas(tumor HP delta − normal HP delta)+ per-CpG ASM Fisher+BH-FDR;residual-matrix 路徑刻意停用 | ⚠ 合理但弱 | 概念有實作但軸是 HP1-family vs HP2-family(germline 軸);somatic-skewed 常見情況退化為 germline-only、sig=false(RegionProcessor.cpp:976,985-992,890-893、PerCpgAsm.cpp:228) |
| E 非時間 compatibility graph / 演化順序 / CCF | 無 clone tree。TreeStructure 是 read×read 甲基距離 dendrogram;SubcloneAnalyzer 是 4-bucket 跨區分類;grep CCF = 0 hits |
✘ 缺少 | 葉=read、邊=甲基距離,無祖先-後代、無 CCF、無跨位點 lineage(TreeStructure.cpp、SubcloneAnalyzer.cpp:100-128) |
| F pos3 truth-gap 的 truth-evaluable/unevaluable 分類 | 無。ISM 不比對 SEQC2 truth、不做 strand/mapQ artifact 統計 | ✘ 缺少 | 屬 pysam 逐 read 統計 + SEQC2 HC.bed 比對(seqc2_subclone_concordance.py) |
=「在 allele/HP/LOH 標籤條件化的結構上,刻畫甲基」;不是獨立 clone 確認。
=重建骨幹由 genetic haplotag + pysam linkage + SEQC2 做,不在 ISM C++、也不由甲基驅動。
不是 bug,是設計分析單位不同:ISM 的 unit = 「一個 somatic SNV ±window」,做 region 內甲基結構 + 標籤關聯;它從未被設計成「跨位點把 read 串成譜系」。以下三點是對外敘述必須誠實標記的,否則模組名字會讓人誤會。
SubcloneAnalyzer 名字像「subclone 重建器」,其實是 4-bucket 規則 over-claim它接收的是已算好的 per-region ASM 特徵向量(hp_asm_delta、sample_asm_delta、hp_ratio…),用固定門檻 if/else 把 region 分到 4 個桶:0=非LOH低ASM/1=非LOH高HP-ASM/2=任何LOH/3=高sample-ASM(SubcloneAnalyzer.cpp:100-128,需 ≥50 regions)。沒有 read、沒有 SNV、沒有距離、沒有樹、沒有 CCF;n_subclones 是「看到的桶 id 最大值+1」,構造上封頂 4,不是估計出的 clone 數。輸出 subclone_structure.txt 是「≤4 種固定表觀類別的 region 計數」,不是腫瘤 subclone。
→ 對外請說「per-region ASM signature 分類」,不要說「ISM 重建了 N 個 subclone」。
verification_class_legacy="Subclone" 是舊的 cis-ASM 候選旗標 over-claimhistorical v1 verdict(SignificanceAnalyzer.cpp:307-340):cluster_significant ∧ label_significant → Strong;cluster_significant ∧ ¬label_significant → "Subclone";¬cluster ∧ label → Weak;else Noise。這個值現只保留在 verification_class_legacy 作 evidence-path provenance;current Verification schema-v2 會另納入 label-PERMANOVA 與 PERMDISP clean/dispersion axes(RegionProcessor.cpp:1817-1862)。
注意 historical「Subclone」是用標籤關聯的「缺席」定義的——意思是「甲基把 read 切成有結構的群,但這結構對上不了任何 a-priori 標籤(HP/allele/tumor)」。所以不論 legacy 或 v2,都只是需要進一步查的 association candidate,不是被確認的 subclone。
補強:cluster_significant 的一半其實是 Fisher-FFH(固定邊際 hypergeometric null,無 read 非獨立/over-dispersion 校正,FisherExact.cpp:259-315),不是 PERMANOVA p。current check_dispersion 已用 F-distribution upper-tail 解析 p(StructureTest.cpp:378-472)取代 historical 3-bucket lookup;仍只能標記 dispersion warning,不會把 association 升格成 cluster truth。
第 2 節 ISM 實測的顯著訊號在 ALT vs REF allele 軸。對一個 LOH 區的 somatic SNV,ALT-vs-REF 甲基差可能是 cis-ASM(somatic 變異 cis 連帶的 allele-specific methylation),不一定是 subclone marker。ISM 的 significance.json 在 allele 軸沒有跑 normal-anchored cis-control(它的 ASM-control 是 HP 軸的 delta-of-deltas,且 somatic-skewed 時退化)。
pysam audit 另跑 normal HP1-vs-HP2:{3.3,3.4,3.5,4.1} 在 matched-normal 顯示 germline-ASM confound(如 3.3 normal HP1 0.814/HP2 0.046,FDR 0.007);{2.1,2.2,3.1,3.2,5.1,5.2} 則是 tumor-associated、normal-ASM-screen-negative。screen-negative 只代表此檢定未偵測到 normal HP 差異,不證明 tumor-acquired 或 clone identity。ISM 的 region-level allele PERMANOVA 看不到這層拆解,需另做 per-CpG + normal-HP screen。
→ ISM allele PERMANOVA 支持「甲基與 somatic allele 標籤相關」;normal-anchored screen 可標記部分 cis/germline-ASM confound,但兩者都不單獨確認 subclone 或 acquisition。
SubcloneAnalyzer/TreeStructure/"Subclone" class 名實不符,不能拿來宣稱重建。
合理的分工:genetic read linkage 提供局部 mutation-state candidates;甲基負責 characterize 分組後關聯,非 driver、非 filter、非獨立重建。ISM 的角色是在 allele/HP/LOH 標籤條件化後描述甲基,而不是從零重建 cellular subclone。對外應把直接觀測、模型推論與甲基關聯分層陳述,不能把同一樣本/同源 technical data 中的兩種量測寫成獨立確認;read-set identity 若無 receipt 也不能假設完全相同。
SubcloneAnalyzer→「per-region ASM-signature stratifier」;"Subclone" class→「unlabeled-structure candidate」;避免 over-claim。完整 9 步系統化構想見 頁 06(pipeline 構想,非已實作)。