4. 蛋白复合物相互作用特征工程

在蛋白复合物结构预测中,序列本身只提供了“零件清单”,真正决定复合物能否被正确拼装的是链与链之间的相互作用特征。特征工程的任务,就是把一条或多条序列中隐含的界面信息,转换成模型可以直接消费的数值张量。本节围绕四类核心特征展开:界面残基、接触图、距离约束与共进化信号,并说明它们各自的提取方式、物理含义与在预测流程中的角色。

一、界面残基:从“谁参与结合”到“每个残基的界面概率”

界面残基是复合物中直接参与链间接触的残基。对一条链 A 上的残基 i,若其任意重原子与链 B 上任意重原子的距离小于阈值(常用 5.0 Å 作为重原子接触判据,或 8.0 Å 作为 Cβ 距离判据),则称 i 为界面残基。实际工程中通常不直接输出 0/1 标签,而是输出每个残基的界面概率 pi ∈ [0,1],作为后续注意力偏置或损失权重的输入。

提取界面残基的典型流程是:先由已知复合物结构(如 PDB 中的共结晶结构)计算真实界面标签,再训练一个序列到界面概率的预测器。特征输入包括:残基的 one-hot 编码、位置编码、ESM 或 ProtBert 等预训练语言模型的嵌入、相对溶剂可及性(RSA)预测值、二级结构概率。输出层使用 sigmoid,损失函数采用带类别权重的二元交叉熵,因为界面残基通常只占全序列的 10%–20%。

一个可直接参考的标签生成代码片段如下:

import numpy as np
from Bio.PDB import NeighborSearch

def interface_labels(chain_a, chain_b, cutoff=5.0):
    atoms_a = [a for a in chain_a.get_atoms()]
    atoms_b = [a for a in chain_b.get_atoms()]
    ns = NeighborSearch(atoms_b)
    labels = np.zeros(len(list(chain_a.get_residues())), dtype=np.float32)
    for idx, res in enumerate(chain_a.get_residues()):
        for atom in res:
            if ns.search(atom.coord, cutoff):
                labels[idx] = 1.0
                break
    return labels

这段代码输出的是链 A 每个残基的 0/1 界面标签。若用于训练,还需按残基索引对齐序列,并处理缺失残基与多链同源映射问题。

二、接触图:把三维邻接关系压缩成二维矩阵

接触图(contact map)是复合物特征工程中最常用的二维表示。对链 A 和链 B,定义矩阵 C ∈ {0,1}LA×LB,其中 Cij=1 表示 A 的第 i 个残基与 B 的第 j 个残基在三维空间中距离小于阈值。与界面残基不同,接触图保留了“谁和谁接触”的配对信息,因此更适合作为图神经网络或注意力模块的监督信号。

接触图的阈值选择直接影响稀疏度。以 Cβ–Cβ 距离 8.0 Å 为例,典型复合物界面接触对约占全矩阵的 1%–5%。若阈值放宽到 10.0 Å,接触对数量约增加 1.5–2 倍,但噪声也随之上升。工程上常同时生成 8 Å 和 10 Å 两个版本的接触图,分别用于强约束和弱约束。

接触图在模型中的使用方式通常有两种:一是作为二分类监督,预测每个残基对的接触概率;二是作为注意力掩码或偏置,把预测出的高概率接触对注入到结构模块中。前者用于训练阶段,后者用于推理阶段。

三、距离约束:从离散接触升级为连续几何

接触图只回答“是否接触”,距离约束则进一步给出“大概多远”。在复合物预测中,常用的距离约束包括:Cβ–Cβ 距离分箱、N–O 氢键距离、以及界面残基对的距离分布。与接触图相比,距离约束提供了更细粒度的几何信息,能够缓解接触图阈值敏感的问题。

一种实用的做法是把距离离散化为若干区间,例如 0–4 Å、4–6 Å、6–8 Å、8–12 Å、12–20 Å、>20 Å,共 6 个 bin,每个残基对输出一个 6 维概率分布。训练目标使用交叉熵,推理时取期望距离作为约束。这样既保留了距离的连续性,又避免了直接回归带来的尺度不稳定。

