news 2026/10/27 15:05:27

等变几何扩散模型评测:蛋白-小分子动态对接的构象系综视角

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
等变几何扩散模型评测:蛋白-小分子动态对接的构象系综视角

1. 动态对接为什么难:从"锁和钥匙"到"一团会呼吸的橡皮泥"

等变几何扩散模型用于蛋白-小分子动态对接,这几年从一个偏概念的方向,逐渐变成了能跑出可用构象的实际工具。DynamicBind 这类方法的评测,最容易被做偏的地方不在于跑不出数,而在于跑出来的数被误读——用刚性对接的评价习惯去衡量一个生成式构象系综模型,结论往往是错的方向。

先说清楚传统对接的隐含前提。经典刚性对接把受体当成一块固定形状的模具,配体是钥匙,搜索空间只剩 6 个自由度(3 个平移 + 3 个旋转)加可旋转键的二面角。这套框架之所以沿用了二十多年,是因为在很多场景下它够用:同一靶点、同一口袋、微小的侧链差异,模具近似成立。但只要受体本身在结合过程中要发生明显重排——侧链翻转、loop 闭合、口袋从"塌陷"变成"张开"——刚性对接的输入就已经错了,再怎么优化打分函数都是在错误的地基上盖楼。

柔性对接(flexible receptor docking)试图补救,常见做法是让口袋附近的若干侧链一起参与搜索。问题是搜索空间的组合爆炸来得太快:每多一个自由度,采样成本成倍上升,而真正需要变化的往往不只是侧链,还有骨架局部的构象偏转。于是实际操作中,大家退回到"取几个已知的 holo 结构分别对接,再挑最好的",这在评测里天然占便宜,在真实场景里根本不成立——你手上通常只有一个 apo 结构。

1.1 刚性对接的三个隐含假设及其崩塌场景

我把刚性对接崩塌的场景归成三类,这三类恰好也是评测时必须分开统计的。

第一类是侧链位阻型崩塌。口袋深处某个大侧链(苯丙氨酸、酪氨酸、色氨酸这类)在 apo 状态下占了配体的位置,配体要么挤不进去,要么被硬塞进去后严重变形。这种情况下刚性对接给出的姿态往往打分不高,但会被排序系统误判为"可接受的次优解"。

第二类是口袋开合型崩塌。有些口袋在无配体状态下是半闭合的,配体结合后 loop 才收拢。刚性对接在这里的失败非常直接——构象上根本不连通,采样再密也找不到。

第三类是质子化与氢键网络重排。这类失败最隐蔽,因为它不影响重原子 RMSD,只影响局部相互作用判断。配体进来后,某个残基的侧链要转 120 度才能形成氢键,刚性对接不会做这个转动,结果就是构象对了但相互作用全错。

做评测时,如果只报一个总体成功率,上述三类失败会被混在一起,看不出方法到底强在哪一类。我建议按"apo 与 holo 的口袋骨架 RMSD"分层再统计,分层前后的结论经常不一样。

1.2 动态对接真正要预测的东西:构象系综而不是一个姿态

这里有一个认知上的转换很关键。动态对接的输出不是"配体的正确答案",而是"在这个口袋上,配体和受体可能共同形成的若干种稳定构象"。同一个配体和同一个口袋,生物学上本来就存在多个可占据的亚稳态,晶体结构只是其中被捕获的一个。

这个认识直接决定了模型侧的设计取向:生成式方法用扩散过程去逼近一个分布,天然适合输出多构象;而判别式的回归模型只能给出一个平均意义上的最优解,通常会落在几个亚稳态之间的"不真实区域"。等变几何扩散之所以在这个任务上比纯回归模型合适,本质上是因为它建模的是分布,而不是点估计。

但代价也很明确:多构象意味着多答案,多答案意味着评测必须回答"分布对不对",而不只是"最好的那个对不对"。这两件事的评测方法完全不同,前者需要看系综覆盖度(ensemble coverage)和多样性,后者看 top-1 精度。

1.3 从"能对上"到"分布对不对":评测视角必须先换掉

我见过不少评测把生成式模型的 top-1 和刚性对接的 top-1 直接比,然后得出"生成式不如传统对接"的结论。这个比法本身有问题:生成式方法的优势在于它能给出多个候选并且覆盖到正确答案,如果只取排序第一的样本,等于主动放弃了它最主要的能力,还把采样引入的随机性当成缺陷。

