<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>georicl日志</title><description>杂七杂八</description><link>https://georicl.cn/</link><language>zh_CN</language><item><title>SNP-VGAE 实验流程概览</title><link>https://georicl.cn/posts/snp-vage/snp-vage/</link><guid isPermaLink="true">https://georicl.cn/posts/snp-vage/snp-vage/</guid><description>使用SNP-VAE + VAGE, 基于变分推断与图卷积网络GCN的用于GWAS估计上位效应的方法</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;SNP － VGAE总述&lt;/h1&gt;
&lt;p&gt;在GWAS分析中，当前所有泛用的分析方法都基于线性或线性混合模型进行估计，主要检测出存在&lt;strong&gt;简单加性效应&lt;/strong&gt;的分子标记/SNP位点，但在实际生物学实践中，影响部分性状（如生长）的核心是某些关键的分子标记／SNP标记点位（上位性效应）， 其表型的差异并非完全遵循简单加性效应的影响，因此本文探讨使用变分推断的与基于图卷积的方法寻找可能存在的上位性效应的分子标记／SNP标记点位。&lt;/p&gt;
&lt;p&gt;该实验项目仓库位于&lt;br /&gt;
::github{repo=&quot;Georicl/SNP-VGAE&quot;}&lt;/p&gt;
&lt;h2&gt;技术路线&lt;/h2&gt;
&lt;p&gt;SNP-VGAE 的整体技术路线采用五模块流水线设计（M0–M5），从原始基因型数据到最终的表型预测与 SNP 归因，各环节紧密衔接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据输入层（M0）&lt;/strong&gt;：输入为 PLINK 格式的基因型数据（&lt;code&gt;.bed/.bim/.fam&lt;/code&gt;）、GCTA 输出的基因组关系矩阵（GRM）以及表型/协变量文件。其中 C++ 层（基于 Eigen 库）负责高效解析 PLINK 二进制文件，通过位运算直接解码 2-bit 基因型编码；Python 层（NumPy）完成 GRM 下三角矩阵重建、表型对齐与协变量加载，并提供统一的数据接口供下游模块消费。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SNP 预训练层（M1）&lt;/strong&gt;：对每个 SNP 的跨样本基因型向量进行非线性降维。采用变分自编码器（VAE），将高维稀疏的基因型模式压缩为低维稠密的 SNP 嵌入向量（$D_{snp}$ 维）。预训练不依赖表型标签，所有交叉验证折共享同一套嵌入，避免数据泄漏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图构建层（M2）&lt;/strong&gt;：基于 GRM 矩阵构建样本间的 KNN 稀疏邻接图——对每个样本取遗传相似度最高的 K 个近邻作为边，边权重即为 GRM 值，并添加自环与 GCN 对称归一化。同时将基因型矩阵与 SNP 嵌入通过一次矩阵乘法（$X = G \times E$）聚合为节点特征，完全兼容 MPS 加速。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型训练层（M3）&lt;/strong&gt;：采用变分图自编码器（VGAE）进行联合训练。GCN 编码器通过纯 &lt;code&gt;torch.sparse.mm&lt;/code&gt; 实现消息传播，不依赖 PyTorch Geometric（PyG），彻底规避了 PyG 在 Apple MPS 后端的 scatter/gather 死锁问题。训练采用多任务联合损失：边重建损失（BCE，保持图拓扑结构）+ 表型预测损失（MSE，监督信号）+ KL 散度正则（约束隐空间分布）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出层（M4–M5）&lt;/strong&gt;：训练完成后，一方面输出个体表型预测值；另一方面通过线性反投影将 VGAE 的梯度精确分解回 SNP 空间，得到每个 SNP 对表型的贡献分数，从而识别出可能存在上位性效应的关键标记。外层包裹 K-fold 交叉验证与置换检验，确保结果的统计显著性。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;graph TB
    subgraph M0[&quot;M0 · 数据输入层&quot;]
        PLINK[&quot;PLINK .bed/.bim/.fam&quot;]
        GRM[&quot;GCTA GRM 矩阵&quot;]
        PHENO[&quot;表型 / 协变量&quot;]
        CPP[&quot;C++ PlinkReader&amp;lt;br/&amp;gt;位运算解码 2-bit&quot;]
        PY[&quot;Python + NumPy&amp;lt;br/&amp;gt;数据加载与质控&quot;]
        PLINK --&amp;gt; CPP
        GRM --&amp;gt; PY
        PHENO --&amp;gt; PY
    end

    subgraph M1[&quot;M1 · SNP 预训练层&quot;]
        VAE[&quot;VAE 预训练&amp;lt;br/&amp;gt;非线性降维&quot;]
        EMB[&quot;SNP 嵌入 E (M, D_snp)&quot;]
        VAE --&amp;gt; EMB
    end

    subgraph M2[&quot;M2 · 图构建层&quot;]
        KNN[&quot;GRM → KNN 稀疏邻接图&amp;lt;br/&amp;gt;GCN 对称归一化&quot;]
        FEAT[&quot;节点特征聚合&amp;lt;br/&amp;gt;X = G × E&quot;]
        GRM --&amp;gt; KNN
        EMB --&amp;gt; FEAT
    end

    subgraph M3[&quot;M3 · 模型训练层&quot;]
        GCN[&quot;GCN 编码器&amp;lt;br/&amp;gt;torch.sparse.mm&quot;]
        LOSS[&quot;联合损失&amp;lt;br/&amp;gt;BCE(边) + MSE(表型) + KL&quot;]
        VGAE[&quot;VGAE 隐表示 Z&quot;]
        GCN --&amp;gt; LOSS
        LOSS --&amp;gt; VGAE
    end

    subgraph M4[&quot;M4–M5 · 输出层&quot;]
        PRED[&quot;个体表型预测&quot;]
        ATTR[&quot;SNP 归因分析&amp;lt;br/&amp;gt;线性反投影&quot;]
        CV[&quot;K-fold CV + 置换检验&quot;]
        VGAE --&amp;gt; PRED
        VGAE --&amp;gt; ATTR
        PRED --&amp;gt; CV
        ATTR --&amp;gt; CV
    end

    CPP --&amp;gt; VAE
    PY --&amp;gt; KNN
    PY --&amp;gt; FEAT
    KNN --&amp;gt; GCN
    FEAT --&amp;gt; GCN
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;整个技术路线的核心特点在于：所有图操作均基于 &lt;code&gt;torch.sparse.mm&lt;/code&gt; 实现，完全绕开 PyG 依赖，确保在 Apple Silicon MPS 上可原生加速；同时通过 VAE 预训练与 VGAE 联合训练的两阶段策略，在降维压缩与信息保留之间取得了良好的平衡。&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;第一部分：分子标记嵌入&lt;/h1&gt;
&lt;p&gt;对于给定N个样本的M个SNP, 在一般情况下SNP的数量远大于样本数（$M &amp;gt;&amp;gt; N$），并且样本的待检测表型并不由简单加性效应决定（如生长性状中只有少数关键基因的特定表达偏差导致产生差异），此时位点突变的总体数量并非是影响表型的关键因素，而某个关键位点的突变带来的影响则更为关键（表现在部分样本在显著的表型中可能仅有极少数的部分标记中可以检出同一个变异），此时基于简单加性效应的线性混合模型都失效，无法&lt;strong&gt;很好的估计&lt;/strong&gt;出这一部分存在其他效应的标记点位，但这部分标记点位往往发挥重要的作用。&lt;br /&gt;
对此我提出一个构想：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对于一个标记数量远大于样本数的情况，在不区分具体效应，而只评估SNP对表型产生的贡献度时，可以对SNP进行降维，对于一个输入维度为M的特征向量（每样本的标记数量），可以对其进行非线性的映射，使得存在数量更低的其他效应但可能具有显著联系的分子标记在降维后比重提高，更易于被识别（更主要的目的是试试这个技术是否可以降低设备分析的负担）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;处理目的&lt;/h2&gt;
&lt;p&gt;根据以上目标我构建了目的模型 VAE，一个带约束的特征向量压缩器，并对压缩向量$z$进行约束，使得其逐渐逼近正态分布，此时编码器不直接输出确定的压缩向量$z$，而是输出&lt;strong&gt;输入向量的均值$\mu$与输入向量的对数方差$\log\sigma^2$，对数方差使得该采样可导，可以使用梯度下降的策略对其进行参数优化。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;技术路线&lt;/h3&gt;
&lt;p&gt;以下流程图展示了 SNP-VAE 预训练模块的完整数据处理管线——从原始 PLINK 基因型文件到低维稠密 SNP 嵌入向量的全链路：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;graph LR
    subgraph 数据加载
        A[&quot;PLINK .bed/.bim/.fam&quot;] --&amp;gt; B[&quot;C++ PlinkReader&amp;lt;br/&amp;gt;位运算解码&quot;]
        B --&amp;gt; C[&quot;Python / NumPy&amp;lt;br/&amp;gt;按 SNP 维重组 (M, N)&quot;]
    end

    subgraph VAE预训练
        C --&amp;gt; D[&quot;逐 SNP 输入编码器&amp;lt;br/&amp;gt;Linear → ELU → Linear → ELU&quot;]
        D --&amp;gt; E[&quot;μ 与 log σ²&amp;lt;br/&amp;gt;线性映射至 d_snp 维&quot;]
        E --&amp;gt; F[&quot;重参数化采样&amp;lt;br/&amp;gt;z = μ + σ · ε&quot;]
        F --&amp;gt; G[&quot;解码器重建&amp;lt;br/&amp;gt;Linear → ELU → Linear → ELU → Linear&quot;]
    end

    subgraph 约束与输出
        G --&amp;gt; H[&quot;联合损失&amp;lt;br/&amp;gt;MSE(重建) + β · KL(散度)&quot;]
        H --&amp;gt; I[&quot;提取编码器 μ&amp;lt;br/&amp;gt;确定性 SNP 嵌入 (M, d_snp)&quot;]
    end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，预训练阶段通过最小化重建损失与 KL 散度的加权和来优化编码器与解码器参数；训练完成后，仅使用编码器输出的均值 $\mu$ 作为最终的 SNP 嵌入（关闭随机采样，保证确定性），供下游 VGAE 图构建模块消费。&lt;/p&gt;
