AF3 superimpose函数解读

devtools/2025/2/13 19:35:26/

AlphaFold3  superimpose函数通过使用SVD最小化RMSD,将坐标叠加到参考上,在蛋白质结构预测中用于比较预测结构与真实结构的相似性。

源代码:

from src.utils.geometry.alignment import weighted_rigid_align
from src.utils.geometry.vector import Vec3Array
import torchdef compute_rmsd(tensor1, tensor2, mask, eps=1e-6):"""Compute the RMSD between two tensors."""diff = tensor1 - tensor2squared_diff = diff ** 2sum_squared_diff = squared_diff.sum(dim=-1)# Mask out invalid positionssum_squared_diff = sum_squared_diff * mask# Average over valid positionsdenom = mask.sum(dim=-1) + epsmean_squared_diff = torch.sum(sum_squared_diff, dim=-1) / denom# Square root to get RMSDrmsd = torch.sqrt(mean_squared_diff + eps)return rmsddef superimpose(reference, coords, mask):"""Superimposes coordinates onto a reference by minimizing RMSD using SVD.Args:reference:[*, N, 3] reference tensorcoords:[*, N, 3] tensormask:[*, N] tensorReturns:A tuple of [*, N, 3] superimposed coords and [*] final RMSDs."""# To Vec3Array for alignmentreference = Vec3Array.from_array(reference)coords = Vec3Array.from_array(coords)# Align the coordinates to the referencealigned_coords = weighted_rigid_align(coords, reference, weights=mask, mask=mask)aligned_coords = aligned_coords.to_tensor()reference = reference.to_tensor()# Compute RMSDrmsds = compute_rmsd(reference, aligned_coords)return aligned_coords, rmsds

代码解析

1. compute_rmsd 函数

功能: 计算两组坐标 tensor1 和 tensor2 之间的 RMSD,常用于比较蛋白质结构的相似性。

def compute_rmsd(tensor1, tensor2, mask, eps=1e-6):
  • tensor1: 真实坐标 (ground truth) [*, N, 3]
  • tensor2: 预测坐标 [*, N, 3]
  • mask: 指定哪些坐标是有效的 [*, N]
  • eps: 避免除零问题的小常数

步骤解析

diff = tensor1 - tensor2  # 计算两者的差值
squared_diff = diff ** 2  # 差值平方
sum_squared_diff = squared_diff.sum(dim=-1)  # 在最后一个维度 (3D) 上求和,即每个点的平方误差和

计算的是欧几里得距离的平方,形状 [*, N]

sum_squared_diff = sum_squared_diff * mask  # 只保留mask中有效的坐标

屏蔽无效坐标(未对齐的或者不感兴趣的原子)。

denom = mask.sum(dim=-1) + eps  # 计算有效坐标数
mean_squared_diff = torch.sum(sum_squared_diff, dim=-1) / denom  # 计算均方误差

有效原子位置的均方误差(MSE)。

rmsd = torch.sqrt(mean_squared_diff + eps)  # 开方得到 RMSD

最终 RMSD 计算完成,返回的是 [ * ] 形状的张量,即每个样本的 RMSD 值。


2. superimpose 函数

功能:
使用加权刚性对齐(Weighted Rigid Alignment) 方法,通过奇异值分解 (SVD) 使预测坐标 coords 尽可能匹配 reference,然后计算 RMSD。

def superimpose(reference, coords, mask):
  • reference: 真实的结构坐标 [*, N, 3]
  • coords: 需要对齐的预测坐标 [*, N, 3]
  • mask: 有效位置的掩码 [*, N]

步骤解析

reference = Vec3Array.from_array(reference)
coords = Vec3Array.from_array(coords)

这里 Vec3Array 是一个三维向量的封装类,使得操作更符合几何向量计算需求。

aligned_coords = weighted_rigid_align(coords, reference, weights=mask, mask=mask)

核心部分

  • weighted_rigid_align 是一个加权刚性对齐函数,使用SVD(奇异值分解)寻找最优旋转和平移,将 coords 与 reference 对齐。
  • weights=mask 代表对对齐过程加权,仅使用有效坐标对齐。