更合理的比法至少包含三条曲线:不同采样数量下的成功率(top-N 曲线)、排序质量(排名与真实 RMSD 的相关性)、以及系综与真实构象集合的覆盖关系。只看单点数字,几乎必然得出偏颇的结论。

2. 等变几何扩散的核心机制:把噪声加在几何上,而不是加在数值上

要评测一个模型,得先搞明白它在数学上究竟保证了什么、没保证什么。等变几何扩散里最常被误解的一点是:很多人以为"等变"只是个提升数据效率的训练技巧,其实它对物理正确性的意义远大于此。

2.1 等变性到底保证了什么

分子体系有个基本性质:把整个体系在空间中随便平移、随便旋转,物理上什么都没变。所以模型对坐标的处理必须满足这个对称性——输入转了 30 度,输出也必须跟着转 30 度,而不是给出一组完全不同的数。

如果不做等变约束,模型只能靠数据增强去"学会"这个性质。小分子还好,蛋白质动辄几千个原子,靠增强去覆盖旋转空间效率极低,而且学到的只是近似对称,遇到没见过的朝向就会偏。等变网络把这个对称性直接写进了结构里:所有中间特征都带着明确的几何类型(标量、向量、张量),层与层之间的运算只允许保持类型一致的组合,于是旋转不变性是被构造出来的,不是被学出来的。

这一点在评测中的可观测后果是:用旋转后的同一份输入跑两次,等变模型的输出应该严格等价(在数值误差内),非等变模型会出现明显抖动。我习惯在正式评测前先做这个自洽性检查,抖动超过阈值的实现,后面所有指标都不必看了。

2.2 前向加噪与反向去噪在几何上的具体形态

扩散模型的基本框架不复杂:前向过程按时间步逐步往数据里加噪声,直到变成纯噪声;反向过程训练一个网络去预测"这一步加进去的噪声"或者"对应的干净数据",然后一步步还原。

放到分子坐标上,有两个处理细节会直接影响结果。

第一个是加噪的尺度是否与分子尺度的各向异性匹配。蛋白质的坐标分布不是各向同性的:沿某个方向口袋很深,另一个方向很快就出了蛋白。如果噪声尺度一刀切,会把远离口袋的原子也推动起来,白白浪费模型容量。所以工程上普遍会做口袋裁剪,只保留口袋周围一定半径内的受体原子参与可动更新,其余部分作为刚体或固定背景。

第二个是配体与受体的噪声是否共享时间步。联合去噪意味着蛋白原子和配体原子在同一个去噪轨迹里一起被还原,模型在每一步都能看到对方当前的"模糊形状",从而做出协同调整。这正是它能实现"动态对接"的关键——如果蛋白完全冻结,那它就退化成配体构象生成,动态性无从谈起。

2.3 蛋白与配体联合去噪:一条链怎么带着另一条链走

联合去噪的耦合方式在实现上有几种常见取舍,各有代价,评测时最好心里有数。

耦合方式机制优点主要代价
完全联合蛋白与配体原子同轨迹去噪协同性最好,能捕捉诱导契合显存与步数成本最高
分阶段先生成受体构象,再固定受体生成配体成本低,可复用丢失反向影响,配体过大时会失败
受体固定+侧链微调骨架固定,仅侧链参与去噪稳定,不易崩无法处理骨架级开合

从公开评测的经验看,完全联合在 apo 泛化场景下的收益最明显,但也是最容易在长配体、大口袋上出问题的方案。如果自己的算力有限,采用分阶段方案时一定要在报告里写清楚,否则和完全联合的结果不可直接比较。

还有一层容易被忽略:去噪过程中的"约束注入"。有些实现会在每一步把远离初始位置的受体原子轻轻拉回原位(类似调和势),防止生成过程把蛋白整体推跑。这个约束的强度是个隐参数,调大了解空间被锁死、动态性消失,调小了容易生成物理上不合理的伸展结构。评测别人给的结果时,如果不知道这个参数,很多差异其实解释不了。

3. 动手跑一遍:环境、输入预处理与推理参数

理论说完,落到实际操作。这一节我按"从拿到一个 PDB 到拿到可用构象"的完整链路走一遍,重点放在那些会实质性改变结果的环节,而不是照着文档抄命令。

3.1 环境与依赖:哪些版本差异会直接改变结果