&lt;h2&gt;处理输入&lt;/h2&gt;
&lt;p&gt;该模型接收产生自plink的基因型二进制文件（以SNP序）组&lt;/p&gt;
&lt;h2&gt;编码器与解码器构建&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;编码器模型构建：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# 模型： 线性层 -&amp;gt; ELU激活层 -&amp;gt; 线性层 -&amp;gt; ELU激活层
nn.Sequential(
  nn.Linear(num_samples, hidden_dim),
  nn.ELU(),
  nn.Linear(hidden_dim, mid_dim),
  nn.ELU(),
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;经过编码器后得到中间的压缩向量$z$，但此时的压缩向量$z$无法正常使用（未添加约束）。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对中间向量$z$计算均值与对数方差，用于计算损失与提取嵌入：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# 得到的是一个指定压缩后的维度（默认为64维）
mu = nn.Linear(mid_dim, d_snp)
logvar = nn.Linear(mid_dim, d_snp)

# 数学原理: z = μ + σ · ε, 此时 ε ~ N(0, 1)
std = torch.exp(0.5 * logvar)
eps = torch.randn_like(std)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上述代码中的 &lt;code&gt;std&lt;/code&gt; 与 &lt;code&gt;eps&lt;/code&gt; 共同完成了&lt;strong&gt;重参数化技巧&lt;/strong&gt;（reparameterization trick）。直接对 $z \sim \mathcal{N}(\mu, \sigma^2)$ 采样会引入一个与模型参数无关的随机节点，导致梯度无法从解码器回传至编码器——采样操作不可导。重参数化将随机性外移到 $\varepsilon \sim \mathcal{N}(0, 1)$，使采样结果 $z = \mu + \sigma \cdot \varepsilon$ 对 $\mu$ 和 $\sigma$ 均可导，从而允许使用标准的反向传播与梯度下降进行端到端优化。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;得到最终的嵌入向量 $z$：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;z = mu + std * eps   # z 的形状为 (batch, d_snp)，默认 d_snp=64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;该嵌入向量 $z$ 在后续流程中承担两个角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;计算 VAE 损失&lt;/strong&gt;：$z$ 经解码器重建后，与原始输入计算重建损失（MSE），同时 $\mu$ 与 $\log\sigma^2$ 用于计算 KL 散度正则项。总损失为 $\mathcal{L} = \mathcal{L}&lt;em&gt;{\text{recon}} + \beta \cdot \mathcal{L}&lt;/em&gt;{\text{KL}}$，其中 $\beta$ 控制隐空间正则化强度（实验中取 $\beta = 0.001$，重建质量优先）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提供 SNP 嵌入&lt;/strong&gt;：训练完成后，丢弃解码器，仅保留编码器输出的均值 $\mu$ 作为每个 SNP 的低维稠密表示（默认 64 维）。这些嵌入向量将作为下游 VGAE 图构建模块的节点特征输入，通过矩阵乘法 $X = G \times E$ 聚合为样本级节点特征。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>GWAS 工具箱：填补、精细定位与数据格式</title><link>https://georicl.cn/posts/gwas-tools-imputation-finemapping/gwas-tools-imputation-finemapping/</link><guid isPermaLink="true">https://georicl.cn/posts/gwas-tools-imputation-finemapping/gwas-tools-imputation-finemapping/</guid><description>基因型填补怎么做？精细定位在想什么？VCF、BGEN、PLINK 这些格式到底什么关系？把 GWAS 分析中最常用的工具、方法和数据格式一次理清。</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这是 GWAS 系列的第四篇。前面的文章讲了群体遗传学基础、遗传力、GWAS 的历史和分析流程。这篇聚焦三个实操层面最绕不开的东西：工具链、基因型填补与精细定位的原理，以及那些让人头大的数据格式。如果你正在做 GWAS 分析，这篇大概能帮你少踩几个坑。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;工具链全景&lt;/h2&gt;
&lt;p&gt;做 GWAS 不是打开一个软件点&quot;运行&quot;就完事的。从原始数据到最终结果，每个环节都有对应的工具，选错了工具或者用错参数，后面的结果就不可信。我按分析环节梳理一遍。&lt;/p&gt;
&lt;h3&gt;数据管理与质控：PLINK&lt;/h3&gt;
&lt;p&gt;PLINK 是 GWAS 分析的瑞士军刀，几乎所有人都会用到它。它处理的是 PLINK 二进制格式（BED/BIM/FAM），能做质控过滤、基本关联检验、LD 计算、PCA、格式转换——前面那篇里几乎所有 QC 命令都是 PLINK 的。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 一套常见的 QC 流程
plink --bfile raw_data \
  --mind 0.05 \       # 样本缺失率 &amp;lt; 5%
  --geno 0.05 \       # SNP 缺失率 &amp;lt; 5%
  --maf 0.01 \        # MAF &amp;gt; 1%
  --hwe 1e-6 \        # HWE 对照组 p &amp;gt; 1e-6
  --make-bed --out clean_data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PLINK 1.9 速度快、内存效率高，处理几十万样本没问题。PLINK 2.0 进一步支持了更多格式和更大的数据集。但它本质上是个 GLM 工具，不处理亲缘关系——需要 LMM 的时候得换工具。&lt;/p&gt;
&lt;h3&gt;亲缘关系检测：KING&lt;/h3&gt;
&lt;p&gt;判断样本间是否存在隐性亲缘关系，KING 是目前的标准工具。它基于全基因组 SNP 数据估计 IBD（Identity by Descent）共享比例，不需要家系信息。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;king -b data.bed --related --degree 2 --prefix king_output
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;$\hat{\pi} &amp;gt; 0.1875$（二级亲属以上）的样本对需要处理：要么移除其中一个，要么在 LMM 中通过 GRM 显式建模。&lt;/p&gt;
&lt;h3&gt;群体结构分析：EIGENSOFT / PLINK&lt;/h3&gt;
&lt;p&gt;PCA 是检测群体分层的标准方法。EIGENSOFT（smartpca）是老牌工具，功能全面；PLINK 内置 PCA 更方便，结果基本一致。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# LD 修剪后做 PCA
plink --bfile clean_data --indep-pairwise 50 5 0.2 --out ld_pruned
plink --bfile clean_data --extract ld_pruned.prune.in \
  --pca 20 --out pca_final
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;取前 5~20 个主成分作为关联检验的协变量，校正群体分层。&lt;/p&gt;
&lt;h3&gt;关联检验工具的选择&lt;/h3&gt;
&lt;p&gt;这是 GWAS 分析中最关键的选型决策之一。不同工具的适用场景差异很大：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;工具&lt;/th&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;适用规模&lt;/th&gt;
&lt;th&gt;核心特点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLINK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GLM&lt;/td&gt;
&lt;td&gt;小~中&lt;/td&gt;
&lt;td&gt;速度快，不处理亲缘关系，适合初步扫描&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EMMAX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;近似 LMM&lt;/td&gt;
&lt;td&gt;中&lt;/td&gt;
&lt;td&gt;通过预先计算方差组分加速，适合几千样本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GEMMA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;精确 LMM&lt;/td&gt;
&lt;td&gt;小~中&lt;/td&gt;
&lt;td&gt;精确实现，支持多种贝叶斯分析，中小规模首选&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BOLT-LMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;变分近似 LMM&lt;/td&gt;
&lt;td&gt;大（数十万~百万）&lt;/td&gt;
&lt;td&gt;专为 Biobank 规模设计，内存效率高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SAIGE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;鞍点近似&lt;/td&gt;
&lt;td&gt;大&lt;/td&gt;
&lt;td&gt;处理极端 case-control 不平衡（如 1:1000）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;fastGWA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;谱分解 LMM&lt;/td&gt;
&lt;td&gt;大&lt;/td&gt;
&lt;td&gt;GCTA 生态，利用稀疏 GRM 加速&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;REGENIE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;两步法&lt;/td&gt;
&lt;td&gt;大&lt;/td&gt;
&lt;td&gt;第一步拟合零模型，第二步快速扫描，内存友好&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;选型建议：样本量 &amp;lt; 5000 且无关个体，GEMMA 够用；5000~500,000，BOLT-LMM 或 REGENIE；case-control 严重不平衡，SAIGE。PLINK 的 GLM 只在不关心亲缘关系和群体结构时使用——而这在真实数据中几乎不存在。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;可视化：ggplot2 / LocusCompareR&lt;/h3&gt;
&lt;p&gt;曼哈顿图和 Q-Q 图是 GWAS 结果的标配可视化。R 的 &lt;code&gt;qqman&lt;/code&gt; 包简单直接，&lt;code&gt;ggplot2&lt;/code&gt; 更灵活。精细定位区域的可视化可以用 &lt;code&gt;LocusCompareR&lt;/code&gt;，它把关联信号和 LD 结构画在一起，非常直观。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# qqman 画曼哈顿图
library(qqman)
manhattan(gwas_results, chr = &quot;CHR&quot;, bp = &quot;BP&quot;, snp = &quot;SNP&quot;, p = &quot;P&quot;,
          genomewideline = -log10(5e-8), suggestiveline = -log10(1e-5))
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;基因型填补（Imputation）&lt;/h2&gt;
&lt;h3&gt;为什么需要填补&lt;/h3&gt;
&lt;p&gt;SNP 芯片只分型了基因组上的一部分变异——通常是 50 万到 250 万个 SNP。但人类基因组有上千万个常见变异。芯片上没有的 SNP 怎么办？&lt;/p&gt;
&lt;p&gt;答案是利用&lt;strong&gt;连锁不平衡&lt;/strong&gt;。如果芯片上的 SNP A 和未分型的 SNP B 处于高 LD（$r^2$ 接近 1），那么知道 A 的基因型，就能以很高的准确度推断 B 的基因型。这就是基因型填补的核心逻辑。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;填补的意义不只是&quot;补全缺失的 SNP&quot;。它还有两个关键作用：&lt;strong&gt;整合不同芯片平台的数据&lt;/strong&gt;（不同研究用了不同芯片，填补到同一套 SNP 集才能做 meta-analysis）和&lt;strong&gt;增加统计功效&lt;/strong&gt;（因果变异可能不在芯片上，填补后才能被检测到）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;填补的基本流程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;芯片基因型数据
    ↓
质控（前面文章讲过的 SNP/样本 QC）
    ↓
预填补质控（去除低质量 SNP、孟德尔错误等）
    ↓
与参考面板比对（phasing → imputation）
    ↓
后填补质控（过滤低质量填补结果）
    ↓
填补后的基因型数据（用于关联检验）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关键步骤有两个：&lt;strong&gt;phasing&lt;/strong&gt;（单倍型推断）和 &lt;strong&gt;imputation&lt;/strong&gt;（基因型推断）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phasing&lt;/strong&gt; 是把二倍体基因型拆分为两条单倍型的过程。芯片给出的是每个位点的基因型（0/1/2），但不知道这两个等位基因分别在哪条染色体上。SHAPEIT4 和 Eagle 2 是目前最常用的 phasing 工具，它们利用参考面板的单倍型信息和 LD 结构来推断相位。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# SHAPEIT4 phasing
shapeit4 --input chip_data.bcf --map genetic_map.txt \
  --region chr1 --output chip_phased.bcf

# 或者用 Eagle2（速度更快）
eagle --bfile chip_data --geneticMapFile map.tsv \
  --outPrefix chip_phased
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Imputation&lt;/strong&gt; 在 phasing 之后进行。Minimac4 和 IMPUTE5 是主流工具。它们将已 phasing 的芯片单倍型与参考面板对齐，利用 HMM（隐马尔可夫模型）在每个未分型位点推断最可能的基因型。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Minimac4 imputation
minimac4 --refPanel reference_panel.cpanel \
  --haps chip_phased.vcf.gz \
  --prefix output --chr 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;参考面板&lt;/h3&gt;
&lt;p&gt;填补的准确度高度依赖参考面板。常用的参考面板：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;面板&lt;/th&gt;
&lt;th&gt;样本量&lt;/th&gt;
&lt;th&gt;特点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1000 Genomes (1KGP)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2,504 人，26 个群体&lt;/td&gt;
&lt;td&gt;免费，覆盖多民族，但样本量有限，低频变异覆盖不足&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HRC (Haplotype Reference Consortium)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;32,488 人&lt;/td&gt;
&lt;td&gt;欧洲人群覆盖好，低频变异更完整&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TOPMed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;53,831 人（WGS）&lt;/td&gt;
&lt;td&gt;目前最大的 WGS 参考面板，稀有变异覆盖最好，多民族&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UK Biobank AIL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~40,000 人&lt;/td&gt;
&lt;td&gt;英国人群专用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ChinaMAP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;中国人群&lt;/td&gt;
&lt;td&gt;中国人群特异性面板，东亚人群填补效果更好&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;选择参考面板的原则：样本与参考面板的祖先背景要匹配。欧洲样本用 HRC 或 TOPMed，东亚样本用 ChinaMAP 或 1KGP 的 EAS 群体。用错参考面板会导致填补准确度大幅下降——尤其是低频变异。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;TOPMed 目前是综合表现最好的面板，因为它样本量大且是全基因组测序数据，覆盖了从常见到稀有的变异。&lt;/p&gt;
&lt;h3&gt;填补质量评估&lt;/h3&gt;
&lt;p&gt;填补不是万能的——推断出来的基因型有不确定性。每个填补 SNP 都有一个质量指标，最常用的是 &lt;strong&gt;info score&lt;/strong&gt;（或 $R^2$），衡量填补基因型与真实基因型的相关度。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;info score 解读：
  &amp;gt; 0.8  → 高质量，可以放心使用
  0.3~0.8 → 中等质量，谨慎使用
  &amp;lt; 0.3  → 低质量，建议过滤
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Minimac4 输出的 .info 文件中包含 Rsq 列
# 先用 head -1 确认 Rsq 所在列号，再过滤（假设 Rsq 在第 5 列）
awk &apos;NR==1 || $5 &amp;gt; 0.4&apos; output.chr1.info &amp;gt; output.chr1.filtered.info
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另一个常用指标是 &lt;strong&gt;concordance rate&lt;/strong&gt;——在有真实基因型验证的位点上，填补基因型与真实基因型的一致率。通常 &amp;gt; 95% 认为可靠。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个容易犯的错误：不过滤低质量填补结果就直接做关联检验。低 info score 的 SNP 会引入大量噪声，降低统计功效，甚至产生假阳性。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;填补后的关联检验&lt;/h3&gt;
&lt;p&gt;填补后的数据通常以 dosage 格式存储（每个 SNP 的效应等位基因期望拷贝数，0~2 之间的连续值）。不同工具读取 dosage 数据的方式不同：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# PLINK 2 读取 BGEN dosage
plink2 --bgen output.chr1.bgen ref-first \
  --sample output.chr1.sample \
  --glm --out assoc_result

# BOLT-LMM 读取 BGEN
bolt --bfile clean_data --bgenFile output.chr1.bgen \
  --samples output.chr1.sample --lmm --statsFile bolt_results.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;精细定位（Fine-mapping）&lt;/h2&gt;
&lt;h3&gt;为什么需要精细定位&lt;/h3&gt;
&lt;p&gt;GWAS 发现了一个显著位点，然后呢？&lt;/p&gt;
&lt;p&gt;问题在于：GWAS 告诉你的是&quot;这个区域有信号&quot;，而不是&quot;这个 SNP 是因果变异&quot;。由于 LD 的存在，一个显著位点周围可能有几十甚至上百个 SNP 都与它高度相关（$r^2 &amp;gt; 0.8$），它们都会显示出类似的关联信号。这些 SNP 中通常只有少数（甚至只有一个）是真正的因果变异，其余只是&quot;搭便车&quot;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;精细定位的目标：在 GWAS 显著位点区域，区分因果变异和仅因 LD 而显著的标记，将信号缩小到尽可能小的候选集。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;贝叶斯精细定位&lt;/h3&gt;
&lt;p&gt;目前主流的精细定位方法都是贝叶斯框架。核心思想是：为每个 SNP 计算一个&lt;strong&gt;后验包含概率（Posterior Inclusion Probability, PIP）&lt;/strong&gt;——即该 SNP 是因果变异的后验概率。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FINEMAP&lt;/strong&gt; 是最广泛使用的精细定位工具。它使用 shotgun stochastic search 算法在高维模型空间中搜索，支持单个位点有多个因果变异的假设（single/multi-causal）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# FINEMAP 输入
# 1. z-score 文件（每个 SNP 的关联统计量）
# 2. LD 矩阵（该区域的 SNP 间 r^2）
# 3. 配置文件（指定因果变异数量等）

finemap --in-files finemap_config.txt --n-causal-snps 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;FINEMAP 的输出包括每个 SNP 的 PIP 和 &lt;strong&gt;credible set&lt;/strong&gt;（可信集）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SuSiE&lt;/strong&gt;（Sum of Single Effects）是另一个常用工具，它用了一种不同的算法——iterative Bayesian stepwise regression。优势是速度更快，在多个因果变异的场景下表现稳定，且不需要预先指定因果变异数量。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# SuSiE 在 R 中运行
library(susieR)
result &amp;lt;- susie_rss(z = z_scores, R = ld_matrix, L = 10)
# L 是最大因果变异数，SuSiE 会自动选择实际需要的数量
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;可信集（Credible Set）&lt;/h3&gt;
&lt;p&gt;可信集是精细定位的核心输出。一个 95% 可信集是满足以下条件的最小 SNP 集合：该集合包含所有因果变异的总后验概率 ≥ 95%。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;假设某个区域有 200 个 SNP，按 PIP 排序：

SNP_1:  PIP = 0.45  ← 累积 0.45
SNP_2:  PIP = 0.20  ← 累积 0.65
SNP_3:  PIP = 0.12  ← 累积 0.77
SNP_4:  PIP = 0.08  ← 累积 0.85
SNP_5:  PIP = 0.06  ← 累积 0.91
SNP_6:  PIP = 0.04  ← 累积 0.95  ← 95% 可信集截止
SNP_7:  PIP = 0.02
...

→ 95% 可信集 = {SNP_1, SNP_2, SNP_3, SNP_4, SNP_5, SNP_6}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可信集越小，精细定位的效果越好。理想情况下，可信集只包含 1~3 个 SNP，可以直接用于功能验证。但在高 LD 区域，可信集可能有几十个 SNP——这说明仅靠统计方法无法进一步区分，需要结合功能实验。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个重要的认识：可信集给出的是&lt;strong&gt;统计上的候选&lt;/strong&gt;，不是因果变异的确认。最终确认因果变异需要功能实验（如 CRISPR 编辑、报告基因实验、eQTL 共定位分析）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;跨群体精细定位&lt;/h3&gt;
&lt;p&gt;不同人群的 LD 模式不同。如果一个因果变异在欧洲人群中与 50 个 SNP 处于高 LD，但在非洲人群中只与 10 个 SNP 处于高 LD（因为非洲人群的 LD 范围更小），那么整合两个群体的数据可以显著缩小可信集。&lt;/p&gt;
&lt;p&gt;这就是跨群体精细定位的逻辑。实践中，可以使用 MANTRA（基于贝叶斯模型平均）或将多个群体的 summary statistics 联合输入 SuSiE/FINEMAP。前提是不同群体间共享相同的因果变异（即效应方向一致）。&lt;/p&gt;
&lt;h3&gt;共定位分析&lt;/h3&gt;
&lt;p&gt;精细定位告诉你&quot;这个区域有哪些候选因果变异&quot;，共定位分析（colocalization）则回答另一个问题：&lt;strong&gt;GWAS 信号和 eQTL 信号是否共享同一个因果变异？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果某个 GWAS 显著位点附近的 SNP 同时也是某个基因的表达调控位点（eQTL），且两者指向同一个因果变异，那么该基因就有很强的功能候选证据。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;coloc&lt;/code&gt; 是最常用的共定位工具（R 包），它比较两个关联信号（如 GWAS 和 eQTL）的后验概率，计算它们共享因果变异的概率（PP4）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;library(coloc)
result &amp;lt;- coloc.abf(dataset1 = gwas_signals, dataset2 = eqtl_signals)
# PP4 &amp;gt; 0.75 通常认为有共定位证据
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;数据格式&lt;/h2&gt;
&lt;p&gt;GWAS 分析涉及的数据格式可能是新手最头疼的部分。不同工具要求不同格式，格式之间的转换又各有讲究。我把最常用的几种整理一下。&lt;/p&gt;
&lt;h3&gt;PLINK 二进制格式：BED/BIM/FAM&lt;/h3&gt;
&lt;p&gt;这是 GWAS 分析中最基础的文件格式，几乎所有工具都支持或能转换。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;文件&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.bed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;基因型数据&lt;/td&gt;
&lt;td&gt;二进制编码，每个 SNP 每个样本占 2 bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.bim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SNP 信息&lt;/td&gt;
&lt;td&gt;文本文件，6 列：染色体、SNP ID、遗传距离、物理位置、参考等位基因、交替等位基因&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.fam&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;样本信息&lt;/td&gt;
&lt;td&gt;文本文件，6 列：家系 ID、个体 ID、父本 ID、母本 ID、性别、表型&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;PLINK 格式存储的是&lt;strong&gt;hard call&lt;/strong&gt;基因型——每个样本在每个 SNP 上被明确编码为 0、1 或 2（效应等位基因拷贝数）。这对芯片数据足够，但不适合存储填补后的 dosage 数据。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# .bim 示例
1   rs12345   0   10583   A   G
1   rs67890   0   10612   C   T

# .fam 示例
FAM001  IND001  0  0  1  -9
FAM001  IND002  0  0  2  -9
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;VCF（Variant Call Format）&lt;/h3&gt;
&lt;p&gt;VCF 是基因组变异的通用交换格式，测序数据的标准输出。它存储的不是基因型剂量，而是每个样本在每个位点上的&lt;strong&gt;实际基因型调用结果&lt;/strong&gt;（GT field）以及质量指标。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;##fileformat=VCFv4.2
##INFO=&amp;lt;ID=AF,Number=A,Type=Float,Description=&quot;Allele Frequency&quot;&amp;gt;
##FORMAT=&amp;lt;ID=GT,Number=1,Type=String,Description=&quot;Genotype&quot;&amp;gt;
##FORMAT=&amp;lt;ID=DS,Number=1,Type=Float,Description=&quot;Dosage&quot;&amp;gt;
#CHROM  POS     ID      REF  ALT  QUAL  FILTER  INFO          FORMAT        Sample1   Sample2
1       10583   rs12345 A    G    .     PASS    AF=0.3        GT:DS         0/1:1.02  1/1:1.95
1       10612   rs67890 C    T    .     PASS    AF=0.15       GT:DS         0/0:0.03  0/1:0.87
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;VCF 的优点是通用性强——几乎所有基因组学工具都能读取。缺点是文件体积大（即使是 bgzip + tabix 压缩后），且对 dosage 数据的支持不如 BGEN 高效。&lt;/p&gt;
&lt;h3&gt;BGEN 格式&lt;/h3&gt;
&lt;p&gt;BGEN 是专门为&lt;strong&gt;大规模基因型数据&lt;/strong&gt;设计的二进制格式，由 UK Biobank 项目推动。它支持存储 &lt;strong&gt;dosage 数据&lt;/strong&gt;（填补后的概率基因型）和 &lt;strong&gt;hard call 数据&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;BGEN 的核心优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;紧凑&lt;/strong&gt;：比等价的 VCF 小很多，适合存储数百万样本 × 数千万 SNP 的数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持概率基因型&lt;/strong&gt;：每个样本在每个 SNP 上可以存储 0/1/2 的期望值（dosage）或完整的基因型概率（P(0), P(1), P(2)）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速随机访问&lt;/strong&gt;：配合 &lt;code&gt;.bgi&lt;/code&gt; 索引文件，可以快速提取特定区域的数据&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;BGEN v1.2 结构：
  Header → Variant Data Blocks → (每个 block 包含多个 SNP 的基因型数据)

每个 SNP 的数据：
  Variant ID + Position + Alleles → Genotype Probabilities / Dosage
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;UK Biobank 的填补数据以 BGEN 格式发布，每个染色体一个 &lt;code&gt;.bgen&lt;/code&gt; 文件 + 一个 &lt;code&gt;.bgen.bgi&lt;/code&gt; 索引文件 + 一个 &lt;code&gt;.sample&lt;/code&gt; 文件。&lt;/p&gt;
&lt;h3&gt;格式转换关系&lt;/h3&gt;
&lt;p&gt;不同工具要求不同格式，转换是家常便饭：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;芯片原始数据 (.bed/.bim/.fam)
    │
    ├──→ PLINK → VCF（plink --recode vcf）
    │
    ├──→ SHAPEIT4 → phased VCF / BCF
    │
    ├──→ Minimac4 → .bgen + .vcf.gz
    │
    └──→ IMPUTE5 → .vcf.gz
    
关联检验工具读取：
    PLINK 2    ← .bed / .bgen / .vcf
    BOLT-LMM   ← .bed + .bgen
    SAIGE      ← .bgen / .vcf / SAIGE 专用格式
    GEMMA      ← .bed / .vcf
    REGENIE    ← .bed / .bgen
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;常用的转换命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# PLINK → VCF
plink2 --bfile data --recode vcf-bgz --out data.vcf

# VCF → PLINK
plink2 --vcf data.vcf --make-bed --out data

# BGEN → PLINK（取 hard call）
plink2 --bgen data.bgen ref-first --sample data.sample \
  --make-bed --out data_hard

# PLINK → BGEN（需要 qctool）
qctool -g data.bed data.bim data.fam \
  -og data.bgen
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Dosage 数据&lt;/h3&gt;
&lt;p&gt;填补后的数据通常以 dosage 形式存储。Dosage 是效应等位基因的&lt;strong&gt;期望拷贝数&lt;/strong&gt;，取值 0~2 之间的连续值。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;基因型概率：P(AA) = 0.05, P(AB) = 0.85, P(BB) = 0.10
Dosage = 0 × 0.05 + 1 × 0.85 + 2 × 0.10 = 1.05
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dosage 不是整数——这反映了填补的不确定性。info score 低的 SNP，其 dosage 值往往更接近整数（因为不确定性被&quot;模糊化&quot;了），但这并不意味着它更可靠——恰恰相反。&lt;/p&gt;
&lt;p&gt;Minimac4 输出的 BGEN 文件存储 dosage 数据，比旧的 Minimac3 &lt;code&gt;.dosage.gz&lt;/code&gt; 文本格式紧凑得多。大样本时 BGEN 是唯一实际可用的选择。&lt;/p&gt;
&lt;h3&gt;其他常见格式&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;格式&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PED/MAP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PLINK 文本格式&lt;/td&gt;
&lt;td&gt;PED 存样本+基因型（文本），MAP 存 SNP 位置。已被二进制格式取代&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TPED/TFAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PLINK 转置格式&lt;/td&gt;
&lt;td&gt;每行一个 SNP，适合按 SNP 提取数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;.bgen.bgi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BGEN 索引&lt;/td&gt;
&lt;td&gt;配合 BGEN 文件使用，支持快速区域查询&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;.sample&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BGEN 样本信息&lt;/td&gt;
&lt;td&gt;两列：样本 ID 和分组（通常是 &quot;group&quot; 列）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SAIGE 输出&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;关联结果&lt;/td&gt;
&lt;td&gt;包含 SNP、染色体、位置、等位基因、p 值、效应量等&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;实操建议&lt;/h2&gt;
&lt;p&gt;最后整理一些做 GWAS 时容易忽略但很重要的实操细节：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 填补前一定要做好 QC&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;填补工具假设输入的基因型数据是高质量的。如果 QC 不严格（比如保留了低检出率的 SNP 或样本），填补结果会被污染，而且这种污染在下游分析中很难被发现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 注意等位基因编码的一致性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不同芯片、不同参考面板可能使用不同的等位基因编码（forward strand vs forward/reverse）。填补前需要用工具（如 &lt;code&gt;--a1-allele&lt;/code&gt; 或 &lt;code&gt;--flip&lt;/code&gt;）确保编码一致，否则会出现等位基因翻转导致的填补失败。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 精细定位需要高质量的 LD 矩阵&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FINEMAP 和 SuSiE 都需要输入该区域的 LD 矩阵。LD 矩阵应该来自与 GWAS 相同的群体。如果 GWAS 用的是混合群体，LD 矩阵也应该用混合群体计算。用错 LD 参考会导致 PIP 估计不准。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 可信集大小不等于因果变异数量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;95% 可信集包含 5 个 SNP，不意味着有 5 个因果变异——很可能只有 1 个因果变异，但 LD 结构使得其他 4 个 SNP 也有不可忽略的 PIP。FINEMAP 和 SuSiE 可以指定因果变异数量，但这个参数需要根据生物学先验和统计证据谨慎选择。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 大样本 GWAS 的 $\lambda_{GC}$ 解读&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;样本量超过 10 万时，$\lambda_{GC}$ 几乎必然大于 1.05，但这不一定是群体分层——可能只是真实的多基因信号。此时应该用 LD Score 回归的 intercept 来判断是否存在群体分层（intercept 接近 1.0 说明分层不严重）。&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;工具、方法和格式是 GWAS 的&quot;基础设施&quot;。理解了填补的原理，就知道为什么参考面板的选择那么重要；理解了精细定位的逻辑，就不会把可信集当成因果变异的确认；搞清楚了数据格式的关系，就不会在工具之间转换时踩坑。下一篇会进入统计建模的核心——从 GLM 到 LMM 的推导。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>GWAS 的数学引擎：从线性回归到混合线性模型</title><link>https://georicl.cn/posts/gwas-math-lmm/gwas-math-lmm/</link><guid isPermaLink="true">https://georicl.cn/posts/gwas-math-lmm/gwas-math-lmm/</guid><description>从 OLS 到 GLM 再到 LMM——GWAS 统计模型的完整推导，GRM 构建、REML 估计、大规模计算策略，以及工具选择</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这是 GWAS 系列的第三篇。前两篇分别讲了群体遗传学基础、GWAS 的起源与流程、遗传力与多基因模型。这篇进入统计建模的核心——从最简单的线性回归出发，一步步推到混合线性模型（LMM），把中间的数学逻辑串起来。公式不少，但每一个都有它出现的理由。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;GWAS 本质上是什么&lt;/h2&gt;
&lt;p&gt;GWAS 做的事情用一句话概括：对基因组上每个 SNP 分别做一次回归，检验它的效应是否显著不为零。&lt;/p&gt;
&lt;p&gt;基因组上通常有 $10^6 \sim 10^7$ 个 SNP，每个都要单独检验——这是一个&lt;strong&gt;大规模单变量回归问题&lt;/strong&gt;。由于同时检验这么多假设，需要多重检验校正。全基因组显著性阈值通常设为：&lt;/p&gt;
&lt;p&gt;$$
\alpha_{GWAS} = \frac{0.05}{10^6} = 5 \times 10^{-8}
$$&lt;/p&gt;
&lt;p&gt;这个数字意味着：一个 SNP 的 p 值必须小于五十万分之一，才能被认为是&quot;显著的&quot;。门槛极高，但考虑到检验次数和 LD 的存在，这是合理的。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;从最简单的回归开始&lt;/h2&gt;
&lt;h3&gt;连续表型：线性回归&lt;/h3&gt;
&lt;p&gt;对于连续表型 $y$ 和 SNP $j$，最朴素的模型是：&lt;/p&gt;
&lt;p&gt;$$
y_i = \mu + \beta_j x_{ij} + e_i, \quad e_i \sim N(0, \sigma^2_e)
$$&lt;/p&gt;
&lt;p&gt;其中 $y_i$ 是第 $i$ 个个体的表型值，$x_{ij}$ 是该个体在 SNP $j$ 上的基因型编码（加性模型下为 0/1/2，即效应等位基因拷贝数），$\beta_j$ 是我们想估计的 SNP 加性效应量。&lt;/p&gt;
&lt;p&gt;用矩阵形式写：&lt;/p&gt;
&lt;p&gt;$$
y = \mathbf{1}\mu + x_j\beta_j + e
$$&lt;/p&gt;
&lt;p&gt;OLS 给出：&lt;/p&gt;
&lt;p&gt;$$
\hat{\beta}_j = \frac{\text{Cov}(x_j, y)}{\text{Var}(x_j)}
$$&lt;/p&gt;
&lt;p&gt;标准误为：&lt;/p&gt;
&lt;p&gt;$$
SE(\hat{\beta}_j) = \frac{\hat{\sigma}&lt;em&gt;e}{\sqrt{\sum_i (x&lt;/em&gt;{ij} - \bar{x}_j)^2}}
$$&lt;/p&gt;
&lt;p&gt;检验 $H_0: \beta_j = 0$，用 Wald 检验或 t 检验：&lt;/p&gt;
&lt;p&gt;$$
t_j = \frac{\hat{\beta}_j}{SE(\hat{\beta}&lt;em&gt;j)} \sim t&lt;/em&gt;{n-2}
$$&lt;/p&gt;
&lt;p&gt;大样本下近似为标准正态。每个 SNP 解释的表型方差比例为 $R^2_j = \text{Var}(\hat{\beta}_j x_j) / \text{Var}(y)$。&lt;/p&gt;
&lt;h3&gt;二分类表型：逻辑回归&lt;/h3&gt;
&lt;p&gt;case-control 设计中，$y_i \in {0, 1}$，换成逻辑回归：&lt;/p&gt;
&lt;p&gt;$$
\text{logit}(P(y_i = 1)) = \mu + \beta_j x_{ij}
$$&lt;/p&gt;
&lt;p&gt;$\beta_j$ 的含义是：效应等位基因每增加一个拷贝，疾病的&lt;strong&gt;对数优势比&lt;/strong&gt;增加 $\beta_j$。对应的 OR 值为 $e^{\beta_j}$。&lt;/p&gt;
&lt;p&gt;逻辑回归用极大似然估计（MLE），通过迭代重加权最小二乘（IRLS）求解。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在极端不平衡的 case-control 比例下（如 1:100），标准逻辑回归的 p 值会膨胀。SAIGE 通过鞍点近似（saddlepoint approximation）解决了这个问题——后面还会提到。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;加入协变量：GLM&lt;/h2&gt;
&lt;p&gt;单纯的 SNP→表型回归有个问题：它无法处理已知的混杂因素。年龄、性别、群体结构——这些都会影响表型，如果不控制，SNP 的&quot;效应&quot;可能只是这些混杂因素的投影。&lt;/p&gt;
&lt;p&gt;广义线性模型（GLM）把协变量纳入：&lt;/p&gt;
&lt;p&gt;$$
g(E[y]) = \mu + \beta_j x_j + C\alpha
$$&lt;/p&gt;
&lt;p&gt;其中 $C$ 是 $n \times k$ 的协变量矩阵，$\alpha$ 是协变量效应向量。对于连续表型（identity link），矩阵形式为：&lt;/p&gt;
&lt;p&gt;$$
y = X\beta + e, \quad e \sim N(0, \sigma^2_e I)
$$&lt;/p&gt;
&lt;p&gt;设计矩阵 $X = [\mathbf{1}, x_j, C]$ 包含截距、SNP 基因型和所有协变量。OLS 解为：&lt;/p&gt;
&lt;p&gt;$$
\hat{\beta} = (X^T X)^{-1} X^T y
$$&lt;/p&gt;
&lt;p&gt;$$
\text{Var}(\hat{\beta}) = \sigma^2_e (X^T X)^{-1}
$$&lt;/p&gt;
&lt;p&gt;PLINK 的 &lt;code&gt;--glm&lt;/code&gt; 命令就是这个模型。&lt;/p&gt;
&lt;h3&gt;协变量的局限&lt;/h3&gt;
&lt;p&gt;纳入前几个主成分（PCs）可以消除&lt;strong&gt;固定方向&lt;/strong&gt;的群体差异。但有些东西是协变量搞不定的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个体间复杂的亲缘关系（隐性近亲、半同胞）&lt;/li&gt;
&lt;li&gt;高维多基因背景效应&lt;/li&gt;
&lt;li&gt;局部祖先差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些效应的维度太高、结构太复杂，没法用几个固定协变量来描述。这正是引入&lt;strong&gt;随机效应&lt;/strong&gt;的动机。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;混合线性模型（LMM）&lt;/h2&gt;
&lt;h3&gt;核心思想&lt;/h3&gt;
&lt;p&gt;GLM 把所有效应都当作&lt;strong&gt;固定效应&lt;/strong&gt;——我们要直接估计它们的取值。但在多基因模型下，基因组中有大量微效位点共同影响表型。逐个建模在计算上不可行（$p \gg n$），在概念上也不合理——我们并不关心每个微效位点的具体效应值，只关心它们的&lt;strong&gt;集体贡献&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;LMM 的做法是：把所有 SNP 的集体效应打包成一个&lt;strong&gt;随机效应&lt;/strong&gt;。这就是 LMM 在 GWAS 中的核心地位的来源。&lt;/p&gt;
&lt;h3&gt;模型形式&lt;/h3&gt;
&lt;p&gt;$$
y = \underbrace{X\beta}&lt;em&gt;{\text{固定效应}} + \underbrace{Zu}&lt;/em&gt;{\text{随机效应}} + \underbrace{e}_{\text{残差}}
$$&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;符号&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;th&gt;分布假设&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$X\beta$&lt;/td&gt;
&lt;td&gt;固定效应：截距 + SNP 效应 + 协变量&lt;/td&gt;
&lt;td&gt;待估计参数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$Zu$&lt;/td&gt;
&lt;td&gt;随机效应：多基因背景&lt;/td&gt;
&lt;td&gt;$u \sim N(0, G\sigma^2_g)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$e$&lt;/td&gt;
&lt;td&gt;残差&lt;/td&gt;
&lt;td&gt;$e \sim N(0, I\sigma^2_e)$&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;矩阵维度：$y$ 为 $n \times 1$，$X$ 为 $n \times p$，$Z$ 为 $n \times n$（通常 $Z = I$），$G$ 为 $n \times n$ 的&lt;strong&gt;亲缘关系矩阵（GRM）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;$y$ 的边缘分布为：&lt;/p&gt;
&lt;p&gt;$$
y \sim N(X\beta, V)
$$&lt;/p&gt;
&lt;p&gt;其中方差-协方差矩阵：&lt;/p&gt;
&lt;p&gt;$$
V = G\sigma^2_g + I\sigma^2_e \quad (\text{当 } Z = I)
$$&lt;/p&gt;
&lt;p&gt;在已知 $V$ 的条件下，$\beta$ 的&lt;strong&gt;广义最小二乘&lt;/strong&gt;（GLS）估计为：&lt;/p&gt;
&lt;p&gt;$$
\hat{\beta} = (X^T V^{-1} X)^{-1} X^T V^{-1} y
$$&lt;/p&gt;
&lt;p&gt;$$
\text{Var}(\hat{\beta}) = (X^T V^{-1} X)^{-1}
$$&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;关键洞察：LMM 不再假设观测值独立。通过 $G$ 矩阵，它显式建模了个体间的遗传协方差——遗传关系越近的个体，其表型在条件于固定效应后越相似。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;为什么 LMM 有效&lt;/h3&gt;
&lt;p&gt;考虑一个最简化的 LMM（无 SNP、无协变量）：$y = u + e$。&lt;/p&gt;
&lt;p&gt;$G$ 矩阵的 $(i, k)$ 元素度量个体 $i$ 和 $k$ 的遗传相似度。如果两人是全同胞，$G_{ik} \approx 0.5$，那么 $y_i$ 和 $y_k$ 的协方差为 $0.5\sigma^2_g$。LMM 在估计固定效应时，会&lt;strong&gt;降权&lt;/strong&gt;这种高度相关的观测对——来自同一家系的信息不会被重复计算，从而消除假阳性膨胀。&lt;/p&gt;
&lt;p&gt;更重要的是，如果群体中存在隐性分层（比如欧洲和非洲混合样本），$G$ 矩阵会自动捕捉这种分组结构——同组个体的 $G$ 值系统性地更高。LMM 因此可以&lt;strong&gt;同时校正群体结构和亲缘关系&lt;/strong&gt;，这是仅用 PC 协变量做不到的。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;亲缘关系矩阵（GRM）&lt;/h2&gt;
&lt;p&gt;GRM 是 LMM 的核心组件——它量化了任意两个个体间的遗传相似度。&lt;/p&gt;
&lt;h3&gt;VanRaden 方法&lt;/h3&gt;
&lt;p&gt;设 $Z$ 为 $n \times m$ 的标准化基因型矩阵。对于 SNP $j$，等位基因频率为 $p_j$，中心化标准化为：&lt;/p&gt;
&lt;p&gt;$$
Z_{ij} = x_{ij} - 2p_j
$$&lt;/p&gt;
&lt;p&gt;缩放标准化为：&lt;/p&gt;
&lt;p&gt;$$
Z_{ij} = \frac{x_{ij} - 2p_j}{\sqrt{2p_j(1-p_j)}}
$$&lt;/p&gt;
&lt;p&gt;缩放标准化使每个 SNP 的方差为 1，低频 SNP 获得更大权重。GRM 的计算为：&lt;/p&gt;
&lt;p&gt;$$
G = \frac{ZZ^T}{m}
$$&lt;/p&gt;
&lt;p&gt;等价地，个体 $i$ 和 $k$ 之间的遗传相似度为：&lt;/p&gt;
&lt;p&gt;$$
G_{ik} = \frac{1}{m} \sum_{j=1}^{m} \frac{(x_{ij} - 2p_j)(x_{kj} - 2p_j)}{2p_j(1-p_j)}
$$&lt;/p&gt;
&lt;h3&gt;GRM 元素的含义&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GRM 元素&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ii}$（对角线）&lt;/td&gt;
&lt;td&gt;个体的近交系数：$G_{ii} = 1 + F_i$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ik} \approx 0.5$&lt;/td&gt;
&lt;td&gt;全同胞或亲子关系&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ik} \approx 0.25$&lt;/td&gt;
&lt;td&gt;半同胞、祖孙&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ik} \approx 0.125$&lt;/td&gt;
&lt;td&gt;表亲&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ik} \approx 0$&lt;/td&gt;
&lt;td&gt;无关个体&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G_{ik} &amp;lt; 0$&lt;/td&gt;
&lt;td&gt;遗传关系比群体平均更远&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;即使是&quot;无关&quot;个体，$G_{ik}$ 也不精确为零——而是围绕 0 呈正态分布。LMM 能利用这种微小差异来建模精细的群体结构。&lt;/p&gt;
&lt;p&gt;工具实现上，GCTA 用 &lt;code&gt;--make-grm&lt;/code&gt;，GEMMA 用 &lt;code&gt;-gk 1&lt;/code&gt;，PLINK 用 &lt;code&gt;--make-grm-bin&lt;/code&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;方差组分估计：REML&lt;/h2&gt;
&lt;p&gt;模型依赖两个未知参数：$\sigma^2_g$（遗传方差）和 $\sigma^2_e$（残差方差）。它们决定了 SNP 遗传力：&lt;/p&gt;
&lt;p&gt;$$
h^2_{SNP} = \frac{\sigma^2_g}{\sigma^2_g + \sigma^2_e}
$$&lt;/p&gt;
&lt;h3&gt;为什么不用 ML&lt;/h3&gt;
&lt;p&gt;极大似然（ML）估计方差组分时有&lt;strong&gt;有限样本偏倚&lt;/strong&gt;——它不&quot;知道&quot;固定效应消耗了自由度。REML（Restricted Maximum Likelihood）通过消除固定效应的影响来校正这种偏倚。&lt;/p&gt;
&lt;p&gt;核心思想：找到一个对比矩阵 $A$，使得 $E(A^T y) = 0$（消除固定效应的期望），然后基于 $A^T y$ 的分布最大化似然。&lt;/p&gt;
&lt;h3&gt;REML 对数似然&lt;/h3&gt;
&lt;p&gt;$$
\ell_{REML} = -\frac{1}{2}\left[\log|V| + \log|X^T V^{-1} X| + y^T P y\right]
$$&lt;/p&gt;
&lt;p&gt;其中 $P$ 为投影矩阵：&lt;/p&gt;
&lt;p&gt;$$
P = V^{-1} - V^{-1}X(X^T V^{-1} X)^{-1}X^T V^{-1}
$$&lt;/p&gt;
&lt;h3&gt;AI-REML 算法&lt;/h3&gt;
&lt;p&gt;Average Information REML（Gilmour et al., 1995）是当前最常用的 REML 求解算法。它用 Fisher 信息矩阵和观测信息矩阵的平均值构建 Newton-Raphson 迭代：&lt;/p&gt;
&lt;p&gt;$$
\theta^{(t+1)} = \theta^{(t)} + [I_A(\theta^{(t)})]^{-1} \frac{\partial \ell_{REML}}{\partial \theta}
$$&lt;/p&gt;
&lt;p&gt;其中 $\theta = (\sigma^2_g, \sigma^2_e)$。AI-REML 的优势是收敛快（通常 10~30 次迭代）、不需要计算二阶导数的期望、对起始值不敏感。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;SNP 效应检验&lt;/h2&gt;
&lt;p&gt;获得 $\hat{V}$ 后，对每个 SNP $j$ 检验 $H_0: \beta_j = 0$。将待检验 SNP 加入固定效应设计矩阵 $X_{full} = [X_{base}, x_j]$，用广义最小二乘（GLS）估计：&lt;/p&gt;
&lt;p&gt;$$
\hat{\beta}_j = (x_j^T \hat{V}^{-1} x_j)^{-1} x_j^T \hat{V}^{-1} y
$$&lt;/p&gt;
&lt;p&gt;GLS 与 OLS 的区别在于权重矩阵 $V^{-1}$——给&quot;独立的&quot;信息更多权重，对遗传相关的个体间共享的信息降权。&lt;/p&gt;
&lt;h3&gt;三种检验统计量&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Wald 检验&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;$$
W_j = \frac{\hat{\beta}_j^2}{(x_j^T \hat{V}^{-1} x_j)^{-1}} \sim \chi^2_1
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score 检验&lt;/strong&gt;——不需要在每个 SNP 上重新估计 $\hat{V}$（这是 EMMAX 近似的基础）：&lt;/p&gt;
&lt;p&gt;$$
S_j = \frac{(x_j^T \hat{V}^{-1} \tilde{e})^2}{x_j^T \hat{V}^{-1} x_j} \sim \chi^2_1
$$&lt;/p&gt;
&lt;p&gt;其中 $\tilde{e} = y - X_{base}\hat{\beta}_{base}$ 为基线模型的残差。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;似然比检验（LRT）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;$$
\text{LRT}&lt;em&gt;j = 2(\ell&lt;/em&gt;{full} - \ell_{null}) \sim \chi^2_1
$$&lt;/p&gt;
&lt;p&gt;LRT 最精确但也最耗时，因为每个 SNP 都需要重新估计所有参数。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;大规模计算：当样本量到了十万级&lt;/h2&gt;
&lt;p&gt;LMM 的计算瓶颈很明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GRM 构建：$O(mn^2)$&lt;/li&gt;
&lt;li&gt;$V^{-1}$ 计算：$O(n^3)$（矩阵求逆）&lt;/li&gt;
&lt;li&gt;对每个 SNP 做 GLS：$O(mn^2)$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于 $n &amp;gt; 100{,}000$ 的 Biobank 级数据，精确计算不可行，需要近似策略。&lt;/p&gt;
&lt;h3&gt;EMMAX&lt;/h3&gt;
&lt;p&gt;核心思路：在零模型（不含检验中的 SNP）下估计一次 $\hat{V}$，然后对所有 SNP 固定使用这个 $\hat{V}$ 做 Score 检验。假设是单个 SNP 对总体方差组分的贡献可忽略——在多基因模型下这个假设合理。&lt;/p&gt;
&lt;p&gt;总复杂度：$O(n^3 + mn)$。一次 $O(n^3)$ 的求逆，加上每个 SNP $O(n)$ 的 Score 检验。实践中非常接近精确 LMM 的结果。&lt;/p&gt;
&lt;h3&gt;GEMMA&lt;/h3&gt;
&lt;p&gt;提供两种模式：精确 LMM 对每个 SNP 重新估计方差组分（精度高但慢），近似 LMM 类似 EMMAX。&lt;/p&gt;
&lt;h3&gt;BOLT-LMM&lt;/h3&gt;
&lt;p&gt;不显式计算 $V^{-1}$，而是用&lt;strong&gt;变分贝叶斯&lt;/strong&gt;近似，将 LMM 转化为高斯混合模型的推断问题，用 Monte Carlo 方法近似后验。计算复杂度近线性于样本量 $O(mn)$，可以在 UK Biobank 级别（$n \approx 500{,}000$）的数据上运行。&lt;/p&gt;
&lt;h3&gt;SAIGE&lt;/h3&gt;
&lt;p&gt;针对极端不平衡的 case-control 设计（如 case:control = 1:99）。分两步：第一步拟合零 LMM 模型估计 GRM 和方差组分；第二步对每个 SNP 用&lt;strong&gt;鞍点近似&lt;/strong&gt;校正 Score 检验统计量。鞍点近似在分布尾部比正态近似更精确，能正确控制稀有变异和不平衡设计下的一类错误率。&lt;/p&gt;
&lt;h3&gt;fastGWA（GCTA 框架）&lt;/h3&gt;
&lt;p&gt;对 GRM 进行稀疏化处理，利用谱分解加速 $V^{-1}$ 计算，支持连续和二分类性状。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;工具选择&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;推荐工具&lt;/th&gt;
&lt;th&gt;理由&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;中小样本（$n &amp;lt; 5{,}000$），精度优先&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GEMMA&lt;/strong&gt;（精确模式）&lt;/td&gt;
&lt;td&gt;对每个 SNP 精确估计&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;中等样本（$n = 5{,}000 \sim 50{,}000$）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;EMMAX&lt;/strong&gt; 或 &lt;strong&gt;GCTA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;近似足够好，计算可控&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;大样本连续性状（$n &amp;gt; 50{,}000$）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;BOLT-LMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;线性复杂度，Biobank 验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;大样本 case-control，极端不平衡&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SAIGE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;鞍点近似校正尾部&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;需要遗传力估计 + 关联检验&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GCTA&lt;/strong&gt;（GREML + fastGWA）&lt;/td&gt;
&lt;td&gt;一体化方案&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;命令行速查&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# GEMMA（精确 LMM）
gemma -bfile data -k output.cXX.txt -lmm 1 -o result