aligned_coords = aligned_coords.to_tensor()
reference = reference.to_tensor()

将 Vec3Array 转回 PyTorch 张量,方便计算 RMSD。

rmsds = compute_rmsd(reference, aligned_coords)
  • 计算对齐后的 RMSD,衡量对齐质量。

最终返回:

  • aligned_coords: 对齐后的坐标
  • rmsds: 对齐后的 RMSD 值

代码核心逻辑

  1. compute_rmsd
    • 计算两组坐标的 RMSD(用于衡量预测误差)。
  2. superimpose
    • 通过 SVD 进行刚性对齐,使预测结构尽量匹配真实结构。
    • 计算对齐后的 RMSD,评估对齐质量。

这两个函数主要用于蛋白质结构比对,常用于 AlphaFold3 这种结构预测模型的评估。


http://www.ppmy.cn/devtools/158568.html

相关文章

React 第二十五节 <Fragment></Fragment> 的用途以及使用注意事项详解

文章如果错误偏差&#xff0c;烦请及时批评指正 一、为什么要使用 <Fragment>&#xff1f; 因为在 React 中&#xff0c;组件必须返回单个根元素。当我们尝试直接返回相邻的 JSX 元素时&#xff1a; function BrokenComponent() {return (<h1>标题</h1><…

在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2

文章目录 1. 安装 nvm&#xff08;如果还没有安装的话&#xff09;2. 加载 nvm 配置3. 列出特定系列的 Node.js 版本&#xff08;远程&#xff09;&#xff1a;4. 安装 Node.js 16.20.25. 使用指定版本的 Node.js6. 验证安装 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.…

anolis os 8.9-jenkins2.492.1-role-base

一、插件安装 二、新建用户 三、manage roles 3.1 manage role 配置 3.2 Assign Roles

以什么方式维护html网页的多语言版本比较好

维护 HTML 网页的多语言版本有几种常见且有效的方式&#xff0c;主要取决于你的需求和项目规模。以下是几种常用的方式&#xff1a; 不同的 HTML 文件&#xff08;按语言分文件&#xff09;&#xff1a; 优点&#xff1a;每种语言都有一个独立的 HTML 文件&#xff0c;容易管理…

先进制造aps专题二十九 基于ai智能体的生产排程和工厂生产仿真引擎的设计

上文中&#xff0c;我们说&#xff0c;通常的做法是&#xff0c;可以先通过排产仿真引擎产生生产计划&#xff0c;再在工厂仿真引擎里仿真执行&#xff0c;这样可以预先分析计划和执行的差异情况并进行调整优化 这里的产生生产计划&#xff0c;仿真生产执行和数据分析都是人工…

Ubuntu禁止内核自动更新

在Ubuntu中&#xff0c;内核的自动更新有时会导致系统不稳定&#xff0c;特别是在运行关键任务的服务器上。因此&#xff0c;禁用内核的自动更新是一个重要的操作。下面是详细的步骤&#xff0c;帮助您在Ubuntu系统中禁用内核自动更新。 一、锁定内核版本 通过锁定内核版本&a…

ArcGIS Enterprise 与 ArcGIS Online 的关系

ArcGIS Enterprise 和 ArcGIS Online 是 Esri 提供的两款核心产品,它们在功能、部署方式和使用场景上存在显著差异,但同时也有一定的联系和互补性。以下是关于这两款产品的详细关系说明: 1. 产品定位与功能 ArcGIS Enterprise 是一款企业级解决方案,支持在组织的基础设施上…

1.Excel:某停车场计划调整收费标准❗(13)

目录 函数VLOOKUP ROUNDUP/ROUNDDOWN函数 NO1​ NO2会计专用类型​ NO3收费标准VLOOKUP​ NO4停放时间&#xff08;天&#xff09;​ NO5金额roundup/rounddown​ ​NO6汇总行​ NO7单元格突出显示​ NO8数据透视表​ 函数VLOOKUP VLOOKUP(收费标准!A3:B5 F4&#xf…