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…

Spring事务管理学习记录

一、概念 事务(Transaction)是指一组操作的集合,这些操作要么全部成功,要么全部失败。事务的四大特性(ACID)确保了数据的完整性和一致性: 原子性(Atomicity)&#xff1a…

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

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

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

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

阅读方法论

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

Java 百度网盘300文件一组 文件批量重命名

按260个文件一个文件夹 public static void main(String[] args) {String path "F:\\壁纸爬虫合集\\爬虫文件夹No1";int fileCount 0;List<List<File>> folderList new ArrayList<>();List<File> folderFiles new ArrayList<>();f…

js原型、原型链和继承

文章目录 一、原型1、prototype2、constructor 二、原型链1、字面量原型链2、字面量继承3、构造函数的原型链4、Object.create5、Object.setPrototypeOf 三、继承1、构造函数继承2、原型链继承3、组合继承 四、常见链条1、Function2、Object.prototype 继承是指将特性从父代传递…

在Manjaro Gnome桌面的基础上安装Budgie桌面环境

在Manjaro上安装Budgie桌面环境 Budgie是Solus团队开发的一种简单而优雅的桌面环境。 Budgie是由Solus项目主要开发的流行桌面环境&#xff0c;与GNOME堆栈紧密集成。它提供了简单而优雅的用户体验&#xff0c;并且可用于大多数发行版&#xff0c;如Arch、Debian、Manjaro等。…

芯片测试-smith圆图

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

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

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

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

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

腾讯阅文集团Android面试题及参考答案

Java 的基本数据类型有哪些?分别简述一下。 Java 的基本数据类型共有 8 种,可分为 4 类:整数类型、浮点类型、字符类型和布尔类型 。 整数类型:包括 byte、short、int 和 long。byte 占 1 个字节,取值范围是 - 128 到 127,适用于存储一些小范围的整数,如文件流中的字节数…

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

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

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

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

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

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

Vue如何加载十万条数据

加载十万条数据到 Vue 应用中是一个相对复杂的问题&#xff0c;主要因为渲染大量数据可能会导致性能瓶颈&#xff0c;尤其是在前端性能较低的设备上。为了确保加载大量数据时&#xff0c;页面不会卡顿或崩溃&#xff0c;我们通常采取一些优化手段&#xff0c;以下是几种常用的方…

【Ant Design Pro】1. config 配置

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

《实战OpenCV系列》专栏介绍

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

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

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