# EMMAX
emmax -v -d 10 -t genotype -p phenotype -k kinship -o result

# BOLT-LMM
bolt --bfile=data --phenoFile=pheno.txt --phenoCol=phenotype \
     --lmm --LDscoresFile=LDSCORE.1000G_EUR.tab.gz \
     --statsFile=result.stats

# SAIGE (step 1: 零模型)
Rscript step1_fitNULLGLMM.R \
  --plinkFile=data --phenoFile=pheno.txt --phenoCol=phenotype \
  --sampleIDColinphenoFile=IID --traitType=binary \
  --outputPrefix=null_model --nThreads=4

# SAIGE (step 2: 关联检验)
Rscript step2_SPAtests.R \
  --bedFile=data.bed --bimFile=data.bim --famFile=data.fam \
  --GMMATmodelFile=null_model.rda --varianceRatioFile=null_model.varianceRatio.txt \
  --SAIGEOutputFile=result.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;模型演进的逻辑&lt;/h2&gt;
&lt;p&gt;回头看这条路径：OLS → GLM → LMM，每一步的动机都很清楚。&lt;/p&gt;
&lt;p&gt;OLS 假设所有观测独立——这在有亲缘关系或群体结构时不成立。GLM 加入了固定协变量来校正已知混杂，但无法处理高维的、结构未知的遗传背景。LMM 把多基因背景建模为随机效应，通过 GRM 显式编码个体间的遗传协方差，同时解决了群体结构和亲缘关系的问题。&lt;/p&gt;
&lt;p&gt;代价是计算量。$O(n^3)$ 的矩阵求逆在小样本时不是问题，但到了 Biobank 规模就必须近似。EMMAX、BOLT-LMM、SAIGE 各自在不同维度上做了取舍——精度换速度，或者对特定场景（如极端不平衡）做专门优化。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LMM 是目前 GWAS 关联检验的标准方法。理解了它的数学原理，就能理解为什么不同样本量要选不同工具，为什么 case-control 不平衡需要特殊处理，以及为什么 GRM 的质量直接决定结果的可靠性。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>从候选基因到全基因组：GWAS 的起源、术语与分析流程</title><link>https://georicl.cn/posts/gwas-from-origin-to-practice/gwas-from-origin-to-practice/</link><guid isPermaLink="true">https://georicl.cn/posts/gwas-from-origin-to-practice/gwas-from-origin-to-practice/</guid><description>GWAS 怎么来的？核心术语有哪些？质控怎么做？完整分析流程长什么样？这篇一次讲清楚。</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这是 GWAS 系列的第二篇。上一篇讲了群体遗传学和遗传力的基础——HWE、LD、群体结构那些概念。这篇换个角度：从历史讲起，把核心术语过一遍，然后走一遍完整的分析流程和质量控制。如果你只打算读一篇 GWAS 入门文章，可能是这篇。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;GWAS 是怎么来的&lt;/h2&gt;
&lt;h3&gt;前 GWAS 时代的两种方法&lt;/h3&gt;
&lt;p&gt;在 GWAS 出现之前，定位复杂性状的遗传位点主要靠两样东西：&lt;strong&gt;连锁分析&lt;/strong&gt;和&lt;strong&gt;候选基因研究&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;连锁分析利用家系中遗传标记与表型的共分离来定位致病基因。原理很直觉——同一条染色体上距离近的位点不容易被重组分开，倾向于一起传给后代。但这个方法需要收集多代家系样本，成本高，对复杂性状（多个微效基因加环境）功效很低，定位精度也粗糙，通常是 Mb 级别的区域。&lt;/p&gt;
&lt;p&gt;候选基因研究则是基于已有的生物学认知，选几个&quot;嫌疑基因&quot;，在 case-control 群体中比较等位基因频率。问题在于：它依赖对性状生物学的先验知识，无法发现全新基因；早期研究普遍样本量只有几百例，统计功效低；大量结果无法被独立重复——可重复性危机。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2000 年代初，遗传学界逐渐认识到：复杂性状的遗传结构是高度多基因的，单个基因的效应极小。需要一种&lt;strong&gt;无假设驱动的、全基因组覆盖的&lt;/strong&gt;关联分析方法。GWAS 由此诞生。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;三个技术前提&lt;/h3&gt;
&lt;p&gt;GWAS 能落地，靠的是三个基础设施在同期的成熟：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人类基因组计划（HGP, 1990–2003）&lt;/strong&gt; 提供了参考序列，让变异检测成为可能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;国际 HapMap 计划（2002–2009）&lt;/strong&gt; 系统性地绘制了人类常见 SNP（MAF &amp;gt; 5%）及其连锁不平衡结构。HapMap 的关键发现是：人类基因组以 LD block 为结构单元，每个 block 内的 SNP 高度相关，可以用少数 tag SNP 代表整个 block。这意味着只需分型 30 万~50 万个 tag SNP，就能覆盖基因组中大多数常见变异——直接降低了全基因组关联的成本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;高通量 SNP 芯片技术&lt;/strong&gt; 让大规模人群的基因分型在经济上可行。Illumina 和 Affymetrix 开发了可并行检测数十万至数百万 SNP 的商业芯片。&lt;/p&gt;
&lt;p&gt;三个条件缺一不可：没有参考基因组就不知道变异在哪，没有 HapMap 就不知道需要检测哪些位点，没有芯片就付不起全基因组分型的代价。&lt;/p&gt;
&lt;h3&gt;关键里程碑&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;年份&lt;/th&gt;
&lt;th&gt;事件&lt;/th&gt;
&lt;th&gt;意义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2001&lt;/td&gt;
&lt;td&gt;人类基因组草图发布&lt;/td&gt;
&lt;td&gt;参考序列就位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2005&lt;/td&gt;
&lt;td&gt;首篇 GWAS（Klein et al., &lt;em&gt;Science&lt;/em&gt;）&lt;/td&gt;
&lt;td&gt;96 例 AMD 患者 + 50 例对照，发现 &lt;em&gt;CFH&lt;/em&gt; 基因强关联 SNP（OR ≈ 4.6），证明 GWAS 范式可行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2007&lt;/td&gt;
&lt;td&gt;WTCCC（&lt;em&gt;Nature&lt;/em&gt;）&lt;/td&gt;
&lt;td&gt;7 种常见疾病、约 17000 样本，确立 case-control GWAS 设计范式和 $p &amp;lt; 5 \times 10^{-8}$ 显著性阈值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2008&lt;/td&gt;
&lt;td&gt;千人基因组计划启动&lt;/td&gt;
&lt;td&gt;为填补提供更完整的参考面板&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2010&lt;/td&gt;
&lt;td&gt;LMM 引入 GWAS（EMMAX）&lt;/td&gt;
&lt;td&gt;解决群体结构和亲缘关系的混杂问题&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2012&lt;/td&gt;
&lt;td&gt;LD Score 回归&lt;/td&gt;
&lt;td&gt;区分多基因信号和群体分层&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2015&lt;/td&gt;
&lt;td&gt;UK Biobank 释放&lt;/td&gt;
&lt;td&gt;50 万样本，GWAS 进入 Biobank 时代&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2018+&lt;/td&gt;
&lt;td&gt;样本量突破百万&lt;/td&gt;
&lt;td&gt;大量微效位点被发现，PRS 预测能力提升&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;2005 年 Klein 那篇论文值得一提。仅用 96 例患者和 50 例对照，就发现了 &lt;em&gt;CFH&lt;/em&gt; 基因上一个效应量远超此前候选基因研究的 SNP。这在今天看来样本量小得不可思议，但它证明了全基因组无假设扫描的可行性——一个范式的确立往往不需要大样本，需要一个巧妙的研究设计。&lt;/p&gt;
&lt;p&gt;WTCCC 则把 GWAS 推向了主流。它同期对 7 种疾病做了关联分析，建立了 case-control 设计的标准范式，并确立了 $p &amp;lt; 5 \times 10^{-8}$ 这个至今仍在使用的全基因组显著性阈值。&lt;/p&gt;
&lt;h3&gt;跨学科扩展&lt;/h3&gt;
&lt;p&gt;GWAS 起源于人类疾病遗传学，但方法框架已被广泛移植到农业育种（作物产量、抗病性）、畜牧遗传（产奶量、肉质）、水产养殖（生长速率）、进化生物学（检测自然选择的基因组信号）等领域。不同物种面临不同挑战：参考基因组质量参差不齐，LD 衰减模式差异大（鸡和狗的 LD 范围远大于人类，鱼类则更小），群体结构可能更复杂。但核心分析逻辑是相通的。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;核心术语速查&lt;/h2&gt;
&lt;p&gt;在做 GWAS 的过程中，这些术语会反复出现。我按分析环节分组，方便查阅。关于 HWE、LD、群体结构的详细解释，见&lt;a href=&quot;/posts/gwas-population-genetics-heritability&quot;&gt;上一篇&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;基础概念&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;术语&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SNP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;单核苷酸多态性，基因组上单个碱基位点的变异（A→G 之类），GWAS 最常用的分子标记&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MAF&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;最小等位基因频率，群体中频率较低的那个等位基因的频率。MAF 过低则统计功效不足&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;等位基因（Allele）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;一个基因座上可能存在的不同序列形式，二倍体个体每个基因座有两个&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;基因型（Genotype）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;某基因座上两个等位基因的组合。加性编码中：0 = 参考纯合，1 = 杂合，2 = 交替纯合&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;单倍型（Haplotype）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同一条染色体上倾向于共同遗传的一组等位基因组合，是 LD 和基因型填补的物理基础&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;表型（Phenotype）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;可观测性状。GWAS 中分为连续性状（身高）、二分类性状（患病/健康）、有序分类性状（疾病分级）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;InDel / CNV&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;插入缺失变异 / 拷贝数变异，除 SNP 外 GWAS 也可检测的变异类型&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;统计遗传&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;术语&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;遗传力（$h^2$）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;表型方差中由加性遗传因素解释的比例，详见上一篇&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;混合线性模型，同时包含固定效应（SNP）和随机效应（多基因背景），用于校正群体结构和亲缘关系&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GRM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;亲缘关系矩阵，基于全基因组 SNP 估计的个体间遗传相似度矩阵，在 LMM 中作为随机效应的协方差结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bonferroni 校正&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;最保守的多重检验校正，阈值 $\alpha / m$。GWAS 中 $\alpha = 0.05$，$m \approx 10^6$，得 $5 \times 10^{-8}$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FDR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;错误发现率，所有显著结果中假阳性的期望比例。Benjamini-Hochberg 方法比 Bonferroni 更宽松&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;曼哈顿图&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;以染色体位置为横轴、$-\log_{10}(p)$ 为纵轴的散点图，形似城市天际线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Q-Q 图&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;观察 p 值排序后与均匀分布期望值的对比图，用于诊断系统性偏倚&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;$\lambda_{GC}$&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基因组膨胀因子，$\approx 1.0$ 表示无偏倚，$&amp;gt; 1.05$ 提示群体分层&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;分析环节&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;术语&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;基因型填补（Imputation）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;利用参考面板的 LD 结构推断未直接分型的 SNP 基因型，可增加标记密度并整合不同芯片数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;精细定位（Fine-mapping）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;在显著位点区域区分因果变异和仅因 LD 而显著的标记&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;可信集（Credible Set）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;以一定概率（通常 95%）包含因果变异的一组 SNP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PIP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;后验包含概率，贝叶斯精细定位中某 SNP 为因果变异的后验概率&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PRS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;多基因风险评分，所有风险等位基因效应量的加权求和&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;共定位分析&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;检验 GWAS 信号与 eQTL 信号是否共享同一因果变异&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;数据格式&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;格式&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PED/MAP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PLINK 标准文本格式，PED 存样本信息和基因型，MAP 存 SNP 位置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BED/BIM/FAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PLINK 二进制格式，BED 为基因型二进制文件，BIM 为 SNP 信息，FAM 为样本信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VCF&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;变异调用格式，基因组变异的通用交换格式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BGEN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;二进制基因型格式，支持 dosage 数据，UK Biobank 使用此格式&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;完整分析流程&lt;/h2&gt;
&lt;p&gt;一个 GWAS 从零开始到拿到结果，大致经过以下步骤：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;graph TD
    A[生物学问题] --&amp;gt; B[实验设计]
    B --&amp;gt; C[样本采集与表型测定]
    C --&amp;gt; D[基因分型&amp;lt;br/&amp;gt;芯片 / 测序]
    D --&amp;gt; E[质量控制 QC&amp;lt;br/&amp;gt;样本 + SNP]
    E --&amp;gt; F[基因型填补 Imputation]
    F --&amp;gt; G[群体结构分析&amp;lt;br/&amp;gt;PCA]
    G --&amp;gt; H[关联检验&amp;lt;br/&amp;gt;GLM / LMM]
    H --&amp;gt; I[结果可视化&amp;lt;br/&amp;gt;Manhattan / Q-Q]
    I --&amp;gt; J[精细定位&amp;lt;br/&amp;gt;Fine-mapping]
    J --&amp;gt; K[功能验证与解读]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面逐步展开。&lt;/p&gt;