这类模型的依赖链通常很长:几何深度学习框架、图神经网络算子库、分子处理库、结构解析库、轨迹分析库。我踩过最坑的一次是算子库版本差异导致的等变层数值行为变化——同一个模型权重、同一份输入,两个小版本之间输出的构象 RMSD 差了将近 1 Å。看起来不大,但对于成功率这种阈值型指标,1 Å 足以让结论反转。

所以我现在的习惯是:在任何评测开始前,先把环境整体冻结成一份可复现的配置,并在报告里写清楚。至少要记录主框架版本、算子库版本、CUDA 运行时、以及分子处理库的版本。

下面是一份示意性的环境描述,不是可直接复制的唯一正解,但大致覆盖了需要锁定的项:

runtime: python: "3.10" cuda: "11.8" frameworks: torch: "2.1.x" geometric_ops: "与 torch 版本严格对齐的发行版" chemistry: structure_io: "负责 PDB/mmCIF 解析与加氢的库" forcefield_check: "用于几何合理性检查的库" determinism: seed: 20240101 cudnn_benchmark: false cudnn_deterministic: true

顺带一提,确定性问题在这类模型上比在普通网络里更严重。扩散采样本身就带随机性,再加上算子层面的非确定性归约,会让同一份输入的结果每次都不同。要复现别人的数字,除了固定种子,还得开确定性模式,并且接受随之而来的速度下降。

3.2 受体与配体预处理:从结构文件到模型能吃的张量

这一步是绝大多数失败的实际来源。模型再好,喂进去的结构有问题,结果一定不对。

受体侧我通常按这个顺序处理:

  1. 选链与清理。多链结构要明确指定哪条链构成目标口袋,其余链剔除或作为背景保留。常见错误是忘了剔除对称相关的另一条拷贝,导致口袋被"填"上一半。
  2. 处理缺失残基与缺失原子。apo 结构里侧链缺失、loop 缺失非常普遍。缺失侧链要么补全要么标为不可动,不能当不存在——模型会以为那里是空的,于是把配体塞进去。
  3. 处理 altloc(交替构象)。保留占据率最高的一个,或者按占据率加权。混着留着会造出原子重叠。
  4. 金属离子、辅因子、结构水。这三类的取舍没有统一答案,但必须显式决策并记录。金属离子通常保留(很多口袋的几何靠它撑住),结构水要看口袋是否由水桥接,辅因子若参与结合界面也必须保留。
  5. 质子化与加氢。按生理 pH 处理,酸性残基去质子化、碱性残基质子化,组氨酸的质子化态需要单独判断。这一步做错,氢键网络全错,但重原子 RMSD 看起来完全正常——这是评测里最阴的一类假成功。

配体侧相对简单但同样容易翻车:需要加氢、赋电荷、生成正确的键级与芳香性感知,还要处理互变异构。配体的初始构象其实不那么关键(扩散模型会重新生成),但键的连接性和手性必须是对的,否则生成出来的是另一个分子的构象。

3.3 采样参数怎么调:步数、噪声尺度、样本数与显存

这三个参数互相牵制,实操中要一起考虑。

采样步数决定去噪轨迹的精细程度。步数太少,轨迹粗糙,生成的结构容易有局部不合理(键长偏差、原子重叠);步数太多,边际收益递减而成本线性上升。我实测下来,多数实现的有效区间在 20 到 50 步之间,低于 20 步成功率下降很明显,超过 50 步的提升已经很微弱。判断方法很简单:固定其他参数,把步数从 10 扫到 80,画出成功率曲线,找拐点。

噪声尺度(初始噪声的方差或最终时间步)影响的是解空间的广度。噪声大,覆盖的构象多样性高,但可能生成远离口袋的解;噪声小,稳定但多样性不足。有些实现允许输入一个"受体扰动幅度"参数,用来控制蛋白侧链被推动的程度,这个参数对 apo 场景特别敏感。

样本数直接关系到 top-N 指标。这里有个容易忽略的账:样本数增加带来的收益不是线性的,前 5 个样本通常贡献了大部分提升,到 20 个以后增长就慢了。如果你要做 top-1 评测,还得看排序质量,而排序质量取决于置信度估计是否可靠。

