酶改造-LD矩阵计算原理与方法

本文详解 连锁不平衡(Linkage Disequilibrium,LD) 矩阵的计算原理与实现方法,重点对应 AiCE(AI-informed Constraints for protein Engineering,人工智能约束蛋白工程)框架 AiCEmulti 模块中的 02.caculated_ld.py 流水线。与 酶改造-modelpaper-AiCE 中 §4.4 互补:该文侧重框架总览,本篇专述 LD 的数学定义、编码策略与组合打分。

段末注释AiCECell 2025 发表的通用蛋白突变设计框架,详见 酶改造-modelpaper-AiCEAiCEmulti 为其组合突变提名模块。


1. 什么是 LD 矩阵

连锁不平衡(Linkage Disequilibrium,LD) 描述两个位点上等位基因(allele)在样本间非随机共现的程度。在群体遗传学中,若位点 A 的等位基因与位点 B 的等位基因在个体间倾向于一起出现(或一起不出现),则称二者存在 LD。

AiCE 将这一概念借用于蛋白工程:把逆折叠采样得到的多序列比对(Multiple Sequence Alignment,MSA)中每条序列视为一个「个体」,把各位点的氨基酸(经伪 DNA 编码后)视为「等位基因型」,用 LD 衡量哪些位点的突变在采样序列中倾向于协同出现。高 LD 的组合突变,负向上位效应(negative epistasis) 风险相对更低。

段末注释等位基因指同一基因座上的不同变异形式;AiCE 中「基因座」被映射为序列位点。MSA 为多条同源序列按位点对齐的表示。


2. 经典 LD 的数学定义

对两个双等位基因位点,记:

  • 位点 A:等位基因 (A/a),(A) 的频率为 (p_A)
  • 位点 B:等位基因 (B/b),(B) 的频率为 (p_B)
  • 单倍型 (AB) 的联合频率为 (p_{AB})

2.1 连锁不平衡系数 (D)

[
D = p_{AB} - p_A \cdot p_B
]

  • (D = 0):两地位点统计独立(无 LD)
  • (D \neq 0):存在非随机关联

2.2 标准化 (D’)(Lewontin 标准化)

[
D’ = \frac{D}{D_{\max}}, \quad D_{\max} = \min\bigl(p_A p_b,; p_a p_B\bigr)
]

(D’) 取值范围为 ([-1, 1]),便于在不同等位基因频率下比较 LD 强度。

2.3 平方相关系数 (r^2)(AiCE 实际使用)

[
r^2 = \frac{D^2}{p_A(1-p_A), p_B(1-p_B)}
]

(r^2 \in [0, 1]):

(r^2) 含义
(= 1) 两地位点完全共变
(\approx 0) 两地位点近似独立

AiCE 官方实现通过 PLINK--r2 square 输出 (r^2) 方阵,即 .ld 文件中的数值。

段末注释PLINK 为群体遗传学常用基因型分析工具;Hardy–Weinberg 平衡(HWE) 等群体遗传假设在 AiCE 场景下不适用,故流水线中关闭 HWE 检验。


3. AiCE 中 LD 矩阵的计算流程

AiCE 的 LD 计算在官方仓库 scripts/02.caculated_ld.py 中实现,整体为四步流水线:

1
2
3
4
5
flowchart LR
A["蛋白 MSA (.fa)"] --> B["伪 DNA 翻译"]
B --> C["VCF 变异文件"]
C --> D["PLINK --r2 square"]
D --> E["LD 矩阵 (.ld)"]

命令

1
python scripts/02.caculated_ld.py <seq_dir> <output_ld_dir>

对每个 *.fa 输入,输出同前缀的 .vcf.ld 文件。


3.1 Step 1:蛋白 MSA → 伪 DNA

输入:逆折叠采样得到的 .fa 文件。首条序列为野生型(wild type,WT)参考,其余 (N) 条为采样序列(默认 (N = 1000))。

方法:每条氨基酸序列按固定最优密码子表逐残基翻译为 DNA。这不是真实基因组编码,仅为 PLINK 提供等位基因型表示:

