RFdiffusion Potential类解读

1. Potential 类

功能
  • Potential 是一个接口类(抽象类),用于定义潜在函数的接口,要求继承它的类必须实现 compute 方法。
  • 它的设计遵循 面向对象编程的多态性原则,通过抽象接口确保子类实现特定功能,同时定义了一个通用的 API(即 compute 方法)。
源代码:
class Potential:'''Interface class that defines the functions a potential must implement'''def compute(self, xyz):'''Given the current structure of the model prediction, return the currentpotential as a PyTorch tensor with a single entryArgs:xyz (torch.tensor, size: [L,27,3]: The current coordinates of the sampleReturns:potential (torch.tensor, size: [1]): A potential whose value will be MAXIMIZEDby taking a step along it's gradient'''raise NotImplementedError('Potential compute function was not overwritten')
要点
  • compute 方法:
    • 输入 xyz:蛋白质当前坐标,形状为 [L, 27, 3]
      • L: 残基数量。
      • 27: 每个残基的原子数量。
      • 3: 空间坐标。
    • 输出 potential:一个标量张量,用于度量当前结构的潜在能量。
  • 设计成抽象方法,调用时如果未被子类覆盖,会直接抛出 NotImplementedError
作用
  • 提供一个统一的接口,便于扩展不同的潜在函数(例如评估分子压缩、能量、距离约束等)。

2. monomer_ROG 类

功能
  • monomer_ROG 是 Potential 的子类,定义了一个用于评估单体分子紧凑性(compactness)的潜在函数,基于回转半径(Radius of Gyration, ROG)。
  • 通过 compute 方法计算分子的回转半径,并返回一个负数值作为潜在能量(模型会尝试最小化回转半径)。
源码+注释:
class monomer_ROG(Potential):'''Radius of Gyration potential for encouraging monomer compactness'''def __init__(self, weight=1, min_dist=15):self.weight = weight  # 权重,调节 ROG 的影响程度self.min_dist = min_dist  # 最小距离,限制过短的距离def compute(self, xyz):Ca = xyz[:, 1]  # [L, 3],提取主链 Cα 原子的坐标centroid = torch.mean(Ca, dim=0, keepdim=True)  # 计算质心,形状 [1, 3]dgram = torch.cdist(Ca[None, ...].contiguous(), centroid[None, ...].contiguous(), p=2)  # 计算每个 Cα 原子到质心的欧几里得距离,形状 [1, L, 1, 3]dgram = torch.maximum(self.min_dist * torch.ones_like(dgram.squeeze(0)), dgram.squeeze(0))  # 将距离限制在 min_dist 以上,形状 [L, 1, 3]rad_of_gyration = torch.sqrt(torch.sum(torch.square(dgram)) / Ca.shape[0])  # 计算回转半径,形状 [1]return -1 * self.weight * rad_of_gyration
源码解读:

1. 提取主链 Cα 坐标

Ca = xyz[:, 1]
  • 提取所有残基的 Cα 原子坐标(形状为 [L, 3])。
  • Cα 原子是蛋白质主链的骨架原子,用于计算质心和回转半径。

2. 计算质心

centroid = torch.mean(Ca, dim=0, keepdim=True)

质心是所有 Cα 原子坐标的均值,表示分子中心点。

3. 计算 Cα 到质心的距离

dgram = torch.cdist(Ca[None, ...].contiguous(), centroid[None, ...].contiguous(), p=2
)
  • 使用 PyTorch 的 torch.cdist 函数,计算每个 Cα 原子到质心的欧几里得距离。
  • 输出形状为 [1, L, 1, 3],通过 squeeze(0) 简化为 [L, 1, 3]

4. 限制最小距离

dgram = torch.maximum(self.min_dist * torch.ones_like(dgram.squeeze(0)), dgram.squeeze(0)
)

如果距离小于 min_dist,将其设为 min_dist,避免回转半径变得过小。

5. 计算回转半径

rad_of_gyration = torch.sqrt(torch.sum(torch.square(dgram)) / Ca.shape[0]
)

6. 返回潜在能量:

return -1 * self.weight * rad_of_gyration

返回负的回转半径(通过乘以权重调整其影响程度)。潜在函数的值会在优化过程中被最大化,因此负号是必要的。

关于回转半径(Radius of Gyration, ROG)

1. 回转半径(Radius of Gyration, ROG)

回转半径是描述分子几何分布的一种统计量,用于衡量分子中各个原子围绕中心点的紧密程度。其数学定义为:

2. 为什么只计算 alpha 碳的回转半径?

  • alpha 碳的生物学意义

    • Alpha 碳(Cα)是蛋白质主链中每个氨基酸的骨架原子,位于 N-C-C 主链结构中间。
    • Cα 原子直接反映了蛋白质骨架的整体形状,因此是分析蛋白质空间结构的关键点。
  • 简化计算

    • 蛋白质中包含大量的原子(如侧链原子、氢原子等),如果考虑所有原子,会显著增加计算复杂度。
    • 使用 Cα 原子作为代表,既简化了计算,也保留了蛋白质空间结构的主要信息。
  • 紧凑性衡量的核心

    • 紧凑性是蛋白质结构设计中的一个核心属性,主要由主链决定。Cα 的回转半径可以很好地反映主链的紧凑性,而无需考虑侧链的细节。
3. RFDiffusion 中回转半径优化的意义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款.NET开源的Windows资源管理器标签页工具

