解釋中心
解釋中心 · 頁 10 · 能力 vs 敘述 gap

ISM C++ 的數據與敘述,能解釋 chr2:18M subclone 的哪些部分?

把使用者手動觀察、再用 pysam 驗證的 chr2:18M subclone 重建敘述,逐項對照「2026-03-14 historical canonical ISM artifact 在這些位點留下什麼」,並另以 current release-baseline source inspection 說明現行能力。誠實界定:哪些 ISM 撐得起(characterize 半邊)、哪些 ISM 根本沒有(reconstruct 骨幹半邊)、為什麼,以及模組命名的 over-claim 風險。

L0 一眼結論

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 跨區分類器)。

● 讀這頁的 4 條鐵則(避免把 ISM oversell)
  1. ISM 的 SubcloneAnalyzer 不是 subclone 重建器——是把全基因組 ≥50 個 region 依 ASM 特徵塞進 4 個固定桶的 if/else(SubcloneAnalyzer.cpp:100-128)。沒有 read linkage、沒有樹、沒有 CCF、沒碰任何 SNV。
  2. ISM 的 TreeStructure 不是腫瘤演化樹——是 read×read 甲基距離的 dendrogram(葉=read,邊=甲基距離),沒有祖先-後代、沒有 CCF。
  3. historical verification_class_legacy="Subclone" = 「cluster 結構顯著但標籤不顯著」(SignificanceAnalyzer.cpp:307-340),只是 cis-ASM/double-dip 候選旗標,不是被確認的 subclone。current Verification schema-v2 另納入 PERMANOVA/PERMDISP axes。
  4. ISM 實測在 chr2 的顯著訊號全在 a-priori allele 軸(label-first),unsupervised cluster PERMANOVA 三位點全 invalid。「無監督切群=subclone」在此不成立。

1 先講清楚:chr2:18M subclone 例子是什麼 案例 L2

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。

6
candidate loci(5 truth-evaluable TP + 1 落 HC 空隙、truth-unevaluable)
98.3% / 99.6%
HP2-dominant imbalance(HKU / DORADO;與 LOH context 相容,非 CN 機制定案)
0
α/β 互斥 linkage 違反 read(strict)
L2
證據天花板(單一區域案例×單 biological sample×兩 technical datasets)

6 個 candidate sequence-variant loci 與其 local-state 角色(pysam + SEQC2,L2)

#座標變異SEQC2歷史 TVAF 近似轉換*候選分子狀態角色
118,068,480C>GTP HighConf0.814unresolved block L
218,072,546G>CTP HighConf0.786unresolved block L
318,086,020G>A落 HC 空隙—α local-state pivot candidate(truth-unevaluable)
418,096,269C>GTP MedConf0.489unresolved block R(C>G truth-evaluable TP;鄰接 20bp poly-T 的 G/T/DEL 三態 homopolymer-uncertain)
518,099,697G>CTP0.097α-1 read-level 條件包含 candidate(低 observed VAF;不證 cellular subclone)
618,108,828C>GTP HighConf0.772unresolved block R

* 此欄為 case-specific 的歷史近似轉換,未校正 copy number、LOH 與 purity;不是 canonical corrected CCF,也不是 cellular-clone corroboration。

敘述的 6 個 claim(已被第二輪 audit 校正,L2)

Claim已驗證內容裁決
A 6 sSNV 逐 read REF/ALTtumor/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 screenSEQC2 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 graphread-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 判成 FPtumor 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。

⚠ 關鍵前提:上述 A–F 的數字,全部來自 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。

2 2026-03-14 historical canonical ISM artifact 在這些位點留下什麼 artifact read-back

好消息: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 讀回)。

ISM C++ 對 chr2 三個 sSNV region 的實際輸出(read-back 真值,L1)
sSNV regionreadsoptimal_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.300.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.950.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.781.000 / 0.00 invalid · F=0 · p=1.0 F=12.25 · p=0.001 · disp_p=1.0
讀法(3 件事): ① allele PERMANOVA 三位點皆為 p=0.001(F=12–24)→ 在同一 HCC1395 生物樣本中,historical artifact 的 read×read 距離 + label-first 檢定支持「ALT 與 REF 標籤相關的甲基結構差異」。這是三個 locus-specific tests,不是三個獨立 biological replicates;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)。

ISM 一個 region 內部做兩種分析視角(RegionProcessor.cpp)