氨基酸 伪 DNA 密码子 氨基酸 伪 DNA 密码子
A GCG M ATG
R CGT F TTT
N AAC P CCG
D GAT S AGC
C TGC T ACC
Q CAG W TGG
E GAA Y TAT
G GGC V GTG
H CAT L CTG
I ATT K AAA
- / X

设计意图:PLINK 处理的是碱基型 SNP 数据,不能直接读蛋白 MSA。最优密码子映射是格式适配——同一氨基酸始终对应同一密码子,因此氨基酸层面的共现结构完整传递到核苷酸层面

蛋白长度为 (L) 残基时,伪 DNA 长度为 (3L) bp。


3.2 Step 2:DNA FASTA → VCF

参考序列:首条 DNA 序列(对应 WT)。

逐碱基扫描convert_fasta_to_vcf):

  1. 对每个碱基位点 (pos),统计所有样本(除参考外)的碱基分布
  2. 若存在与 REF 不同的碱基 → 写入一条 VCF 记录
  3. 每个样本基因型编码为二倍体纯合:0|0(REF)或 1|1(ALT)等

VCF 示例

1
2
#CHROM  POS  REF  ALT  ...  FORMAT  sample1  sample2  ...
chr1 3 G A ... GT 1|1 0|0 ...

变异过滤:无变异的位点跳过;gap(-)与插入/缺失简化为 <INS> / <DEL> 标记。

重要细节:由于每个氨基酸对应 3 个碱基,一个氨基酸位点的变异通常会在伪 DNA 上产生最多 3 个高度相关的 SNP(同一密码子内共变)。最终 VCF 中的 SNP 数 (M) 一般小于 (3L),且不一定等于氨基酸位点数 (L)。


1
2
3
4
5
6
7
8
9
10
11
plink --vcf prefix.vcf \
--r2 square \
--out prefix \
--allow-no-sex \
--keep-allele-order \
--geno 1 \
--mind 1 \
--maf 0.00001 \
--hwe 0 \
--snps-only \
--allow-extra-chr
参数 含义
--r2 square 输出 (M \times M) 的 (r^2) 对称方阵
--maf 0.00001 极低最小等位基因频率阈值,保留稀有变异
--hwe 0 关闭 Hardy–Weinberg 检验(合成序列不适用)
--geno 1 / --mind 1 允许 100% 样本/位点保留

输出prefix.ld,(M \times M) 矩阵,(L_{ij} = r^2_{ij})。


3.4 Step 4:格式转换与清理

  • sed.ld 中 tab 分隔转为逗号分隔,供 com_mut_prediction.py 读取
  • 删除中间文件(.log.nosex_dna.fasta 等)

4. 矩阵元素的生物学(工程)含义

在 AiCE 语境下,(L_{ij} = r^2_{ij}) 表示:

在 (N) 条逆折叠采样序列中,SNP (i) 与 SNP (j) 的等位基因型共变强度

(r^2) 范围 解读(AiCEmulti 视角)
接近 1 两位点突变在采样序列中几乎总是一起出现 → 组合协同性好
0.5–0.8 中等共现;AiCE 默认阈值 ≥ 0.5 即推荐
接近 0 两位点独立变化 → 组合可能遭遇负向上位

与 SCA 的分工

方法 刻画对象 数据来源
LD 采样序列中的统计共现 伪 DNA → VCF → PLINK
SCA(Statistical Coupling Analysis,统计耦合分析) 进化耦合结构 pySCA 对蛋白 MSA 的协方差分解

AiCEmulti 两者联合使用,LD 作为数据驱动的共现过滤器,SCA 作为进化约束过滤器

段末注释SCA 原用于从天然 MSA 识别功能 sector;AiCE 将其与 LD 一并应用于逆折叠合成 MSA。


5. 组合突变的下游打分

对候选位点组合 (\mathcal{S} = {p_1, p_2, \ldots, p_k})(1-based 氨基酸位点编号),从 LD 矩阵提取子矩阵 (\mathbf{L}_{\mathcal{S}}),由 com_mut_prediction.py 计算以下导出指标:

5.1 Mean Pairwise LD(默认筛选用)

[
\overline{\mathrm{LD}} = \frac{2}{k(k-1)} \sum_{i < j} L_{p_i p_j}
]

取子矩阵上三角非对角元素的算术均值。