前言 今天大姚给大家分享一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具:QTTabBar。 工具介绍 QTTabBar是一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具。从此以后工作时不再遍布文件夹窗口&#xff0c…

PVE中VLAN的设置要点

使用这个拓扑进行连接无法直接访问PVE PVE 是这样设置如下: 核心重点:PVE 的 vmbr0 接口直接绑定了 enp2s0,这会导致 VLAN 流量无法正确处理,因为 PVE 没有专门为 VLAN 3 配置接口。 1.vmbr0 和 vmbr0.3 都是绑定在物理接口 enp2…

长城上,低空下,北京联通点亮5G-A的时代星光

2024年,被认为是5G-A的商用元年。在这个关键节点,大部分普通人最关心的问题可能是5G-A的引入、网络能力的提升,究竟能给我们带来哪些实用价值?在城市中到底有什么应用场景? 面对上述大众关切的问题,首善之都…

Vue使用Mockjs插件实现模拟数据

官方文档:Mock.js 一.引言 在前端开发过程中,我们经常会遇到后端接口尚未完成,但前端需要进行页面构建和功能测试的情况。这时候,Mockjs就如同救星一般出现了。Mockjs 是一款能够模拟生成随机数据,拦截 Ajax 请求并返…

阅读方法论

选择固有缺陷,选项是对比出来的

芯片测试-smith圆图

smith圆图 💢smith圆图的故事💢💢smith圆图中的各部分来历💢💢公式推导💢💢等电阻圆特点💢💢等电抗圆💢💢等电抗圆特点💢 &#x1f4a…

聚云科技×亚马逊云科技:打通生成式AI落地最后一公里

云计算时代,MSP(云管理服务提供商)犹如一个帮助企业上云、用云、管理云的专业管家,在云计算厂商与企业之间扮演桥梁的作用。生成式AI浪潮的到来,也为MSP带来全新的生态价值和发展空间。 作为国内领先的云管理服务提供…

树莓派/Jetson Nano/...aarch64:安装Miniforge 或 Mambaforge

目录 一、下载链接(我以miniforge为例)二、赋予脚本可执行权限三、运行安装脚本四、添加环境变量 Miniforge 或 Mambaforge是Miniforge 项目提供了针对多种架构(包括 aarch64)的轻量级 Conda 发行版,它们是 Miniconda …

白嫖域名,无套路,无需手机注册,支持A解析,TXT解析

注册简单,连邮箱都不需要,不用填写任何资料。 支持A、redirectURL、AAAA、TXT等类型的记录,可以创建子域名 注册地址:Free DDNS 打开首页,输入想要的域名,点查询按钮。如果可用,再点击提交按钮…

SQL进阶技巧:非等值连接--单向近距离匹配

目录 0 场景描述 1 数据准备 2 问题分析 ​编辑 ​编辑 3 小结 数字化建设通关指南 0 场景描述 表 t_1 和表 t_2 通过 a 和 b 关联时,有相等的取相等的值匹配,不相等时每一 个 a 的值在 b 中找差值最小的来匹。 表 t_1:a 中无重复值…

【Linux】软件包管理与vim工具使用详解

Linux 软件包管理与vim工具使用详解 什么是软件包Liunx安装软件Linux下载软件的过程(Ubuntu、Centos、other) centos7配置新的yum源操作系统的好坏评估---生态问题如何安装软件查看软件包卸载软件 Linux编辑器-vim使用简单vim配置Linux编译器-gcc/g使用预…

【Ant Design Pro】1. config 配置

前置说明 这里我使用的是 simple 版本,并结合 antd pro 脚手架搭建(现在默认使用为 umi4 版本): 虽然这个文档好像已经好久没有更新了。 config 文件: config.ts // https://umijs.org/config/ import { defineConfi…

《实战OpenCV系列》专栏介绍

简介 本专栏由浅入深,详细介绍了使用OpenCV进行图像/视频处理的各方面知识,包括:图像显示、图像的数学运算、图像的裁剪与拼接、图像的像素操作、几何变换、直方图、图像滤波、色彩空间转换、边缘检测、形态学操作、模板匹配、视频处理、图像…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟,很明显有问题。像网上其他的提高jvm参数就不说了,应该不是这个问题,也就快一点。 首先找到自己的电脑名称(用命令行也行,只要能找到自己电脑名称就行,这里直接在共享里看)。 复制…

微信小程序Webview与H5通信

背景 近期有个微信小程序需要用到web-view嵌套H5的场景,该应用场景需要小程序中频繁传递数据到H5进行渲染,且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大,显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…

【JAVA】接口杂谈:Java中的比较器(Comparator 接口)

这篇来介绍自定义类型对象的比较方法,利用Comparable 接口和 Comparator 接口。 目录 问题引入: 一、Comparable 接口 1.1比较学生的年龄 方法: 结果: 1.2比较学生的姓名 方法: 结果: 1.3 案例再…

数据结构 (19)二叉树

一、定义 二叉树(Binary Tree)是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。若集合为空,则称该二叉树为…

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…

Kubernetes集群操作

查看集群信息: kubectl get nodes 删除节点 (⽆效且显示的也可以删除) 后期如果 要删除某个节点,为了不增加其他节点的访问压力,先增加一个节点,再删除要删除的节点 语法 :kubect delete…

【C++】从零到一掌握红黑树:数据结构中的平衡之道

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 前言1 红黑树的概念**红黑树的五大性质** 2 红黑树的实现2.1 红黑树的结构…