每 read → [甲基 read×CpG 矩陣] → read×read 距離(NHD/BERNOULLI) → UPGMA 樹 → 切 k∈[2,6] 群
↘ 軸A cluster-first:群 × {ALT/REF, HP} Fisher-FFH 列聯表(GlobalTest.cpp)
↘ 軸B label-first:依 a-priori {HP, ALT/REF, Tumor/Normal} 分組 → 甲基距離 PERMANOVA(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。

3 逐 claim 對照:ISM 撐得起哪些、缺哪些 核心

把第 1 節的 6 個 claim,逐一對到第 2 節的 ISM C++ as-built 能力。✔ 合理=ISM 有對應實作且實測支持;⚠ 部分/弱=有但語意降級或較弱;✘ 缺少=ISM 根本沒有,靠 pysam/外部。

chr2 claimISM 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)
✔ ISM C++ 撐得起 ——「characterize」半邊
  • C 甲基結構分群(read×read 距離 + PERMANOVA)+ 實測 allele PERMANOVA p=0.001 ×3
  • C′ normal-anchored ASM-control(標記可觀察的 germline-ASM confound;不能證明 acquisition)
  • D LOH 註記(BED overlap + hp_ratio)
  • A(部分) 單錨點逐 read allele call(與 pysam 吻合)

=「在 allele/HP/LOH 標籤條件化的結構上,刻畫甲基」;不是獨立 clone 確認。

✘ ISM C++ 缺少 ——「reconstruct」骨幹半邊
  • B 多 sSNV read linkage 建 local-state candidate table(block L / block R 關係 unresolved)
  • E clone tree / 演化順序 / CCF
  • F SEQC2 truth-gap 的 truth-evaluable/unevaluable 分類
  • homopolymer / VAF-排序 / coverage 三防呆護欄

=重建骨幹由 genetic haplotag + pysam linkage + SEQC2 做,不在 ISM C++、也不由甲基驅動。

4 為什麼 ISM 缺這半邊 + 兩個 over-claim 陷阱 誠實邊界

不是 bug,是設計分析單位不同:ISM 的 unit = 「一個 somatic SNV ±window」,做 region 內甲基結構 + 標籤關聯;它從未被設計成「跨位點把 read 串成譜系」。以下三點是對外敘述必須誠實標記的,否則模組名字會讓人誤會。

陷阱 1 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」。

陷阱 2 historical verification_class_legacy="Subclone" 是舊的 cis-ASM 候選旗標 over-claim

historical 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。

陷阱 3 allele PERMANOVA p=0.001 很漂亮,但 allele 軸最易被 cis-ASM 污染 baseline-dependence

第 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。

5 結論:足夠解釋哪些、不足解釋哪些 Tier 4 paper-scope

足夠 ✔ ISM C++ 的數據足夠描述 chr2 案例的單位點 allele-associated 甲基:同一 HCC1395 樣本的三個 sSNV 皆得到 allele PERMANOVA p=0.001,並有 normal-anchored ASM-control 概念與 LOH 註記。這支持 genetic grouping 後的 bounded methylation concordance;不等於獨立 replication、clone validation 或完全排除 dispersion/confound。
不足 ✘ ISM C++ 不足以解釋「重建骨幹」半邊:多 sSNV read linkage 的 local mutation-state candidate table(claim B)、非時間 compatibility relation/順序/CCF(claim E)、truth-gap 的 truth-evaluable/unevaluable 分類(claim F)—— 這些是 pysam 自訂腳本 + genetic haplotag + SEQC2 做的,不在 ISM C++。即使有 same-read、absence、VAF 或甲基 pattern,也不能確認 parent-child、取得順序、common node、block L/R 合併、cellular lineage 或 cellular subclone;ISM 的 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 也不能假設完全相同。

一句話對外口徑(可直接用)

「chr2:18M 的 somatic-haplotag + 多 sSNV read linkage 支持局部 mutation-state candidates(pysam,L2);ISM C++ 在同一 HCC1395 樣本的三個 sSNV 上觀察到 ALT/REF-associated 甲基結構差異(allele PERMANOVA p=0.001 ×3)。這是遺傳分組後的有界甲基關聯,不是獨立 clone validation。ISM 不重建 cellular lineage、不輸出 clone tree 或 corrected CCF。」

若要讓 ISM 真的能撐起重建半邊,缺口清單(→ 系統化 handoff)

  1. cross-SNV read linkage 引擎:reads.tsv 加 PS 欄/or 多 anchor 同 read 共現表(補 claim B 骨幹)。
  2. allele 軸 cis-control:在 region-level allele PERMANOVA 加 normal-HP1-vs-HP2 screen,標記可觀察的 cis/germline-ASM confound(現只在 pysam;screen-negative 不等於 acquired)。
  3. 模組正名:SubcloneAnalyzer→「per-region ASM-signature stratifier」;"Subclone" class→「unlabeled-structure candidate」;避免 over-claim。
  4. 第二 LOH 區域案例/第二樣本(COLO829):突破單一區域案例的 L2 天花板(升 ★4)。

完整 9 步系統化構想見 頁 06(pipeline 構想,非已實作)。