显存是硬约束。口袋裁剪半径从 15 Å 提到 20 Å,参与计算的受体原子数可能翻倍以上,显存占用随之上去。长配体(可旋转键多、原子数超过 60)也会显著增加显存。我一般的做法是先把裁剪半径定在能覆盖整个结合口袋的最小值,再根据显存反推可用的样本数与步数组合。

3.4 一次完整的推理调用与产物解读

把上面的东西串起来,一次推理的骨架大致如下(示意性伪代码,字段名仅表达意图):

# 1. 载入并清洗受体 receptor = load_structure("apo_target.cif") receptor = select_chain(receptor, chain="A") receptor = fix_missing(receptor, strategy="fill_and_flag") receptor = keep_altloc(receptor, rule="highest_occupancy") receptor = protonate(receptor, ph=7.4) # 2. 载入配体并做化学感知 ligand = load_mol("ligand.sdf") ligand = add_hydrogens(ligand, ph=7.4) ligand = perceive_bond_orders(ligand) # 手性必须在这里确认 # 3. 定义口袋与可动区域 pocket = define_pocket(receptor, ligand_hint=ligand, radius=16.0) movable = pocket.residues_within(radius=10.0) # 只有内圈残基参与去噪 # 4. 采样 samples = sample_conformations( receptor=receptor, ligand=ligand, movable_residues=movable, num_samples=16, num_steps=32, noise_scale=1.0, seed=20240101, ) # 5. 后处理与排序 for s in samples: s.score = confidence(s) samples.sort(key=lambda s: s.score, reverse=True) cluster_and_report(samples, rmsd_cutoff=2.0)

产物解读上有一个心得:不要把置信度分数当成正确性概率。这类模型给出的分数更多反映"生成过程的自洽程度",而不是"与真实结构的接近程度"。我实测过多次,最高分样本并非 RMSD 最小的那个,两者相关性只能算中等。所以真实使用时,最好是保留前若干个样本做下游验证(比如用短时间的分子动力学做局部松弛,看哪个更稳定),而不是只取第一名。

4. 评测方案设计:指标不是越多越好,而是要分层

评测这类模型最容易犯的错是堆指标。堆一堆数字出来,读者看不出重点,自己也得不出可行动的结论。我的做法是按"回答什么问题"分层组织,每一层只留少量真正有区分度的指标。

4.1 数据集分层:holo 自洽、apo 泛化、跨家族

第一层是 holo 自洽测试。给定配体真正结合的那个受体构象,看模型能不能还原它自己。这一层本质是健全性检查,指标应该很高;如果这一层都不行,说明实现有问题,后面的都不用做。

第二层是 apo 泛化测试,也是最有价值的一层。输入无配体的受体结构,看模型能不能同时把口袋调整对、把配体放对。这一层的结果才是这个方法存在的理由。

第三层是跨家族/跨折叠的泛化,用于观察模型是否过拟合到训练分布里常见的口袋形状。这一层样本少、噪声大,只适合做趋势判断,不适合做精确比较。

分层时还有一类样本要单独拿出来:受体构象变化幅度大的案例。可以按 apo 与 holo 的口袋骨架 RMSD 把样本分成小幅(< 1 Å)、中幅(1–2.5 Å)、大幅(> 2.5 Å)三档。据我的观察,这类方法在小幅组的成功率已经相当可观,中幅组明显下降,大幅组基本只能给出部分正确的局部调整。把三档混在一起报一个平均值,会严重高估方法在大构象变化上的能力。

4.2 构象正确性的度量与对称性陷阱

配体 RMSD 是最基础的指标,也是最容易被做错的指标。

第一个坑是对称性校正。苯环转 180 度、羧基的两个氧互换、磷酸基的三个氧互换、叔丁基的三个甲基互换——这些在化学上是同一个构象,但按原子索引直接算 RMSD 会得到很大的数值。不校正的话,成功率会被系统性低估,而且低估幅度和配体的对称性数量强相关,导致不同数据集之间的结果不可比。校正的做法是枚举对称等价的原子的所有置换,取最小 RMSD。

第二个坑是对齐方式。计算配体 RMSD 时,是先按蛋白骨架对齐再算,还是直接叠合配体本身?前者衡量的是"在受体坐标系下的绝对位置正确性",后者衡量的是"配体自身形状的相似性"。动态对接关注的是前者,因为配体的位置相对于口袋才有意义。但前者会把受体构象预测的误差一并算进配体 RMSD 里,两者耦合在一起,看不出错误来源。