&lt;h3&gt;第一步：明确生物学问题&lt;/h3&gt;
&lt;p&gt;一切 GWAS 都始于一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对&lt;strong&gt;什么物种&lt;/strong&gt;的&lt;strong&gt;什么表型&lt;/strong&gt;进行关联分析？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这决定了后续所有环节：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;决策维度&lt;/th&gt;
&lt;th&gt;需要考虑的问题&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;物种&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;参考基因组质量如何？有几个版本的组装？&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;表型&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;连续 / 二分类 / 有序分类？测量标准化程度？&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;效应量预期&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基于文献，该性状的遗传力大致多少？&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;研究目的&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;发现新位点？验证已知位点？构建 PRS？&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;第二步：样本策略与统计功效&lt;/h3&gt;
&lt;p&gt;GWAS 首选&lt;strong&gt;无关个体&lt;/strong&gt;（unrelated individuals）。如果样本中存在隐性亲缘关系，应在关联检验阶段通过 LMM 中的 GRM 显式建模。&lt;/p&gt;
&lt;p&gt;在开始实验前应估算所需样本量。统计功效取决于四个因素：样本量 $N$（功效 roughly 与 $\sqrt{N}$ 成正比）、效应量、MAF、显著性阈值。经验法则：对于连续性状，要检测解释 0.1% 表型方差的 SNP（MAF = 0.3），在 $\alpha = 5 \times 10^{-8}$ 下达到 80% 功效约需 &lt;strong&gt;30,000&lt;/strong&gt; 样本。功效计算可用 GAS Power Calculator 或 QUANTO。&lt;/p&gt;
&lt;p&gt;对于 case-control 设计，对照应来自与病例相同的源人群。极端不平衡（如 1:100）会严重损害检验功效，可使用 SAIGE 等方法处理。&lt;/p&gt;
&lt;h3&gt;第三步：基因分型策略&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;策略&lt;/th&gt;
&lt;th&gt;成本&lt;/th&gt;
&lt;th&gt;标记数&lt;/th&gt;
&lt;th&gt;填补需求&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SNP 芯片&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;低&lt;/td&gt;
&lt;td&gt;50 万~250 万&lt;/td&gt;
&lt;td&gt;必需&lt;/td&gt;
&lt;td&gt;大规模人群&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;全基因组测序 WGS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;高&lt;/td&gt;
&lt;td&gt;全基因组&lt;/td&gt;
&lt;td&gt;不需要&lt;/td&gt;
&lt;td&gt;小规模精细研究、稀有变异&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;低深度 WGS + 填补&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;中&lt;/td&gt;
&lt;td&gt;0.5x~4x&lt;/td&gt;
&lt;td&gt;必需&lt;/td&gt;
&lt;td&gt;折中方案，日益流行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;人类 GWAS 常用 Illumina GSA（约 70 万 SNP，多民族优化）或 Infinium Omni 系列（约 250 万 SNP）。非模式生物通常选通用高密度芯片或定制芯片。&lt;/p&gt;
&lt;h3&gt;第四步：质量控制（QC）&lt;/h3&gt;
&lt;p&gt;QC 是整个 GWAS 分析中最关键的步骤。设计不当或 QC 不足将直接导致下游结果不可靠。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;graph TD
    A[原始基因型数据] --&amp;gt; B1[样本 QC]
    A --&amp;gt; B2[SNP QC]

    subgraph 样本层面
        B1 --&amp;gt; C1[检出率 &amp;gt; 95%]
        C1 --&amp;gt; C2[性别检查]
        C2 --&amp;gt; C3[杂合率离群 ±3 SD]
        C3 --&amp;gt; C4[亲缘关系 IBD &amp;gt; 0.1875]
        C4 --&amp;gt; C5[PCA 初筛]
    end

    subgraph SNP 层面
        B2 --&amp;gt; D1[检出率 &amp;gt; 95%]
        D1 --&amp;gt; D2[MAF &amp;gt; 1% 或 5%]
        D2 --&amp;gt; D3[HWE 对照组 p &amp;gt; 1e-6]
        D3 --&amp;gt; D4[差异缺失率]
    end

    C5 --&amp;gt; E[清洁数据]
    D4 --&amp;gt; E
    E --&amp;gt; F[填补或关联检验]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;样本层面 QC&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1. 样本检出率（Sample Call Rate）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每份样本成功分型的 SNP 比例，要求 &amp;gt; 95%。低检出率意味着 DNA 质量差或实验失败。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --missing --out sample_missing
