{
 "_note": "跑之前写死。看到结果之后不许改预测。",
 "written_before_analysis_at": "2026-08-26T16:45:00Z",
 "round_nature": "feasibility",
 "question": "AML 两个独立公开队列里，按耐药/敏感分组筛出的候选靶点，有多少方向是一致的？这个一致性是否显著高于随机？",
 "prediction": {
  "H1": "两队列方向一致的候选靶点数量，显著高于标签置换零模型（超过零模型分布的 95 分位）",
  "H2": "至少有 5 个基因在两个队列里都达到 FDR<0.1 且方向一致",
  "rationale": "两队列的耐药定义不同（BeatAML 用诱导治疗反应，TCGA-LAML 用生存分位数代理），方向若仍一致，说明信号不依赖某一种耐药操作化，更值得往下追；若不一致，说明现有分组口径不稳，先要解决的是分组定义而不是找更多靶点。两种结果都对提交人有用。"
 },
 "decision_rule": {
  "discovery": "队列 A（TCGA-LAML，本地全基因组矩阵）：耐药代理=OS 下四分位且已故 vs 敏感代理=OS 上四分位；Mann-Whitney U + BH，取 FDR 最小的 top 200 作候选",
  "replication": "队列 B（BeatAML，真实诱导治疗反应：Refractory vs Complete Response）：只对这 200 个基因检验，方向一致且 FDR<0.1 记为复制成功",
  "null_model": "在两个队列各自独立置换耐药/敏感标签 1000 次，重复整套流程，得到随机情况下的一致数分布",
  "refuted_if": "实际一致数 <= 置换零模型的 95 分位，或复制成功基因数 < 5"
 },
 "arms": [
  {
   "name": "cohort_A_tcga_laml_discovery",
   "is_baseline": false,
   "what": "TCGA-LAML，耐药代理=总生存下四分位且已故，敏感代理=上四分位；用于全基因组发现",
   "data_space": "AML 患者层表达谱：TCGA-LAML (Xena HiSeqV2) 与 BeatAML (cBioPortal RNA-seq)",
   "truth_source": "各队列自带的耐药/敏感分组标签（TCGA=生存分位数代理；BeatAML=诱导治疗反应）",
   "n": 78
  },
  {
   "name": "cohort_B_beataml_replication",
   "is_baseline": false,
   "what": "BeatAML (OHSU 2018)，耐药=诱导治疗 Refractory，敏感=Complete Response；真实临床标签，用于复制",
   "data_space": "AML 患者层表达谱：TCGA-LAML (Xena HiSeqV2) 与 BeatAML (cBioPortal RNA-seq)",
   "truth_source": "各队列自带的耐药/敏感分组标签（TCGA=生存分位数代理；BeatAML=诱导治疗反应）",
   "n": 480
  },
  {
   "name": "null_permutation",
   "is_baseline": true,
   "what": "两队列各自标签置换 1000 次的零模型 —— 没有它，复制数量无从判断",
   "data_space": "AML 患者层表达谱：TCGA-LAML (Xena HiSeqV2) 与 BeatAML (cBioPortal RNA-seq)",
   "truth_source": "各队列自带的耐药/敏感分组标签（TCGA=生存分位数代理；BeatAML=诱导治疗反应）",
   "n": 1000
  }
 ],
 "out_of_scope": [
  "Venetoclax/Azacitidine 专属药敏标签（公开队列里拿不到，本轮用诱导治疗反应与生存代理）",
  "单细胞层面",
  "功能验证",
  "临床决策建议"
 ],
 "headline": [
  {
   "metric": "跨队列复制成功基因数",
   "value": 25,
   "source": "work/results.json",
   "computed_by": "work/experiment.py (Mann-Whitney + BH + 方向比对)",
   "recheck": {
    "by": "audit_delivery.py 从 replicated 明细逐条重数并重验三项条件",
    "value": 25
   }
  },
  {
   "metric": "零模型经验 p",
   "value": 0.0,
   "source": "work/results.json",
   "computed_by": "work/experiment.py (1000 次标签置换)",
   "recheck": {
    "by": "audit_delivery.py 从 null_distribution 原始数组重算",
    "value": 0.0
   }
  }
 ],
 "_design_change": {
  "at": "2026-08-26T16:50:00Z（仍在跑之前）",
  "what": "把发现/复制的方向对调：原计划 BeatAML 发现→TCGA 复制，改为 TCGA 全基因组发现→BeatAML 复制。",
  "why": "BeatAML 全基因组表达只能走 API 逐基因取，成本高；TCGA 矩阵已在本地可全基因组扫。而且复制队列用真实诱导治疗反应标签（而非生存代理），复制成功的说服力更强。",
  "note": "H1/H2 的判定阈值一个字没改。"
 },
 "audit_command": [
  "/usr/bin/python3",
  "audit_delivery.py"
 ]
}