我的处理办法是同时报两个数:受体对齐后的配体 RMSD(反映最终可用性)和口袋残基对齐后的配体 RMSD(剥离全局漂移,反映局部相对关系)。两个数差得很大,说明问题主要在受体全局构象;两个数都很差,说明配体摆放本身就错了。

指标对齐方式反映什么常见误读
全局配体 RMSD受体骨架对齐端到端可用性与受体误差耦合,无法归因
局部配体 RMSD口袋残基对齐配体相对口袋的位置掩盖了整体构象漂移
对称校正 RMSD任一真实几何接近度校正不完整会导致系统性低估
口袋侧链 RMSD骨架对齐受体适应性预测质量只测测得到的残基,有幸存者偏差

4.3 口袋侧的重建质量:蛋白 RMSD 反而更容易骗人

只看配体指标是不够的,因为一个错误的机制也可能碰巧把配体放到接近的位置。所以必须独立评估受体侧的预测质量。

这里要用到两组指标:口袋内可动残基的 RMSD(只算那些真正参与去噪的残基)和结合界面残基的接触恢复率(预测的界面残基集合与真实的交集比例)。前者容易算,但有个幸存者偏差问题——如果模型把某些残基预测得面目全非,实现里可能干脆把它们从统计里剔掉了,剩下的残基看起来都不错。所以我会额外检查"最差 10% 残基的 RMSD",防止平均值掩盖长尾失败。

后者更能说明问题。接触恢复率不看坐标是否精确,只看"哪些残基和配体有接触"这个拓扑关系对不对。有些预测的绝对坐标偏差不小,但界面拓扑是对的,这种结果在实际使用中依然有价值;反过来,坐标很接近但界面残基错了一半,说明机制理解错了,这种"高分低质"的结果在平均指标里看不出来。

4.4 物理合理性与多样性:避免"看着像"的假成功

生成式模型有一个特有的失败模式:几何上接近正确答案,但化学上不成立。常见的表现包括键长键角异常、芳香环不平、手性中心翻转、原子间过近(严重位阻)、配体穿出蛋白表面。这些问题在 RMSD 指标里可能完全看不出来。

所以必须加一层物理有效性检查,逐样本统计:键长偏差是否在容差内、键角是否合理、是否存在非键原子距离过近、手性中心是否保持、配体是否与受体有严重重叠。这层检查的通过率,我通常叫它"几何有效率",是所有指标里最容易被忽略但最能说明问题的一个。

多样性则是另一个方向。如果模型生成的 16 个样本几乎完全一样,那它其实没有建模分布,只是带噪声的回归。计算样本两两之间的对称校正 RMSD,看分布是否铺开。但多样性本身不是越高越好——太散意味着模型没收敛,结合成功率一起看才有意义:在成功的样本里看多样性,才能判断它是"有方向的多解"还是"胡乱发散"。

有一个组合指标我比较推荐:几何有效率 × top-5 成功率。它同时惩罚"生成不合法结构"和"生成不出正确构象"两种失败,比单看 RMSD 更贴近真实可用性。

5. 我在实跑中踩到的坑与修复路径

下面这些是我自己在跑这类方法时真实遇到过的,按排查链路写,方便你复现同样的诊断过程。

5.1 口袋塌陷与缺失残基:apo 结构最常见的致命伤

第一次跑 apo 案例时,成功率低得离谱,但同一批靶点的 holo 案例表现正常。排查顺序是这样走的:

先检查输入结构,发现有一批 apo 结构的口袋内某几个残基侧链完全缺失。模型把这些位置当成空体积,于是把配体往那个方向推。第一个修复尝试是补全侧链,用常规的侧链建模工具生成初始构象,然后允许它们参与去噪。成功率回升了一部分,但没到位。

接着看口袋形状,发现更深的问题:部分 apo 结构的口袋本身是塌陷的,几个大侧链共同把空间堵死了。这时候即使侧链补全了,初始构象也是"堵着"的状态,而扩散过程的去噪轨迹很难从一个完全封闭的构象翻越出去——它更擅长做局部调整,而不是跨越位阻势垒。

修复思路有两条。一条是加大受体侧的扰动幅度,让侧链在早期去噪步有更多机会被推开;这招有效但很挑参数,幅度调大了会生成物理上不合理的疏散结构。另一条是直接换更宽松的初始结构,比如用同一靶点的另一个 apo 结构(如果存在多个无配体结构)里口袋更开放的那个作为起点。第二条路更稳,但需要手上有多份结构。