plink --bfile data --mind 0.05  # 移除缺失率 &amp;gt; 5% 的样本
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 性别检查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基于 X 染色体平均杂合率验证记录性别。女性（XX）X 染色体杂合率接近常染色体水平（~0.3），男性（XY）趋近于 0。不匹配的样本应检查或剔除。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --check-sex --out sex_check
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. 杂合率离群值&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;全基因组平均杂合率偏离均值 ±3 个标准差的样本，可能提示 DNA 污染或近交。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --het --out het_check
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4. 亲缘关系检查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基于全基因组数据计算两两个体间的 IBD 共享比例 $\hat{\pi}$。当 $\hat{\pi} &amp;gt; 0.1875$（相当于二级亲属以上）时，随机移除其中一人，或用 LMM 建模。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;king -b data.bed --related --degree 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;5. 群体分层 PCA 初筛&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;运行 PCA 可视化样本的遗传背景。明显偏离主要群体的样本可能是不同祖先来源或错误标记。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --pca 10 --out pca_result
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;SNP 层面 QC&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1. SNP 检出率&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每个 SNP 被成功分型的样本比例，要求 &amp;gt; 95%。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --geno 0.05
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 最小等位基因频率（MAF）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过滤低频 SNP。常用阈值 MAF &amp;gt; 1%（大样本）或 MAF &amp;gt; 5%（小样本）。低频 SNP 统计功效极低，且更容易受分型误差影响。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 哈代-温伯格平衡检验（HWE）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在&lt;strong&gt;对照组&lt;/strong&gt;中检验每个 SNP 是否符合 HWE。严重偏离通常提示分型错误。常用阈值：对照组 $p &amp;gt; 10^{-6}$，合并样本 $p &amp;gt; 10^{-10}$。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile data --hwe 1e-6 --out hwe_check
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;只在对照样本中测试 HWE。病例组可能因为真实的疾病关联而偏离 HWE，不应作为剔除依据。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;4. 差异缺失率检验&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;检验 case 和 control 之间某 SNP 的系统性缺失率差异。显著差异提示分型技术问题。&lt;/p&gt;
&lt;h3&gt;第五步：群体分层处理&lt;/h3&gt;
&lt;p&gt;QC 完成后，对清洁数据进行 LD 修剪后的 PCA，取前 5~20 个主成分用于可视化和后续校正。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;plink --bfile clean_data --indep-pairwise 50 5 0.2 --out ld_pruned
plink --bfile clean_data --extract ld_pruned.prune.in --pca 20 --out pca_final
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;校正策略有三种选择：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;策略&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PCA 协变量&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;在 GLM 中纳入前几个 PC 作为协变量，简单快速&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;基因组控制&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用 $\lambda_{GC}$ 缩放所有检验统计量，简单但不够精确&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;通过 GRM 显式建模群体结构和亲缘关系，最灵活&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;当前最推荐的是 &lt;strong&gt;LMM + PC 协变量&lt;/strong&gt;的组合。&lt;/p&gt;
&lt;h3&gt;第六步：关联检验&lt;/h3&gt;
&lt;p&gt;经过 QC 和群体结构校正后，进入正式的关联检验。根据数据规模和性状类型选择工具：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;工具&lt;/th&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;特点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLINK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GLM&lt;/td&gt;
&lt;td&gt;基线工具，速度快，不处理亲缘关系&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EMMAX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LMM 近似&lt;/td&gt;
&lt;td&gt;高效近似，适合中等规模&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GEMMA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;精确 LMM&lt;/td&gt;
&lt;td&gt;精确实现，中小规模首选&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BOLT-LMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;变分近似&lt;/td&gt;
&lt;td&gt;适合 Biobank 规模（数十万~百万）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SAIGE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;鞍点近似&lt;/td&gt;
&lt;td&gt;处理极端 case-control 不平衡&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;fastGWA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;谱分解&lt;/td&gt;
&lt;td&gt;GCTA 生态，大规模高效&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;第七步：可视化与下游分析&lt;/h3&gt;
&lt;p&gt;关联检验的结果通过曼哈顿图和 Q-Q 图进行初步评估。达到全基因组显著性阈值（$p &amp;lt; 5 \times 10^{-8}$）的位点进入精细定位和功能注释。&lt;/p&gt;
&lt;p&gt;精细定位通过贝叶斯方法（FINEMAP、SuSiE）计算每个 SNP 的后验包含概率（PIP），构建 95% 可信集，缩小因果变异范围。共定位分析（coloc）则检验 GWAS 信号与 eQTL 信号是否共享因果变异，为功能解读提供线索。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;QC 标准速查表&lt;/h2&gt;
&lt;p&gt;最后把 QC 的阈值整理成一张表，方便做分析时对照：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;QC 步骤&lt;/th&gt;
&lt;th&gt;对象&lt;/th&gt;
&lt;th&gt;阈值&lt;/th&gt;
&lt;th&gt;工具&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;样本检出率&lt;/td&gt;
&lt;td&gt;样本&lt;/td&gt;
&lt;td&gt;&amp;gt; 95%（缺失率 &amp;lt; 0.05）&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--mind&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;性别检查&lt;/td&gt;
&lt;td&gt;样本&lt;/td&gt;
&lt;td&gt;X 染色体杂合率与记录性别一致&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--check-sex&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;杂合率离群&lt;/td&gt;
&lt;td&gt;样本&lt;/td&gt;
&lt;td&gt;±3 SD&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--het&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;亲缘关系&lt;/td&gt;
&lt;td&gt;样本对&lt;/td&gt;
&lt;td&gt;IBD &amp;gt; 0.1875 时移除一人&lt;/td&gt;
&lt;td&gt;KING&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;群体离群&lt;/td&gt;
&lt;td&gt;样本&lt;/td&gt;
&lt;td&gt;PCA 可视化判断&lt;/td&gt;
&lt;td&gt;EIGENSOFT / PLINK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SNP 检出率&lt;/td&gt;
&lt;td&gt;SNP&lt;/td&gt;
&lt;td&gt;&amp;gt; 95%（缺失率 &amp;lt; 0.05）&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--geno&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAF&lt;/td&gt;
&lt;td&gt;SNP&lt;/td&gt;
&lt;td&gt;&amp;gt; 1% 或 5%&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--maf&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HWE&lt;/td&gt;
&lt;td&gt;SNP（对照组）&lt;/td&gt;
&lt;td&gt;$p &amp;gt; 10^{-6}$&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--hwe&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;差异缺失率&lt;/td&gt;
&lt;td&gt;SNP&lt;/td&gt;
&lt;td&gt;case vs control 无显著差异&lt;/td&gt;
&lt;td&gt;PLINK &lt;code&gt;--test-missing&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;从候选基因到全基因组扫描，从几十例样本到百万级 Biobank，GWAS 在不到 20 年间从概念验证发展成为发现复杂性状遗传基础的标准工具。核心逻辑其实不复杂：明确问题、严格质控、选对模型、看准信号。下一篇会深入讲统计建模——从 GLM 到 LMM 的推导过程。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>GWAS 的生物学基石：群体遗传与遗传力</title><link>https://georicl.cn/posts/gwas-population-genetics-heritability/gwas-population-genetics-heritability/</link><guid isPermaLink="true">https://georicl.cn/posts/gwas-population-genetics-heritability/gwas-population-genetics-heritability/</guid><description>从哈代-温伯格平衡、连锁不平衡、群体结构到遗传力与多基因模型——理解 GWAS 为什么需要这些前提知识</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这篇文章整理自我学习 GWAS 时的笔记。群体遗传学的三个核心概念——HWE、LD、群体结构——加上遗传力和多基因模型，构成了 GWAS 从实验设计到统计建模的全部生物学依据。如果你打算做 GWAS 分析，这些东西绕不开。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;哈代-温伯格平衡&lt;/h2&gt;
&lt;p&gt;Hardy-Weinberg Equilibrium（HWE）描述的是一个&lt;strong&gt;理想化随机交配群体&lt;/strong&gt;中，基因型频率在代际间保持恒定的现象。对于双等位基因位点，设两个等位基因频率分别为 $p$ 和 $q$（$p + q = 1$），在 HWE 下三种基因型的期望频率为：&lt;/p&gt;
&lt;p&gt;$$
p^2 : 2pq : q^2
$$&lt;/p&gt;
&lt;p&gt;分别对应 AA 纯合 : Aa 杂合 : aa 纯合。&lt;/p&gt;
&lt;p&gt;这个结论成立需要五个条件同时满足：随机交配、无限大群体、无自然选择、无突变、无迁移。现实中这些条件从不完美满足，但 HWE 提供了一个&lt;strong&gt;零假设&lt;/strong&gt;基准——偏离 HWE 提示某种生物学或技术原因在起作用。&lt;/p&gt;
&lt;h3&gt;HWE 偏离意味着什么&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;偏离原因&lt;/th&gt;
&lt;th&gt;生物学解释&lt;/th&gt;
&lt;th&gt;对 GWAS 的影响&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;基因分型错误&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;杂合子被系统性地误判为纯合子&lt;/td&gt;
&lt;td&gt;导致 HWE p 值极端显著（需剔除）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;群体分层&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;不同亚群体频率不同，混合后偏离期望&lt;/td&gt;
&lt;td&gt;提示需要校正群体结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;近交&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;纯合子过多&lt;/td&gt;
&lt;td&gt;可能使某些个体成为离群值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;选择&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;某些基因型有选择优势或劣势&lt;/td&gt;
&lt;td&gt;疾病相关位点的病例组可能偏离 HWE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wahlund 效应&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;包含多个隐性亚群体&lt;/td&gt;
&lt;td&gt;纯合子过剩&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 GWAS 的质量控制中，HWE 检验主要用于&lt;strong&gt;对照组&lt;/strong&gt;。因为在病例组中，显著偏离 HWE 可能恰恰是真实的疾病关联信号，而不是错误。常用的阈值是对照组 $p &amp;gt; 10^{-6}$，全样本 $p &amp;gt; 10^{-10}$。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;连锁不平衡&lt;/h2&gt;
&lt;p&gt;Linkage Disequilibrium（LD）是指&lt;strong&gt;不同基因座上的等位基因在群体中以非随机方式共同出现的现象&lt;/strong&gt;。它是 GWAS 可行性的物理基础。&lt;/p&gt;
&lt;p&gt;考虑两个双等位基因位点（A/a 和 B/b），如果它们独立随机组合，单倍型频率应等于各等位基因频率的乘积：$P(AB)_{expected} = P(A) \times P(B)$。当观察值与期望值存在差异时，即存在 LD。&lt;/p&gt;
&lt;h3&gt;LD 的成因&lt;/h3&gt;
&lt;p&gt;LD 的形成和衰减受几个因素影响：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物理距离&lt;/strong&gt;：越近的位点重组概率越低，LD 越强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选择&lt;/strong&gt;：正选择区域 LD 增强——选择性清除的&quot;搭车效应&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;群体历史&lt;/strong&gt;：瓶颈效应、奠基者效应增加全基因组 LD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;突变年龄&lt;/strong&gt;：新突变的 LD 范围较小，因为经历了更多重组代次&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;LD 的度量&lt;/h3&gt;
&lt;p&gt;GWAS 中常用的 LD 度量有三个：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;D（连锁不平衡系数）&lt;/strong&gt;：$D = P(AB) - P(A)P(B)$。D 的量级依赖等位基因频率，不便于跨位点比较。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$D&apos;$（标准化 D）&lt;/strong&gt;：$D&apos; = D / D_{max}$，取值 0~1。$D&apos; = 1$ 表示两个位点之间&lt;strong&gt;从未发生重组&lt;/strong&gt;。对等位基因频率的依赖性较小，但在小样本中向上偏倚严重。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$r^2$（相关系数的平方）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;$$
r^2 = \frac{D^2}{P(A)P(a)P(B)P(b)}
$$&lt;/p&gt;
&lt;p&gt;$r^2$ 是 GWAS 中&lt;strong&gt;最常用&lt;/strong&gt;的 LD 度量，因为它与&lt;strong&gt;统计功效&lt;/strong&gt;直接相关。对于与因果变异处于完美 LD（$r^2 = 1$）的 tag SNP，其与表型的关联检验具有与因果变异等价的统计功效。对不完全 LD（$r^2 &amp;lt; 1$），所需样本量增大为：&lt;/p&gt;
&lt;p&gt;$$
N_{eff} = \frac{N}{r^2}
$$&lt;/p&gt;
&lt;h3&gt;LD 对 GWAS 的启示&lt;/h3&gt;
&lt;p&gt;这几点在做分析时要时刻记住：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GWAS 是间接关联&lt;/strong&gt;：显著的 SNP 不一定是因果变异，可能只是与因果变异处于高 LD 的 tag SNP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LD block 结构&lt;/strong&gt;：基因组由交替的高 LD 区域和重组热点组成，一个 block 内的所有 SNP 可能给出相似的 p 值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不同群体的 LD 不同&lt;/strong&gt;：非洲人群的 LD 范围最小（重组代次最多），需要更高密度的标记覆盖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨群体精细定位&lt;/strong&gt;：利用不同种群间 LD 模式的差异可以帮助缩小因果变异的范围&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;$r^2$ 衰减到 0.2 的距离常被用作 marker density 的参考。衰减快的群体（如非洲人群、鱼类）需要更多 SNP 来达到足够的全基因组覆盖。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;群体结构&lt;/h2&gt;
&lt;p&gt;群体结构是指研究样本中存在&lt;strong&gt;遗传背景不同的亚群体&lt;/strong&gt;，这些亚群体之间在等位基因频率上存在系统性差异。这是 GWAS 中&lt;strong&gt;假阳性的最主要来源&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;群体分层为什么产生假阳性&lt;/h3&gt;
&lt;p&gt;想象这样一个场景：亚群体 1 中等位基因 A 的频率高，亚群体 2 中频率低。如果这两个亚群体恰好因为环境或文化原因有不同的表型值，那么等位基因 A 就会表现出与表型的&quot;关联&quot;——但这不是因果关联，而是&lt;strong&gt;混杂&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;经典案例（Knowler et al., 1988）：在 Pima 印第安人中发现一个与 2 型糖尿病&quot;显著相关&quot;的 HLA 单倍型。进一步分析揭示：该单倍型在欧洲血统中频率更高，而具有欧洲混血的 Pima 印第安人恰好糖尿病发病率更低。群体分层造成的假阳性。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;群体分层的遗传学成因包括遗传漂变、自然选择、迁徙与基因流、奠基者效应、地理隔离等。&lt;/p&gt;
&lt;h3&gt;检测与校正&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;PCA&lt;/strong&gt; 是目前最常用的群体结构检测方法。通过对全基因组 SNP 矩阵进行特征分解，前几个主成分能捕捉到样本间最主要的遗传分化模式。操作步骤：LD 修剪 → PCA → 投影到前 2~3 个主成分可视化 → 根据分布决定是否需要剔除异常样本。工具方面，EIGENSOFT (smartpca) 是黄金标准，PLINK 内置 PCA 也很方便。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基因组控制&lt;/strong&gt;（$\lambda_{GC}$）是另一个诊断指标：&lt;/p&gt;
&lt;p&gt;$$
\lambda_{GC} = \frac{\text{median}(\chi^2_{observed})}{\text{median}(\chi^2_{1, expected})}
$$&lt;/p&gt;
&lt;p&gt;$\lambda_{GC} \approx 1.0$ 表示无系统性偏倚；$&amp;gt; 1.05$ 提示存在群体分层或多基因信号。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;需要注意：在大样本 GWAS 中，$\lambda_{GC}$ 也会因为真实的多基因信号而升高（与 $\sqrt{N}$ 成正比），此时不应机械地除以 $\lambda_{GC}$。更好的方法是使用 LD Score 回归来区分多基因信号和群体分层。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;校正群体结构的方法主要有三种：在 GLM 中纳入前 K 个 PC 作为协变量（简单快速）、基因组控制统一缩放检验统计量（简单但不够精确）、以及 LMM 用 GRM 建模所有个体间的遗传关系（最灵活，同时处理结构和亲缘关系）。当前最推荐的是 LMM + PC 协变量的组合策略。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三者的内在联系&lt;/h2&gt;
&lt;p&gt;HWE 假设随机交配，偏离可能提示群体结构的存在。群体结构会产生虚假的 LD 模式，导致假阳性关联。而真实的 LD（物理连锁加群体历史）使 GWAS 可以通过 tag SNP 间接标记因果变异，但也需要统计方法来区分真实信号和混杂。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;HWE（随机交配） → 偏离 → 可能提示群体结构
                              ↓