在损失函数中,距离约束通常以“距离矩阵拟合项”的形式出现:对预测结构计算 Cβ–Cβ 距离矩阵,与目标距离分布做 KL 散度或分箱交叉熵。权重一般设为 0.1–0.5,过高会压制其他几何项,过低则约束不足。

四、共进化信号:从多序列比对中挖掘残基耦合

共进化信号来自同源序列的多序列比对(MSA)。其核心假设是:若两个残基在三维空间中接触,它们在进化过程中往往协同突变。因此,通过分析 MSA 中残基对的耦合强度,可以推断出接触关系,尤其适用于没有实验结构的复合物。

常用的共进化提取方法包括直接耦合分析(DCA)、平均产物归一化(APC)校正和伪似然最大化。工程上更常用的是将 MSA 输入到 Potts 模型或使用 CCMpred、GREMLIN 等工具,输出每个残基对的耦合分数。随后对分数做 APC 校正,去除系统发育和熵效应带来的背景耦合。

共进化信号与接触图的关系是:共进化分数高的残基对,往往对应接触图中的正样本。因此,在训练接触预测器时,常把共进化分数作为额外输入特征,与序列嵌入拼接。这样模型既能看到“序列说了什么”,也能看到“进化说了什么”。

蛋白复合物相互作用特征提取:四类信号与融合路径 链 A 序列 链 B 序列 同源 MSA 界面残基概率 p_i ∈ [0,1],sigmoid 输出 接触图 C_ij Cβ–Cβ < 8 Å / 10 Å 距离约束分箱 6 bin 概率分布 共进化耦合分数 DCA + APC 校正 特征融合 拼接 / 注意力偏置 距离矩阵拟合项 结构 预测 关键参数与工程要点 界面残基阈值:重原子 5.0 Å 或 Cβ 8.0 Å;类别权重按正负样本比设置 接触图阈值:8 Å 用于强约束,10 Å 用于弱约束;稀疏度约 1%–5% 距离分箱:0–4 / 4–6 / 6–8 / 8–12 / 12–20 / >20 Å,交叉熵训练 共进化:DCA 输出耦合分数,APC 校正去除系统发育背景

五、四类特征的融合与使用顺序

在实际预测流程中,四类特征并非孤立使用,而是按“先粗后细”的顺序融合。典型做法是:先用共进化信号和序列嵌入预测接触图,再把接触图作为注意力偏置输入结构模块;同时,界面残基概率用于对界面区域加权,距离约束用于对预测结构做几何精修。这样,共进化提供远程耦合线索,接触图提供离散邻接关系,距离约束提供连续几何,界面残基提供残基级权重,四者互补。

需要特别注意的是,共进化信号依赖 MSA 的深度与多样性。若同源序列少于 100 条,耦合分数噪声较大,此时应降低共进化特征的权重,更多依赖序列嵌入和接触图预测。反之,若 MSA 深度超过 5000 条,共进化信号通常非常可靠,可作为主要约束。

工程提示:在训练接触预测器时,建议把共进化分数与序列嵌入拼接后一起输入,而不是单独使用。这样模型可以学习到“共进化强但序列保守”与“共进化弱但序列差异大”两种情况的区分,减少假阳性。
常见误区:不要把接触图阈值设得过小(如 6 Å),否则正样本过少,模型容易退化为全部预测为负;也不要把距离约束权重设得过高,否则会压制二级结构形成,导致局部几何失真。

总结来说,界面残基回答“谁在界面”,接触图回答“谁和谁接触”,距离约束回答“大概多远”,共进化回答“进化上是否耦合”。四类特征从不同粒度刻画复合物相互作用,提取时应保持坐标定义、阈值和残基索引的一致性,融合时应根据 MSA 深度和结构质量动态调整权重。只有把特征工程做扎实,后续的结构预测模块才有可靠的输入基础。