5.2 金属离子、辅因子与结构水的处理分歧

这个坑很隐蔽,因为它造成的差异表现为"结果不稳定",而不是"结果明显错误"。

我做过一组对照:同一个靶点,其他条件完全一致,只改金属离子是否保留。结果是配体的位置偏好明显改变了——金属参与配位时,配体会被拉向金属侧的配位几何方向;金属去掉后,配体在那个方向上失去约束,位置更散。两种处理方式下算出的 RMSD 差异,足以改变"成功/失败"的判定。

所以这里的结论不是"应该保留",而是必须与真实场景保持一致并在报告里写明。如果你做的是药物发现中的常规流程,金属通常是保留的;如果你的下游流程会去掉金属,那评测也应该去掉。最忌讳的是评测时保留了、实际使用时去掉了,那样报告出来的数字完全无法兑现。

结构水的处理同样如此。有些口袋的配体结合完全依赖水桥接,去掉水之后模型会生成一个"看起来合理但机制错误"的构象。我的经验是:如果原结构里水在该口袋的占据率很高(比如 B 因子低、与多个残基有氢键),就保留;如果只是零散的几个,去掉反而更干净。

5.3 采样不稳定:同一输入两次结果差很多怎么办

有一段时间我发现同一个输入跑两次,top-1 的 RMSD 能差 1.5 Å 以上。这个抖动幅度已经超过了方法之间的差距,意味着任何对比结论都不可信。

排查下来有三个来源。

第一是随机种子与确定性设置。扩散采样本身的随机性无可避免,但可以通过固定种子 + 确定性算子把方差压下来。注意有些几何算子的反向传播和推理在确定性模式下会变慢,需要权衡。

第二是样本数太少。如果只生成 4 个样本然后取 top-1,随机性的影响被放得很大。把样本数提到 16 以上,top-1 的方差会明显收窄——因为排序系统有更多机会挑到好的。这一条对评测的启示是:报告 top-1 时必须同时报告样本数,否则不同工作之间的数字没有可比性。

第三是后处理里的聚类阈值。聚类做排序时,阈值设得太大会把不同构象合并成一个簇,只取簇内代表,丢掉真正的多样性;设得太小又会让同一构象重复占位。2 Å 左右的对称校正 RMSD 是个常见起点,但对柔性配体应适当放宽。

修完之后我的标准做法是:同一配置跑至少 3 个不同种子,报告均值与标准差。如果标准差与不同方法之间的差异处于同一量级,那这个对比结论就应当谨慎表述。

5.4 显存与长尾:大口袋、多链、长配体

显存问题在跑小靶点时几乎不会遇到,一旦碰上大体系就很突然。我遇到过的三次显存爆发分别是:口袋裁剪半径按默认值设置但靶点口袋特别深、配体有 70 多个重原子且可旋转键很多、以及受体是多链复合物且界面残基数量巨大。

应对方式按性价比排序:

手段效果代价
缩小口袋裁剪半径直接降低原子数可能切掉关键残基,需检查
减少样本数线性降低峰值影响 top-N 指标
拆分:分阶段生成显著降峰值丢失协同性,需在报告中说明
降低精度(半精度推理)明显降显存可能引入数值不稳定,需验证
限制可动残基范围降计算量削弱大构象变化的处理能力

我的默认策略是优先缩口袋半径,但缩完之后一定检查"被切掉的残基里有没有和配体有接触的",如果有,就改用限制可动残基范围的方式,保留原子但减少参与去噪的数量。

6. 边界在哪:这类方法现在还替代不了什么

评测写完,最后一件事是把边界说清楚。一个方法的价值判断,很大程度上取决于它的失败边界是否被诚实地刻画出来。

6.1 大尺度构象变化与变构

前面已经提到,扩散去噪擅长局部重排,不擅长跨越大的位阻势垒。对于结合过程中发生数十埃尺度结构重排的体系,这类方法目前给出的结果多半是"在错误的骨架上做了正确的局部调整"。变构位点结合引起的远端构象变化更是完全超出它的建模范围——模型的可动区域是围绕口袋定义的,远端变化不在考虑之内。

6.2 共价配体与非常规配体