群体结构 → 产生虚假 LD → 导致假阳性关联
                ↓
真实 LD → GWAS 可以间接标记因果变异
              ↓
         需要统计方法区分真实信号和混杂
              ↓
         LMM / PCA 校正群体结构
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;理解了这些，就可以进入下一个问题：表型的遗传架构是什么样的？&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;遗传力&lt;/h2&gt;
&lt;h3&gt;表型方差的分解&lt;/h3&gt;
&lt;p&gt;对于任何一个数量性状，其表型方差可以分解为：&lt;/p&gt;
&lt;p&gt;$$
V_P = V_G + V_E
$$&lt;/p&gt;
&lt;p&gt;其中 $V_G$ 为遗传方差，$V_E$ 为环境方差。进一步，遗传方差可以分解为：&lt;/p&gt;
&lt;p&gt;$$
V_G = V_A + V_D + V_I
$$&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;分量&lt;/th&gt;
&lt;th&gt;全称&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$V_A$&lt;/td&gt;
&lt;td&gt;加性遗传方差&lt;/td&gt;
&lt;td&gt;等位基因的独立加性效应&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$V_D$&lt;/td&gt;
&lt;td&gt;显性遗传方差&lt;/td&gt;
&lt;td&gt;同一基因座等位基因间的互作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$V_I$&lt;/td&gt;
&lt;td&gt;上位遗传方差&lt;/td&gt;
&lt;td&gt;不同基因座间的互作效应&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;狭义 vs 广义&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;狭义遗传力&lt;/strong&gt;（narrow-sense heritability）：&lt;/p&gt;
&lt;p&gt;$$
h^2 = \frac{V_A}{V_P}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;广义遗传力&lt;/strong&gt;（broad-sense heritability）：&lt;/p&gt;
&lt;p&gt;$$
H^2 = \frac{V_G}{V_P} = \frac{V_A + V_D + V_I}{V_P}
$$&lt;/p&gt;
&lt;p&gt;GWAS 和育种中我们主要关注&lt;strong&gt;狭义遗传力 $h^2$&lt;/strong&gt;。原因很直接：只有加性效应会稳定地传递给子代。显性和上位效应依赖特定的等位基因组合，在重组后会&quot;打散&quot;。GWAS 模型——无论是 GLM 还是 LMM——本质上检验的都是加性效应。&lt;/p&gt;
&lt;h3&gt;遗传力的正确理解&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;遗传力不是&quot;性状由基因决定的比例&quot;，而是&quot;&lt;strong&gt;在特定群体中、特定环境下，表型方差中可由加性遗传效应解释的比例&lt;/strong&gt;&quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;遗传力是群体属性，而非个体属性。同一个性状在不同群体和环境中的遗传力可能截然不同。一个经典例子：在食物供应充足的发达国家，身高的 $h^2 \approx 0.8$；但在营养不足的条件下，环境方差增大，$h^2$ 会显著降低。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;遗传力的估计方法&lt;/h2&gt;
&lt;h3&gt;双生子研究&lt;/h3&gt;
&lt;p&gt;基于同卵双生子（MZ，共享 100% 基因组）和异卵双生子（DZ，平均共享 50% 加性效应）的表型相关性差异：&lt;/p&gt;
&lt;p&gt;$$
h^2 \approx 2(r_{MZ} - r_{DZ})
$$&lt;/p&gt;
&lt;p&gt;不需要基因型数据，是最经典的遗传力估计方法。但假设 MZ 和 DZ 共享环境相同（等环境假设），可能高估遗传力。&lt;/p&gt;
&lt;h3&gt;系谱法&lt;/h3&gt;
&lt;p&gt;利用已知家系关系矩阵和 REML 方法估计 $V_A$ 和 $V_E$。&lt;/p&gt;
&lt;h3&gt;分子标记法：GREML&lt;/h3&gt;
&lt;p&gt;利用全基因组 SNP 数据构建&lt;strong&gt;遗传关系矩阵（GRM）&lt;/strong&gt;，用 REML 将表型方差分解为 SNP 解释的遗传方差和残差方差：&lt;/p&gt;
&lt;p&gt;$$
h^2_{SNP} = \frac{\sigma^2_g}{\sigma^2_g + \sigma^2_e}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GCTA-GREML&lt;/strong&gt; 是最广泛使用的实现。由此得到的是 &lt;strong&gt;SNP 遗传力 $h^2_{SNP}$&lt;/strong&gt;，通常&lt;strong&gt;小于&lt;/strong&gt;双生子研究的估计值，因为它们仅捕捉被分型 SNP 所标记的加性效应，不包括未被标记的稀有变异、结构变异和上位效应。&lt;/p&gt;
&lt;h3&gt;缺失遗传力&lt;/h3&gt;
&lt;p&gt;GWAS 发现的所有显著位点效应的总和通常仅解释遗传力的一小部分——这就是&lt;strong&gt;缺失遗传力问题&lt;/strong&gt;。可能的原因包括罕见变异、结构变异、小微效位点的累积、基因-基因互作、基因-环境互作、表观遗传因素等。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个重要的澄清：使用 GCTA-GREML 估计 $h^2_{SNP}$ 时，常见的 SNP 实际上捕获了相当比例的&quot;缺失遗传力&quot;，说明问题更多出在 &lt;strong&gt;GWAS 的检出阈值&lt;/strong&gt;而非遗传力本身的不可解释性。这也催生了 PRS 方法的发展——将所有 SNP 的效应聚合起来，而非只关注达到 $5 \times 10^{-8}$ 的位点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;多基因模型&lt;/h2&gt;
&lt;h3&gt;Fisher 的无穷小模型&lt;/h3&gt;
&lt;p&gt;R.A. Fisher 在 1918 年提出了数量遗传学的数学基础——&lt;strong&gt;无穷小模型&lt;/strong&gt;（infinitesimal model）。假设表型由无限多个基因座共同控制，每个基因座效应无穷小，各基因座效应相互独立且加性。在无穷小模型下，表型服从正态分布（中心极限定理），这与大多数数量性状的实际观察一致。&lt;/p&gt;
&lt;p&gt;现代 GWAS 中，效应量分布有多种假设：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;效应量分布假设&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;无穷小模型&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;所有 SNP 都有极小的非零效应&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;混合分布&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;少量 SNP 有非零效应 + 大量 SNP 效应为零&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;正态混合&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;效应量来自正态分布 + 零的点质量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;贝叶斯分布族&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;效应量服从某种先验分布（如 Laplace, t 分布）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实际数据更支持&quot;中间模型&quot;——存在少数大效应位点加大量微效位点共同控制表型，效应的分布可能是厚尾的。&lt;/p&gt;
&lt;h3&gt;对 GWAS 实践的启示&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需要大样本&lt;/strong&gt;：要检测解释 0.01% 表型方差的 SNP，通常需要数万到数十万个样本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要只关注显著位点&lt;/strong&gt;：大量未达 $5 \times 10^{-8}$ 阈值的 SNP 也携带真实的表型信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LMM 的动机&lt;/strong&gt;：LMM 用随机效应建模所有 SNP 的多基因背景贡献，恰好与多基因模型的理念一致&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;多基因风险评分（PRS）&lt;/h2&gt;
&lt;p&gt;多基因风险评分将 GWAS 的汇总统计转化为个体水平的遗传倾向预测：&lt;/p&gt;
&lt;p&gt;$$
\text{PRS}&lt;em&gt;i = \sum&lt;/em&gt;{j=1}^{m} \hat{\beta}&lt;em&gt;j \times G&lt;/em&gt;{ij}
$$&lt;/p&gt;
&lt;p&gt;其中 $G_{ij}$ 是个体 $i$ 在 SNP $j$ 上的效应等位基因数（0, 1, 2），$\hat{\beta}_j$ 是该 SNP 的估计效应量。&lt;/p&gt;
&lt;p&gt;主要方法从最简单的 P+T（Pruning + Thresholding）到 LDpred、PRS-CS、lassosum、SBayesR 等贝叶斯方法，核心区别在于对效应量分布的先验假设不同。&lt;/p&gt;
&lt;p&gt;PRS 在疾病风险分层和育种中的基因组选择方面有应用前景，但当前局限也很明显：跨群体可移植性差（欧洲人群训练的 PRS 在非洲人群中精度大幅下降）、仅捕获加性效应、本身不解释生物学机制。&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;群体遗传学和遗传力解释了 GWAS 的&quot;为什么&quot;——为什么需要大样本，为什么单个位点效应如此之小，为什么 LMM 是自然的模型选择。这些是理解后续统计建模的前提。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>CQ_tools：全自动化的染色体商 (CQ) 分析管道</title><link>https://georicl.cn/posts/bio-script-intro/bio-script-intro/</link><guid isPermaLink="true">https://georicl.cn/posts/bio-script-intro/bio-script-intro/</guid><description>介绍 CQ_tools 项目：一个集成了比对、计算与可视化功能的染色体商 (Chromosome Quotient) 分析工具</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;在性染色体鉴定的分析中，&lt;strong&gt;染色体商 (Chromosome Quotient, CQ)&lt;/strong&gt; 是一个非常有效的指标。为了简化这一分析流程，我开源了 &lt;strong&gt;CQ_tools&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;什么是 CQ_tools？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;CQ_tools&lt;/strong&gt; 是一个专为计算和可视化测序数据中 CQ 值而设计的综合生物信息学流水线。它不仅仅是一组脚本，而是一个完整的工具链，涵盖了从原始序列比对到生成交互式可视化报告的全过程。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/Georicl/CQ_tools&quot;&gt;Georicl/CQ_tools&lt;/a&gt;&lt;br /&gt;
::github{repo=&quot;Georicl/CQ_tools&quot;}&lt;/p&gt;
&lt;h3&gt;核心特性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全自动化比对&lt;/strong&gt;：集成 BWA MEM 比对和 Samtools 后处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;窗口化分析&lt;/strong&gt;：基于 &lt;code&gt;bedtools&lt;/code&gt; 灵活生成基因组窗口并计算覆盖度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;科学的标准化&lt;/strong&gt;：采用 CPM (Counts Per Million) 进行数据标准化，消除测序深度差异。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多维度可视化&lt;/strong&gt;：同时支持高分辨率静态图（PNG/PDF）和交互式 HTML 报告。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;核心工作流&lt;/h2&gt;
&lt;p&gt;CQ_tools 通过三个简洁的命令：&lt;code&gt;align&lt;/code&gt;、&lt;code&gt;cq&lt;/code&gt; 和 &lt;code&gt;plot&lt;/code&gt;，实现了分析逻辑。&lt;/p&gt;
&lt;h3&gt;1. 自动化比对 (&lt;code&gt;align&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;通过 &lt;code&gt;align&lt;/code&gt; 命令，你可以一键完成从 Fastq 到排序 BAM 的转换。它会自动处理 BWA 索引建立和 Samtools 排序工作。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python main.py align --fasta ref.fa --pair-1 R1.fq.gz --pair-2 R2.fq.gz --output-dir ./out
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. CQ 计算与过滤 (&lt;code&gt;cq&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;这是工具的核心。它首先将基因组切分为指定大小的窗口，然后计算雌雄样本在每个窗口中的 Reads 覆盖情况。通过 CPM 标准化后，计算 $CQ = \frac{CPM_F}{CPM_M}\times{1,000,000}$。&lt;/p&gt;
&lt;p&gt;你可以灵活设置 &lt;code&gt;cq-value&lt;/code&gt;（如 0.3）和 &lt;code&gt;threshold&lt;/code&gt;（最低 CPM占比）来精准锁定目标区域。&lt;/p&gt;
&lt;h3&gt;3. 可视化呈现 (&lt;code&gt;plot&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;数据不仅要准确，更要直观。&lt;code&gt;plot&lt;/code&gt; 命令可以生成全基因组范围内的 CQ 分布图。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;静态图&lt;/strong&gt;：适合放入论文或报告。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;交互式 HTML&lt;/strong&gt;：支持缩放、悬停查看具体窗口坐标和数值，是探索数据的利器。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;为什么选择 CQ_tools？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;环境简单&lt;/strong&gt;：使用 &lt;code&gt;uv&lt;/code&gt; 管理依赖，一行命令 &lt;code&gt;uv sync&lt;/code&gt; 即可完成环境配置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志完备&lt;/strong&gt;：内置统一的日志系统，每一步操作都清晰可查。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能优良&lt;/strong&gt;：支持多线程比对和并行计算，适合处理大型基因组数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;CQ 分析在识别 Y/W 染色体特有序列或拷贝数变异研究中具有重要意义。&lt;strong&gt;CQ_tools&lt;/strong&gt; 旨在将这一过程标准化、自动化，让研究者能将更多精力放在生物学意义的挖掘上。&lt;/p&gt;
&lt;p&gt;欢迎大家使用并提供反馈！如果你觉得有用，请在 GitHub 上点个 Star ⭐️。&lt;/p&gt;
</content:encoded></item><item><title>GraphPangenomePipeline：集成化的图泛基因组分析管道</title><link>https://georicl.cn/posts/graph-pangenome-pipeline-intro/graph-pangenome-pipeline-intro/</link><guid isPermaLink="true">https://georicl.cn/posts/graph-pangenome-pipeline-intro/graph-pangenome-pipeline-intro/</guid><description>介绍我开发的 GraphPangenomePipeline：一个从组装、索引到注释、变异检测的全流程图泛基因组分析管道</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;随着三代测序技术的发展，传统的线性参考基因组已难以满足对物种内复杂变异的描述。为了方便的进行图泛基因组的变异分析，我开发了 &lt;strong&gt;GraphPangenomePipeline&lt;/strong&gt; —— 一个模块化、自动化且容器化的图泛基因组分析平台。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;为什么需要图泛基因组？&lt;/h2&gt;
&lt;p&gt;在传统的线性基因组分析中，非参考序列（可选基因组）往往被简化为 PAV（存在/缺失变异），难以精准定位。&lt;strong&gt;图泛基因组 (Graph Pangenome)&lt;/strong&gt; 通过将多个个体的基因组以图形结构（Nodes &amp;amp; Edges）储存，能够完美保留倒位、转位以及复杂的结构变异（SV），真正实现了物种内全序列的集成。&lt;/p&gt;
&lt;h2&gt;GraphPangenomePipeline 架构&lt;/h2&gt;
&lt;p&gt;该管道基于 Python 开发，使用 &lt;code&gt;uv&lt;/code&gt; 进行高效的环境管理，核心集成了目前最主流的图泛分析工具：&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/Georicl/GraphPangenomePipeline&quot;&gt;Georicl/GraphPangenomePipeline&lt;/a&gt;&lt;br /&gt;
::github{repo=&quot;Georicl/GraphPangenomePipeline&quot;}&lt;/p&gt;
&lt;h3&gt;1. 核心组装：Cactus-Pangenome&lt;/h3&gt;
&lt;p&gt;管道的第一步调用 &lt;code&gt;minigraph-cactus&lt;/code&gt;。它通过分层比对的方法，将多个 Fasta 序列构建成一个包含结构变异的 GFA 图文件。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：基于参考基因组路径，通过 &lt;code&gt;minigraph&lt;/code&gt; 构建主干，再通过 &lt;code&gt;cactus&lt;/code&gt; 进行碱基级的对齐。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特性&lt;/strong&gt;：支持 Singularity 容器运行，避免了 Cactus 复杂的底层依赖安装问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 索引与统计：VG Toolkit&lt;/h3&gt;
&lt;p&gt;组装完成后，管道使用 &lt;code&gt;vg&lt;/code&gt; (Variation Graph) 工具集进行后处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autoindex&lt;/strong&gt;：自动构建 &lt;code&gt;giraffe&lt;/code&gt; 比对所需的 &lt;code&gt;.gbz&lt;/code&gt;、&lt;code&gt;.dist&lt;/code&gt; 和 &lt;code&gt;.min&lt;/code&gt; 索引。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;统计分析&lt;/strong&gt;：通过 &lt;code&gt;vg stats&lt;/code&gt; 和 &lt;code&gt;vg paths&lt;/code&gt; 评估图的连通性、节点总数以及各单倍型的路径完整性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 图谱注释：Grannot&lt;/h3&gt;
&lt;p&gt;如何知道图中的某个变异位于哪个基因上？管道集成了 &lt;code&gt;grannot&lt;/code&gt; 模块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;坐标投影&lt;/strong&gt;：将参考基因组的 GFF3 注释信息投影到整个图谱中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PAV 矩阵&lt;/strong&gt;：自动生成基因级的存在/缺失矩阵，直观展示不同个体间的基因组成差异。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 下游分析：WGS &amp;amp; Variant Calling&lt;/h3&gt;
&lt;p&gt;不仅是构建图，本管道还支持将大规模重测序数据比对回图谱：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Giraffe 比对&lt;/strong&gt;：利用高效的图比对算法，将 Reads 映射到复杂区域。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variant Calling&lt;/strong&gt;：基于 &lt;code&gt;vg call&lt;/code&gt; 进行变异检测，比传统线性比对具有更高的灵敏度和准确性。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;快速上手&lt;/h2&gt;
&lt;p&gt;管道采用 TOML 配置文件驱动，你可以根据需求运行全部流程或特定模块：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 运行全流程
python main.py --config config.toml --all

# 仅运行 WGS 比对模块
python main.py --config config.toml --wgs
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;未来展望&lt;/h2&gt;
&lt;p&gt;GraphPangenomePipeline 的初衷是为科研人员提供一个“开箱即用”的工具。目前我们正在优化 &lt;strong&gt;图转录组 (Graph Transcriptomics)&lt;/strong&gt; 的比对支持，以及更丰富的可视化输出，力求将复杂的图数据转化为易于理解的生物学发现。&lt;/p&gt;
&lt;p&gt;欢迎在 GitHub 上提出建议或贡献代码！&lt;/p&gt;
</content:encoded></item><item><title>新年快乐</title><link>https://georicl.cn/posts/happy-new-year/happy-new-year/</link><guid isPermaLink="true">https://georicl.cn/posts/happy-new-year/happy-new-year/</guid><description>祝大家新年快乐！万事如意！</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;style is:inline&amp;gt;
/* 仅针对 main 区域内的 card-base 应用红色背景 &lt;em&gt;/
main#swup-container .card-base {
background-color: rgba(225, 29, 72, 0.90) !important;
backdrop-blur: md;
}
/&lt;/em&gt; 强制卡片内所有文本颜色为白色 &lt;em&gt;/
main#swup-container .card-base,
main#swup-container .card-base h1,
main#swup-container .card-base h2,
main#swup-container .card-base h3,
main#swup-container .card-base h4,
main#swup-container .card-base p,
main#swup-container .card-base li,
main#swup-container .card-base div,
main#swup-container .card-base span,
main#swup-container .card-base strong,
main#swup-container .card-base b,
main#swup-container .card-base i,
main#swup-container .card-base em,
main#swup-container .card-base blockquote,
main#swup-container .card-base a:not(.link-underline) {
color: white !important;
}
/&lt;/em&gt; 处理带透明度的辅助文本 &lt;em&gt;/
main#swup-container .card-base .text-black/90,
main#swup-container .card-base .text-black/75,
main#swup-container .card-base .text-black/50,
main#swup-container .card-base .text-black/30 {
color: white !important;
opacity: 0.9 !important;
}
/&lt;/em&gt; 处理图标颜色 */
main#swup-container .card-base .transition.h-6.w-6 {
background-color: rgba(255, 255, 255, 0.5) !important;
color: white !important;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
&lt;h1&gt;2026 新年快乐！&lt;/h1&gt;
&lt;p&gt;在这个辞旧迎新的时刻，祝愿大家在这一年里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;身体健康&lt;/strong&gt;，万事如意&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学业/事业有成&lt;/strong&gt;，更进一步&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;心想事成&lt;/strong&gt;，好运连连&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🧨🧨🧨&lt;/p&gt;
&lt;p&gt;祝大家在新的一年里，像这满屏的红色一样，红红火火！&lt;/p&gt;
</content:encoded></item><item><title>图泛基因组的组装</title><link>https://georicl.cn/posts/%E5%9B%BE%E6%B3%9B%E5%9F%BA%E5%9B%A0%E7%BB%84/2026-01-27/</link><guid isPermaLink="true">https://georicl.cn/posts/%E5%9B%BE%E6%B3%9B%E5%9F%BA%E5%9B%A0%E7%BB%84/2026-01-27/</guid><description>图泛基因组的组装, 注释与重测序变异检测</description><pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;什么是图泛基因组&lt;/h1&gt;
&lt;p&gt;因为真核生物的基因组包含大量的间隔区域, 同时存在较大的个体差异, 因此泛基因组可以表示为该物种内的所有DNA序列集合, 因此泛基因组组装的核心包含一个&lt;strong&gt;核心基因组&lt;/strong&gt;和表示其他个体的&lt;strong&gt;可选基因组&lt;/strong&gt;.&lt;br /&gt;
图泛基因组和以往的线性泛基因组组装不同, 线性泛基因组只是将所有的可选基因组中识别的PAVs组装为线性基因组, 但是该方法无法描述个体间变异来源或者对基因组中存在的PAVs进行精准定位; 图泛基因组则将所有线性基因组之间的变异以图形的格式储存.&lt;/p&gt;
&lt;h1&gt;图泛基因组的组装&lt;/h1&gt;
&lt;p&gt;图形泛基因组的组装主要依赖minigraph-cactus进行:&lt;/p&gt;
&lt;h2&gt;准备基因组配置文件&lt;/h2&gt;
&lt;p&gt;需要准备一个配置文件包含所有的基因组信息(seqFile), 格式为:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GenomeA /path/to/genomeA.fa
GenomeB /path/to/genomeB.fa
GenomeC /path/to/genomeC.fa
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;使用cactus进行graph pangenome的组装:&lt;/h2&gt;
&lt;p&gt;在该步骤中使用了singularity 已经cactus的镜像构建以避免源代码构建cactus产生的错误:&lt;br /&gt;
&lt;code&gt;singulairty pull cactis.sif docker://quay.io/comparative-genomics-toolkit/cactus:latest&lt;/code&gt;&lt;br /&gt;
cactus是一个组装泛基因组的复杂工具, 具有大量的可调参数与可选软件.&lt;br /&gt;
最简单的运行方式为: &lt;code&gt;cactus-pangenome ./jobStore ./seqFile --reference GenomeA --maxCores 32 --outDir ./ --outName Out&lt;/code&gt;&lt;br /&gt;
:::note
解读cactus 的参数设置:&lt;br /&gt;
jobStore: cactus的运行结果存放位置.&lt;br /&gt;
seqFile: 为步骤1 准备的基因组配置文件, 默认的图泛组装核心(--reference)为配置文件中的第一个基因组.&lt;br /&gt;
--maxCores (int): 运行一个job时的最大核心数.&lt;br /&gt;
--outDir: 运行结果存放的目录.&lt;br /&gt;
--outName: 运行结果存放的文件.&lt;br /&gt;
--gbz --gfa --vcf --hal: 结果输出的格式, 可以多选
&lt;strong&gt;可选参数&lt;/strong&gt;&lt;br /&gt;
cactus具有丰富的可调参数, 以下给出一些我自己使用的时候觉得可以调整, 以提高检测效率的参数.&lt;br /&gt;
--reference: 默认图泛基因组核心, 这个不用过多解释了.&lt;br /&gt;
--minLen default=100k: 只有大于该值的片段才会被识别为该图需要的结构变异(SV), 如果构建图泛的物种亲缘关系接近可以将该值调小.&lt;br /&gt;
--filter default=2: 过滤掉出现在少于&lt;code&gt;--filter&lt;/code&gt;个单倍型中的节点, 如果需要所有节点可以设置为0.&lt;br /&gt;
--clip default=1000: 剪切掉未对齐且长度小于&lt;code&gt;--clip&lt;/code&gt;值的末端序列.&lt;br /&gt;
:::&lt;/p&gt;
&lt;h2&gt;使用vg进行自动索引&lt;/h2&gt;
&lt;p&gt;由于后续的比对与计算SNP的位点等功能需要使用到vgtools, 而比对的核心是使用vg giraffe, 因此需要先自动索引使得生成min文件等.&lt;br /&gt;
在该步骤中, vg会读取由cactus组装得到的gfa文件, 在读取该步骤前, 我们需要先使用&lt;code&gt;--workflow giraffe&lt;/code&gt; 确定vg的工作流是使用giraffe 进行后续reads的比对, 因此他会自动运行一个pipeline, 包含&lt;code&gt;construct&lt;/code&gt;, &lt;code&gt;index&lt;/code&gt;, &lt;code&gt;gbwt&lt;/code&gt;(如果有的话), &lt;code&gt;snarls&lt;/code&gt;, &lt;code&gt;index&lt;/code&gt;, 分别表示: &lt;strong&gt;构建图&lt;/strong&gt;, &lt;strong&gt;构建图的索引&lt;/strong&gt;, &lt;strong&gt;构建单倍体索引(如果有的话)&lt;/strong&gt;, &lt;strong&gt;构建气泡图&lt;/strong&gt;, &lt;strong&gt;寻找基于气泡图(snarls)的索引距离&lt;/strong&gt;.&lt;br /&gt;
:::note&lt;br /&gt;
&lt;em&gt;.snarls&lt;/em&gt;是文件拓扑索引, 其中记录了所有参与构建基因组的哪些部分是等位基因变异或剪接分支.&lt;br /&gt;
:::&lt;br /&gt;
如果有多个群体和多个部位的RNA-seq部位, 还可以进行&lt;em&gt;RNA-seq&lt;/em&gt;的比对, 用于观察到底是什么基因变异, 而RNA-seq的比对需要使用&lt;code&gt;vg index&lt;/code&gt;中计算的gcsa文件, 因此在设计的pipeline中可以重新跑一次&lt;code&gt;vg autoindex&lt;/code&gt;, 但是workflow改为mpmap以生成gcsa文件, 否则无法进行图转录组比对.&lt;br /&gt;
:::note&lt;br /&gt;
gcsa文件是什么?&lt;br /&gt;
&lt;em&gt;gcsa&lt;/em&gt;是一种全文索引, 可以用于处理graph的结构, 包含的信息为: &lt;em&gt;K-mer路径信息&lt;/em&gt;, 记录了图中所有长度达256bp的可能路径.&lt;br /&gt;
:::&lt;/p&gt;
&lt;h2&gt;图泛基因组的注释&lt;/h2&gt;
&lt;h2&gt;图泛基因组与DNA测序数据&lt;/h2&gt;
&lt;p&gt;由于图泛基因组以graph的方式储存了多个基因组相对于reference基因组的差异, 因此也可以使用多个群体(物种)的全DNA测序数据去mapping到图泛基因组上, 以展示DNA测序层面上, 测序的群体与图泛基因组所有包含的基因组之间的结构差异关系, 并且总结得到不同群体中所包含的变异关系.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DNA测序数据mapping到图泛基因组&lt;br /&gt;
由于已经先使用&lt;code&gt;vg autoindex&lt;/code&gt;提前构建好了基于&lt;code&gt;giraffe&lt;/code&gt;所需的索引, 因此可以直接运行&lt;code&gt;vg giraffe&lt;/code&gt;, 并且输入测序得到的fq文件即可.&lt;pre&gt;&lt;code&gt;vg giraffe -Z graph.gbz [-d graph.dist [-m graph.withzip.min -z graph.zipcodes]] &amp;lt;input options&amp;gt; [other options] &amp;gt; output.gam
# .dist, .min, .zipcodes 都是通过autoindex可以自动生成的
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于gam文件很大, 如果是输入的是群体测序的数据, 那么会得到非常多个gam文件, 可能会对硬盘储存的压力很大, 因此可以使用&lt;code&gt;vg pack&lt;/code&gt;压缩gam文件.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将比对得到的图数据转换为线性坐标&lt;br /&gt;
通过图泛基因组比对得到的变异数据(.gam)事实上是记录了reads比对上图泛基因组的详细信息.  其中储存了图中每个node, 每个edge被reads覆盖的信息, 其中存在了极多的冗余的信息, 因此需要使用&lt;code&gt;vg call&lt;/code&gt;, 因此我们可以判断在图中某一个分支处，Read 的覆盖程度是否足以证明该变异在样本中真实存在, 亦或者得到图泛基因组中的结构差异。但是由于其是基于泛基因组的路径比对得到的, 所以他不能基于未知的群体去判断未知群体中拥有的特异序列, 此时可能需要新的方法 -- &lt;code&gt;vg augment&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>基因组分析总述</title><link>https://georicl.cn/posts/%E5%9F%BA%E5%9B%A0%E7%BB%84%E8%80%81%E6%97%A7%E6%9D%82%E8%B0%88/2025-12-18-01-53/</link><guid isPermaLink="true">https://georicl.cn/posts/%E5%9F%BA%E5%9B%A0%E7%BB%84%E8%80%81%E6%97%A7%E6%9D%82%E8%B0%88/2025-12-18-01-53/</guid><description>关于基因组相关所做的所有成果的一些总述</description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;基因组的第一步 -- 基因组组装&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;前期的准备工作 -- 基因组survey:&lt;br /&gt;
在进行基因组组装前, 我们需要对基因组大小和复杂度进行一个估计, 在以前可能会使用流式细胞仪技术进行测试, 在测序成本降低的今天, 我们更多采用使用二代测序数据进行基因组survey的方法进行耗时很短, 更准的survey&lt;/p&gt;
&lt;p&gt;1.1 基因组survey的核心计算方式 &lt;strong&gt;K-mer&lt;/strong&gt;分析:&lt;br /&gt;
k-mer是一段长度为k的序列, 而后面的mer即为monomeric unit, 把测序reads分成长度为k的单元, 步长为1.此时进行滑动计数, 若一个片段长度为L, 则能生成L-k+1个K-mer片段.&lt;br /&gt;
1.2 基因组survey的工具 jellyfish:&lt;br /&gt;
&lt;a href=&quot;https://github.com/gmarcais/Jellyfish&quot;&gt;jellyfish&lt;/a&gt; 是一个开源的github工具, 用于进行K-mer分析.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 计数
jellyfish count -m 21 -s 100M -t 10 -C reads.fasta # jellyfish的官方示例计数命令, -m为k-mer的长度, -s为使用的内存大小, -t为线程数
# 进行矩形图的计算输出
jellyfish histo mer_counts.jf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1.3 使用结束&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Contig的初步组装&lt;/h1&gt;
&lt;h2&gt;使用hifiasm&lt;/h2&gt;
&lt;p&gt;hifi数据的首选还是hifiasm, 不仅快, 而且N50的指标相当优秀.&lt;br /&gt;
::github{repo=&quot;chhylp123/hifiasm&quot;}
hifiasm的命令相当的简单, 并且没什么手动的空间.&lt;br /&gt;
&lt;code&gt;hifiasm -t 30 -o hifiasm --h1 h1.fq.gz --h2 h2.fq.gz hifi.fq.gz # hifi+hic命令&lt;/code&gt;&lt;br /&gt;
因为这是第一次尝试拆分单倍型并进行后续的挂载, 我们一开始使用hifiasm, 并使用Hi-C + hifi 数据模式进行, 在hic模式下, hifiasm默认会生成hap1/hap2两套基因组(即拆分的二倍体单倍型基因组).&lt;br /&gt;
但是在约50x的Hifi数据的情况下, 我们得到的结果并不理想, 在CPhasing的挂载阶段得出的plot可以发现存在大量的挂载错误, scaffold应当是同向的, 而不应该是在互作图上展现为镜像. 因此尝试使用canu进行重新初步组装&lt;/p&gt;
&lt;h2&gt;使用canu&lt;/h2&gt;
&lt;p&gt;由于使用hifiasm直接进行分型失败, 因此重新尝试使用canu组装一个二倍的基因组后, 使用CPhasing进行基因组挂载后由CPhasing进行拆分.&lt;/p&gt;
&lt;p&gt;:::warning
Canu 已经在2021年停止维护, 如果是使用最新的ont和hifi数据一起组装的话建议还是使用更新的软件进行初步挂载, 可以得到更好的结果.&lt;br /&gt;
:::&lt;br /&gt;
canu的使用方法更加的复杂, 并且canu本身支持服务器集群运算, 因此需要更详细的参数调整以获得更好的结果(canu需要你先进行基因组survey, 而hifiasm是由hifiasm中的&lt;em&gt;yak&lt;/em&gt;进行k-mer计算的).&lt;/p&gt;
&lt;h1&gt;分型基因组的挂载 --CPhasing&lt;/h1&gt;
&lt;p&gt;::github{repo=&quot;wangyibin/CPhasing&quot;}&lt;/p&gt;
&lt;p&gt;对于使用hifiasm进行了分型挂载的基因组, 对于一个二倍体而言可以得到hap1与hap2两个基因组, 使用CPhasing进行基因组分型的挂载的效果会更好.&lt;/p&gt;
</content:encoded></item><item><title>12月度过大半的杂谈</title><link>https://georicl.cn/posts/12%E6%9C%88%E5%BA%A6%E8%BF%87%E5%A4%A7%E5%8D%8A%E7%9A%84%E6%9D%82%E8%B0%88/2025-12-18-01-53/</link><guid isPermaLink="true">https://georicl.cn/posts/12%E6%9C%88%E5%BA%A6%E8%BF%87%E5%A4%A7%E5%8D%8A%E7%9A%84%E6%9D%82%E8%B0%88/2025-12-18-01-53/</guid><description>今日杂谈的一点碎碎念</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;繁忙的11月和12月的忙中偷闲&lt;/h1&gt;
&lt;p&gt;没想到研究生的11月和12月可以过的那么繁忙, 突然一眨眼就已经到了研究生生涯过半的日子.&lt;br /&gt;
回头想来, 好像我的前半段的研究生生涯一直在一种淡淡的&lt;strong&gt;焦虑和彷徨&lt;/strong&gt;中度过.&lt;/p&gt;
&lt;h2&gt;我是为了什么决定继续读书的呢?&lt;/h2&gt;
&lt;p&gt;好像从本科开始, 大家就一度认为, 似乎我们这个专业天生就需要更长的学习生涯.&lt;br /&gt;
我们是不是在用熬这个词, 来形容我们的读书时光呢?&lt;br /&gt;
怀揣着早日工作的梦想我从本科顺利毕业后前往了一家微生物相关的公司进行工作, 但是在工作的路程中发现, 似乎工作的内容总是不让人那么提得起劲, 我在日复一日的涂着平板, 数着微生物菌落的数量, 似乎这是一种一望到头的生活. 这种生活与我之前的幻想莫名的契合, 但我却越发厌倦这种日子--并非因为不喜欢当前的工作, 而是我发现自从工作开始, 我似乎能学会的技能变得愈发的模糊和不可捉摸了.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;要不干脆就放弃工作, 再去深造一下吧?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一旦种下这种微小的希望, 似乎我就陷入理想的沼泽里, 我确实需要再去重新进修一下, 对吧?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所幸家庭幸福, 运气的眷顾, 虽然磕磕碰碰, 我却也有所着落.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;我与生物的纠葛&lt;/h2&gt;
&lt;p&gt;很幸运, 我仍作为一名生物相关专业的学生, 开始与计算机打交道. 说来真是嘲弄, 我对于生物原理的一切都并不深入了解, 但是却又可以在与人交流中就这样不自觉的联系上生物的关系, 似乎这就是生物带给我的魔力吧. 我又重新捡起了生物学(至少是生物学的一部分), 作为一名学生重新的上路.&lt;br /&gt;
但说来奇怪, 似乎我的研究生生涯在第一年上与我认识的同门们有些许不同: 我总是认为似乎导师们其实对我们并没有一些奇奇怪怪, 杂七杂八的要求--抛开对实验室的硬件要求以外, 我们的导师并没有给予我们过高的期望--正如我对导师们的期望一样, 他不对我们抱有过高的期望, 而我同样也不对导师怀揣更高的要求--一位不对我有更多&lt;strong&gt;额外要求&lt;/strong&gt;的导师, 我还能恬不知耻的要求更多吗?&lt;/p&gt;
&lt;h2&gt;纯粹对于技术的好奇诞生出纯粹的追求&lt;/h2&gt;
&lt;p&gt;我不得不承认我确实喜欢对着电脑进行一些莫名其妙的操作, 哪怕是对于计算机的一些交互而言, 我也可以玩上一阵子, 在第一年中, 我捡起了&lt;em&gt;python&lt;/em&gt;与&lt;em&gt;R&lt;/em&gt;, 不得不承认我现在已经离不开他们了, 我每天都为了自己似乎在这两个语言的使用熟练度上有所进步而开心, 没有过多要求的导师在这种时候体现出了充分的必要性.&lt;br /&gt;
我在完成了我的工作后, 我似乎是&lt;strong&gt;享受的&lt;/strong&gt;学习着一些似乎看起来无关紧要的技能, 在这种方面的学习中, 我也更加确立我期颐的未来: 我不是纯正的生物学的学生, 我似乎对于实验的内容不甚关注, 甚至我在实验领域展现的也是笨手笨脚的, 但我对于信息领域抱有充分的热情(数学除外, 我十分承认我在数学领域是失败者), 我十分享受这种纯粹对于技术的追求, 以及学习的饥渴, 我不停的接收各种更新的技术, 更新的知识...与更重的焦虑,我正在向着开发的方向学习...或许吧?&lt;/p&gt;
&lt;h2&gt;对于未来的彷徨&lt;/h2&gt;
&lt;p&gt;我确实不知道我未来是该做什么的, 无论我对任何人都宣称&apos;走一步, 看一步吧&apos;,也无法掩盖我的彷徨--对于未来的恐惧.&lt;br /&gt;
有失败就业经历的我自然弥散着淡淡的对就业的恐惧, 我也不确定我如果是正常的毕业, 能从事什么和以前不一样的行业, 这是属于我们这一代人共同的焦虑源泉吧, 在未来未定的情况下, 我们无论做多少似乎都仍是不足, &lt;strong&gt;我也不知道是从什么时候开始, 我们变得无法停下, 似乎被技术的快速膨胀不停的裹挟向前&lt;/strong&gt;.&lt;br /&gt;
但对于继续深造的话, 我的期颐反而使得我变得更加迷茫--我能做到我梦想中的事情吗? 我不停浏览着其他导师组公开招聘的要求, 尽管我心中已有想法, 但对未来的不可掌控感仍每天推动着我不停的前进, 我对于成果的追求已远超毕业的期许, 我还是期望以一名生物信息学相关的专业学生继续深造.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
难得写完开题报告, 度过了繁忙的11月和12月初, 难得有空坐在电脑前好好回忆自己需要做的事情, 这是我第一次系统的思考我以后的一年半里我的主线任务, 但也很幸运我的工作应该可以足以我顺利毕业...&lt;strong&gt;或许吧&lt;/strong&gt;?&lt;br /&gt;
我重新回顾我一年来发生的故事...技术的追求, 摘下记忆的些许碎片, 记录在此警示自己的梦, 和惩罚自己的懈怠.&lt;br /&gt;
但同时我不得不向自己发问: 技术是无止境的, 我能保证我不会被雪崩般的技术狂潮所掀起的巨浪淹没吗?&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>我喜欢耶加雪菲</title><link>https://georicl.cn/posts/2025-12-17-01-59/2025-12-17-01-59/</link><guid isPermaLink="true">https://georicl.cn/posts/2025-12-17-01-59/2025-12-17-01-59/</guid><description>难得闲了下来，思绪又把我拉到了过去。</description><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我已经连喝了一个月的耶加雪菲。好像又回到闲适的那段生活，每天上上课，看看书，每天晚上放学后打打球，跑跑步，好像也没什么烦恼，似乎按照轨迹生活下去，我会成为路上匆忙行人中的一员————或许在十年后吧。为生活行走，变得认识了生活的意义，从闲适时间的发散到满嘴都是工作的残渣，似乎也不是那么遥远的故事。又或许有不一样的故事，有那么多种可能，抑或是我又变成了另外一种不一样的一员，或许我会喜欢上喝酒，会喜欢上繁华的夜景。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;似乎被车撞了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本身就寥寥无几的回忆走马灯式晃过，我发现我在意的生活, 却好似什么都没拥有。&lt;br /&gt;
翻滚了很远，生活和我开了一个不小的玩笑，我好像什么事都没有，除了擦伤的疼痛提醒着我，生活的馈赠代价也往往让人难以接受。&lt;/p&gt;
&lt;p&gt;我回到了童年的咖啡馆，我推开了那扇淡蓝色的门， 坐在红色的高脚凳上“我想要一杯耶加雪菲。”&lt;br /&gt;
我似乎真的喜欢耶加雪菲，无论他这种译名还是平价的风味。我喜欢安安静静的看书，看各种各样可能有实际意义的书，我好像什么都想知道，直到他问我“你为什么一直看工具书？”&lt;br /&gt;
生活好像确实是一道无解的命题，正如逻辑电路中的0和1，可能从1和0本身就是答案，但是1到0中间的过程那就是我从活着到在别人心里活着的生活。&lt;br /&gt;
我走晚上的河岸边，莫名的烦扰游荡在身边，似乎需要乙醇麻醉我的神经，又或是尼古丁的刺激，在短暂的时光里我似乎不受烦恼的骚扰。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;是这样吗&lt;br /&gt;
我还是推开了淡蓝色的那扇门，生活的琐碎，荡碎在咖啡液上的形成倒影，我对咖啡似乎本身就有点上瘾的症状，似乎和酗酒也没有什么本质区别。或者？我只是换了样东西沉迷。可能我并没有办法消解我的苦恼。
我打开了《夜巡》，自己好像变成了那位双手离开方向盘的年轻人。&lt;br /&gt;
好像在曾经的回忆里出现过这样场面，她对我说：“你是一个看起来很悲伤的，喜欢窝在角落安静看书的人，眼睛里没有光。”&lt;br /&gt;
耶加雪菲这个名字陪伴了我一年又一年，一夜又一夜。我喜欢这种风味。我失眠的夜晚和兴奋的早上，都在提醒我生活的实际存在。我用强迫自己清醒的方式惩罚自己的无知，我害怕闭上眼睛后冒出的幻想。梦里我日复一复拉下那个摇杆，一个巨大的齿轮碾碎了梦。&lt;br /&gt;
但是我知道我喜欢耶加雪菲。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;:::note&lt;br /&gt;
其实这只仍是一种变相的上瘾罢了, 无论是耶加雪菲...亦或是酗酒之人, 我们本质并没什么差别, 在同样的阳光下做着一样荒诞的梦.&lt;br /&gt;
:::&lt;/p&gt;
</content:encoded></item><item><title>我为什么学习生物信息</title><link>https://georicl.cn/posts/why-study-bioinformatics/why-study-bioinformatics/</link><guid isPermaLink="true">https://georicl.cn/posts/why-study-bioinformatics/why-study-bioinformatics/</guid><description>为什么我们需要学习生物信息，为什么生物学可以很好的与计算机信息处理结合</description><pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;为什么我们需要学习生物信息，为什么生物学可以很好的与计算机信息处理结合&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;为什么我们需要学习生物信息&lt;/h2&gt;
&lt;p&gt;随着时间的发展，人们认识到，数量庞杂的大型记录数据，已经远远超过了人力可以处理的能力上限，需要依靠计算机的高速数据处理能力进行数据的计算与分析。并且由于序列的构成，我们很轻易就发现了其非常适合和计算机结合的方向，构成DNA和RNA的碱基一共为五种，分别为：&lt;strong&gt;A&lt;/strong&gt;、&lt;strong&gt;T&lt;/strong&gt;、&lt;strong&gt;G&lt;/strong&gt;、&lt;strong&gt;C&lt;/strong&gt;、&lt;strong&gt;U&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;将碱基视为基本单位后，我们可以发现序列的组成一共有五个不同的&lt;strong&gt;字符&lt;/strong&gt;反复出现构成事实上的&lt;strong&gt;字符串&lt;/strong&gt;，也就是生物学意义上的DNA或者RNA，这使得有关对序列的处理与计算天然适合使用计算机进行（DNA或者RNA，可以以一个文本文件的方式被计算机正确识别，通过定义一个&lt;strong&gt;特殊&lt;/strong&gt;的文本格式，可以给予包含DNA的文本文件更多的信息）
如目前使用广泛的&lt;code&gt;fasta&lt;/code&gt;格式，是经典的序列存放文件格式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 这是一个fasta文件的示例
&amp;gt;DNA-message #以&amp;gt;开头的行被定义为序列的注释行，是下文序列的实际生物学信息
AAAAAAAAATTTTTTTGGGGGCCCCCC
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;生物学为什么可以和计算机很好的结合&lt;/h2&gt;
&lt;p&gt;首先最好的例子就是可以直观文本化的DNA序列，单位为碱基的DNA序列分析，比对，可以将复杂立体的化学组分序列结构，转化为一维的单一的字符串，并且通过对字符串
的处理，可以简单的得到特定DNA的统计结论与分布特征。根据得到的统计结论和分布特征，又从这些结论衍生出，繁多的分析种类，将生物序列排序的内涵直观的体现出来，
以更好的进行生物学的序列之间的特征挖掘与研究（但生物信息学的分析现在已不仅仅是对于单一序列的处理，通过广泛的数据库结合，我们以序列中的数据进行查询可以得到
更多相关的信息，并以这些信息为辅助要素将一维的字符串数据拓展为多维立体的数据模型（比如通过氨基酸序列，结合计算得出各氨基酸的理化性质，可以预测蛋白质的结构等）&lt;/p&gt;
&lt;h2&gt;为什么我会学习生物信息&lt;/h2&gt;
&lt;p&gt;我现在的专业与生物学本身有些距离，甚至也更偏向生物学经典的实验上，但我本人对使用计算机进行操作有足够的乐趣，并可以简单的理解计算机运行的逻辑，因此我最终选择尝试将计算机与生物技术相结合。&lt;/p&gt;
&lt;h2&gt;关于一些其他想说的&lt;/h2&gt;
&lt;p&gt;在目前的环境下，实际上计算机已经融入了我们的日常生活，而生物信息学的飞速发展也让最早的生物信息学技术在稀缺性上产生了缺失，进行一些&lt;strong&gt;常见&lt;/strong&gt;的分析变得越来越容易，
在这个背景下，一些&lt;strong&gt;最底层&lt;/strong&gt;的生物信息分析所得出的结果，在研究技术得到飞速发展的今天来看，是缺乏&lt;strong&gt;说服力&lt;/strong&gt;的，请注意我的本意并非说明最底层的分析不重要，
而是最底层的分析难度的大幅降低，其在实验内容上的重要性大幅降低，由此会给大家产生一个错觉：&lt;code&gt;生物信息学的分析是不重要的，反正做实验也可以做出来，生物信息学的分析得到的只是数据推测&lt;/code&gt;。
我一开始也抱有这种错觉，这种错觉源于RNA-seq的&lt;em&gt;不确定性&lt;/em&gt;，由于对前沿发展的认知匮乏，一度走入怪圈。&lt;/p&gt;
&lt;p&gt;实际上是这样的吗？&lt;/p&gt;
&lt;p&gt;对这个结论放到现在来看，我认为并不是生物信息学的问题，而是我们掌握的技术并&lt;strong&gt;不全面&lt;/strong&gt;所导致的。
根据最简化版本的中心法则而言：&lt;code&gt;DNA-&amp;gt;RNA-&amp;gt;Protein&lt;/code&gt;我们以最基础的分析技术，如RNA-seq分析技术而言，我们只单纯的是解析了DNA、RNA这两个单项，由产物的源头与结果
去猜测中间的过程，中间是缺乏解释的，因此我们仅仅是停留在最基础的一步。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DNA的转录过程在中心法则中可以简单的拓展一下，拓展为：在开放染色质区域中，TF和RNA聚合酶II在Gene区域上游结合，由此开始基因的转录，将DNA转录为RNA。
为了弥补对过程解释的缺失，生物信息又开发了诸如ChIP-seq之流的检测开放染色质和转录因子的测序以及分析方法，由此得到的完整分析结果，是一个确定性的结论。完整的
解释了从DNA到RNA的转录过程，解开了DNA-RNA的对应关系。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;strong&gt;对于分析结果的可信度与验证&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;事实上经过&lt;strong&gt;完整&lt;/strong&gt;分析流程得出的结果是在选定置信区间内是可信的&lt;em&gt;结果&lt;/em&gt;，与实际进行化学实验的结果是称为：&lt;em&gt;对应关系&lt;/em&gt;，是一个互相验证的过程，
但并不是你的生物信息学的结果是需要&lt;strong&gt;证明可信&lt;/strong&gt;的。正如你不需要怀疑基因组上存在的序列是否是物种真实内部存在的一般，这种信任贯穿科学实验的全部流程。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;就像你会很合理的填充一些近源物种的一些相似性状的表达过程可能是同一个通路调控的一般，是一种基于概率学可信度的测试。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;我不认为完整的分析得到的结果是需要实验证明的，需要证明的只是你做的分析是正确的进行了完整的流程才得出了结果。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关于一些生物信息学技术和生物学原理结合的思考，会在其他博文中聊到。
以上的思考是需要对于进行生物信息的技术对实验数据进行处理时所进行的一些胡思乱想，该文不包含关于软件算法开发方面的看法，而是对于软件与生物学实践结合的意义得出。
的结果进行的一些基于现状的思考。&lt;/p&gt;
</content:encoded></item></channel></rss>