5.2 Log Mean Pairwise LD

[
\overline{\log\mathrm{LD}} = \mathrm{mean}{i<j}\bigl[\log(L{p_i p_j} + 10^{-10})\bigr]
]

对数变换压缩极值,使分布更平滑。

5.3 Multilocus LD(连乘形式)

[
\mathrm{MLD} = \prod_{i < j} L_{p_i p_j}
]

强调所有位点对同时高关联的组合。

5.4 推荐规则

输出格式(.ld.result):

1
Mutation Type    Mean Pairwise score    Log Mean Pairwise score    Logical Flag (0/1)
  • 默认:Mean Pairwise LD ≥ 0.5 → Logical Flag = 1(推荐该组合)
  • 阈值可通过 04.com_mut_prediction.sh-t 参数自定义

完整 AiCEmulti 命令示例

1
2
3
4
5
6
7
8
# 1. 构建 LD 矩阵
python scripts/02.caculated_ld.py ../output/ ../output/

# 2. 构建 SCA 矩阵(并行步骤,见 AiCE 文档 §5.2)
bash scripts/03.caculated_sca.sh ../scripts/pySCA/ ../output ../output

# 3. 组合突变提名(k=2 表示双突变)
bash scripts/04.com_mut_prediction.sh ../scripts ../output/ 2 ../output

6. 实现细节与使用注意

6.1 伪 DNA 编码的必要性

PLINK 设计用于真实基因型数据(VCF 格式),不能直接读取蛋白 MSA。最优密码子翻译是接口适配层,不改变「哪些序列在哪些位点共变」的统计结构。

6.2 矩阵维度与位点索引

  • LD 矩阵行/列对应 VCF 中有变异的核苷酸 SNP((M) 个),而非直接的氨基酸位点数 (L)
  • SCA 矩阵为 (L \times L)(氨基酸位点级)
  • 组合打分时,.comb 文件中的位点编号为氨基酸 1-based 索引;使用时需确保与 LD 矩阵维度对齐。若 (M \neq L),需检查 VCF 构建逻辑或做显式位点映射

6.3 样本量对估计稳定性的影响

(r^2) 估计依赖采样序列数 (N)(ProteinMPNN 默认 num_seq_per_target=1000):

  • (N) 过小 → LD 估计方差大、假阳性/假阴性增多
  • (N) 增大 → 共现模式更可靠,但计算成本线性增加

6.4 与群体遗传学用法的差异

维度 群体遗传学 AiCE
「个体」 真实生物样本 逆折叠采样序列
「等位基因」 天然 SNP 伪 DNA 碱基型
HWE 假设 通常检验 关闭(--hwe 0
生物学解释 连锁、选择、漂变 结构兼容序列的共变模式

7. 输入输出文件一览

文件 阶段 内容
prefix.fa 输入 蛋白 MSA(参考 + 采样序列)
prefix_dna.fasta 中间 伪 DNA 序列(运行后删除)
prefix.vcf 中间/输出 变异位点与基因型
prefix.ld 输出 (M \times M) 的 (r^2) 矩阵
prefix.ld.result 下游 组合突变的 LD 打分与推荐标志

8. 小结

环节 方法 输出
输入 逆折叠 MSA(.fa 参考 + (N) 条采样序列
编码 最优密码子表 → 伪 DNA 每条序列 (3L) bp
变异检测 逐碱基与 REF 比较 → VCF 有变异位点 + 基因型
LD 计算 PLINK --r2 square (M \times M) 的 (r^2) 矩阵
组合筛选 子矩阵 Mean Pairwise LD ≥ 0.5 .ld.result

核心思想:AiCE 不直接用 LD 预测实验活性,而是用 LD 矩阵识别「在结构兼容的采样序列中倾向于一起出现的突变位点组合」,作为规避负向上位的统计共现过滤器


9. 延伸阅读

  • 酶改造-modelpaper-AiCE:AiCE 框架总览与全部指标链
  • AiCE 官方仓库https://github.com/ScorpioLea/AiCE
  • 检索关键词:linkage disequilibrium protein engineering, AiCE LD matrix, PLINK r2, pseudo-DNA MSA, combinatorial mutation epistasis
-------------本文结束感谢您的阅读-------------