共价结合需要处理键的形成,这本质上是反应性问题,扩散模型生成的几何无法保证化学上能成键。对于金属配位配合物、多肽类配体、大环配体,模型的训练分布通常覆盖不足,生成的几何有效率会显著下降。这些场景不是不能试,但一定要在报告里单独标出,不要混进总体成功率里。

6.3 与打分函数、自由能计算的配合方式

我越来越倾向于把这类方法定位成"构象生成器"而不是"结合预测器"。它擅长的是给出若干个物理上合理、口袋适配到位的候选构象,不擅长判断哪个构象结合得更强。所以合理的用法是:用它生成构象系综,用物理方法(局部松弛、短轨迹模拟、自由能估计)去做后续筛选和排序。

这个定位也反过来影响评测设计:如果下游是打分函数,那么评测的重点应该是"生成的系综里是否包含接近真实的构象",而不是"top-1 是否精确"。前者对应 top-N 覆盖度,后者对应精度,两者的优化方向并不完全一致。

我自己在实际操作中的体会是,把它当成一个"高质量构象生成 + 有限动态性"的模块,配合熟悉的物理验证流程,能稳定拿到可用的结果;指望它一步给出精确的结合姿态和结合强度,目前还不现实。真正能省时间的用法,是在传统对接之前先跑一遍,用它输出的受体构象作为柔性对接的起点——这个组合在我手上比单独用任何一种都稳。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 15:04:09

C#宿舍管理系统实战:WinForm+Access工程化避坑指南

简介&#xff1a;本资源是一套完整的C#课程设计级宿舍管理系统&#xff0c;面向计算机专业本科生及C#初学者&#xff0c;解决高校宿舍日常管理中学生与宿管双角色协同办公的信息化需求。系统采用C# WinForm开发&#xff0c;集成SQL Server数据库存储核心数据&#xff0c;辅以XM…

作者头像 李华
网站建设 2026/10/27 15:03:52

YOLOv5钢材表面缺陷检测工业落地全栈方案

简介&#xff1a;本资源是面向工业视觉检测领域的YOLOv5实战项目包&#xff0c;专为计算机视觉初学者、自动化质检工程师及深度学习实践者设计&#xff0c;聚焦钢材表面缺陷&#xff08;如裂纹、凹坑、划痕、氧化皮&#xff09;的端到端识别任务。资源包含2000个文件&#xff0…

作者头像 李华
网站建设 2026/10/27 15:01:47

JavaWeb个人博客部署实战:Tomcat+MyBatis+MySQL 8.0全链路避坑指南

简介&#xff1a;这是一套完整的JavaWeb个人博客管理系统源码&#xff0c;面向Java初学者与Web开发入门者&#xff0c;聚焦MVC架构实践与全栈功能实现&#xff0c;帮助学习者掌握Servlet、JSP、JDBC及前后端协同开发的核心流程。资源包共7154个文件&#xff0c;涵盖3716张界面截…

作者头像 李华
网站建设 2026/10/27 15:01:40

Java交友后端源码拆解:从系统架构到WebSocket即时通讯

简介&#xff1a;这是一份面向Java开发者的社交交友类后端项目源码&#xff0c;适合有一定Java基础、希望学习交友软件架构或进行二次开发的读者&#xff0c;也适合用来研究社交场景下的业务逻辑与技术实现。压缩包内共482个文件&#xff0c;体积约5.64MB&#xff0c;代码与静态…

作者头像 李华
网站建设 2026/10/27 15:00:35

pytest框架在接口测试中的高阶实践与优化策略

1. pytest框架在接口测试中的进阶应用 最近两年接口自动化测试已经成为质量保障体系的标配&#xff0c;而pytest凭借其简洁灵活的架构和丰富的插件生态&#xff0c;逐渐取代unittest成为Python领域接口测试的首选框架。但很多团队在基础用法之外&#xff0c;对pytest的深度应用…

作者头像 李华
网站建设 2026/10/27 15:00:11

动态规划解决数字子序列不平衡数问题

1. 题目解析与核心思路 这道题目要求我们处理"不平衡数"的概念&#xff0c;并在此基础上解决一个子序列相关的问题。首先我们需要明确题目中的几个关键术语&#xff1a; 不平衡数定义 &#xff1a;对于一个数字字符串&#xff0c;其不平衡数是指该字符串中出现次数…

作者头像 李华