RFdiffusion get_torsions函数解读

函数功能

get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。

输入参数

  • xyz_in: 原子坐标张量,形状 [B, L, 27, 3],其中 B 是批量大小,L 是残基数量,27 表示原子类型(如 N, CA, C, CB),3 是坐标。
  • seq: 氨基酸序列,形状 [B, L],每个值对应氨基酸编号。
  • torsion_indices: 表示计算侧链扭转角所需的 4 个原子索引。
  • torsion_can_flip: 布尔数组,指示哪些扭转角可以翻转。
  • ref_angles: 理想化的参考角度,主要用于 CB 弯曲、CB 扭转和 CG 弯曲。
  • mask_in: 掩码(可选),用于屏蔽特定残基。

返回值

  1. torsions: 主链和侧链的扭转角张量,形状 [B, L, 10, 2]
  2. torsions_alt: 扭转角备用版本(翻转版),形状同上。
  3. tors_mask: 扭转角的有效掩码。
  4. tors_planar: 布尔掩码,指示哪些扭转角是平面的。

源代码:

def get_torsions(xyz_in, seq, torsion_indices, torsion_can_flip, ref_angles, mask_in=None
):B, L = xyz_in.shape[:2]tors_mask = get_tor_mask(seq, torsion_indices, mask_in)# torsions to restrain to 0 or 180degreetors_planar = torch.zeros((B, L, 10), dtype=torch.bool, device=xyz_in.device)tors_planar[:, :, 5] = seq == aa2num["TYR"]  # TYR chi 3 should be planar# idealize given xyz coordinates before computing torsion anglesxyz = xyz_in.clone()Rs, Ts = rigid_from_3_points(xyz[..., 0, :], xyz[..., 1, :], xyz[..., 2, :])Nideal = torch.tensor([-0.5272, 1.3593, 0.000], device=xyz_in.device)Cideal = torch.tensor([1.5233, 0.000, 0.000], device=xyz_in.device)xyz[..., 0, :] = torch.einsum("brij,j->bri", Rs, Nideal) + Tsxyz[..., 2, :] = torch.einsum("brij,j->bri", Rs, Cideal) + Tstorsions = torch.zeros((B, L, 10, 2), device=xyz.device)# avoid undefined angles for H generationtorsions[:, 0, 1, 0] = 1.0torsions[:, -1, 0, 0] = 1.0# omegatorsions[:, :-1, 0, :] = th_dih(xyz[:, :-1, 1, :], xyz[:, :-1, 2, :], xyz[:, 1:, 0, :], xyz[:, 1:, 1, :])# phitorsions[:, 1:, 1, :] = th_dih(xyz[:, :-1, 2, :], xyz[:, 1:, 0, :], xyz[:, 1:, 1, :], xyz[:, 1:, 2, :])# psitorsions[:, :, 2, :] = -1 * th_dih(xyz[:, :, 0, :], xyz[:, :, 1, :], xyz[:, :, 2, :], xyz[:, :, 3, :])# chisti0 = torch.gather(xyz, 2, torsion_indices[seq, :, 0, None].repeat(1, 1, 1, 3))ti1 = torch.gather(xyz, 2, torsion_indices[seq, :, 1, None].repeat(1, 1, 1, 3))ti2 = torch.gather(xyz, 2, torsion_indices[seq, :, 2, None].repeat(1, 1, 1, 3))ti3 = torch.gather(xyz, 2, torsion_indices[seq, :, 3, None].repeat(1, 1, 1, 3))torsions[:, :, 3:7, :] = th_dih(ti0, ti1, ti2, ti3)# CB bendNC = 0.5 * (xyz[:, :, 0, :3] + xyz[:, :, 2, :3])CA = xyz[:, :, 1, :3]CB = xyz[:, :, 4, :3]t = th_ang_v(CB - CA, NC - CA)t0 = ref_angles[seq][..., 0, :]torsions[:, :, 7, :] = torch.stack((torch.sum(t * t0, dim=-1), t[..., 0] * t0[..., 1] - t[..., 1] * t0[..., 0]),dim=-1,)# CB twistNCCA = NC - CANCp = xyz[:, :, 2, :3] - xyz[:, :, 0, :3]NCpp = (NCp- torch.sum(NCp * NCCA, dim=-1, keepdim=True)/ torch.sum(NCCA * NCCA, dim=-1, keepdim=True)* NCCA)t = th_ang_v(CB - CA, NCpp)t0 = ref_angles[seq][..., 1, :]torsions[:, :, 8, :] = torch.stack((torch.sum(t * t0, dim=-1), t[..., 0] * t0[..., 1] - t[..., 1] * t0[..., 0]),dim=-1,)# CG bendCG = xyz[:, :

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

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

相关文章

docker springboot 运维部署详细实例

环境安装 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b镜像构建 Dockerfile 文件内容 FROM openjdk:8 # Author Info 创建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…

【ArcGIS Pro微课1000例】0063:处理无人机数据(空三、生成DOM、DSM、DTM)

使用ArcGIS Pro 正射拼接处理无人机数据流程化工具,不需要额外产品许可的支持,只需要桌面是高级版许可即可支持。ArcGIS Pro处理无人机摄影测量数据主要内容有:空三、生成DOM、DSM、DTM。 文章目录 一、创建映射项目二、提交自由空三三、添加控制点优化四、提交产品生产一、…

解锁 Jenkins 搭建全攻略

一、Jenkins 简介 (一)简述 Jenkins 的作用与价值 Jenkins 是一款在软件开发领域备受瞩目的开源软件项目,它基于 Java 开发,是极为重要的持续集成工具。在软件开发的整个流程中,Jenkins 发挥着关键作用,能…

人工智能ACA(四)--机器学习基础

零、参考资料 一篇文章完全搞懂正则化(Regularization)-CSDN博客 一、 机器学习概述 0. 机器学习的层次结构 学习范式(最高层) 怎么学 监督学习 无监督学习 半监督学习 强化学习 学习任务(中间层&#xff0…

豆包MarsCode:小U的数字插入问题

问题描述 问题分析 问题的核心是找到将数字 b 插入到数字 a 的某个位置后,使形成的数字尽可能大。需要仔细分析以下几个要点: 1. 分析数字的特性 输入的两个数字: a 是一个正整数(例如 76543)。b 是一个非负整数&am…

雅思真题短语梳理(八)

126员工流动率高 high staff turnover 127(多)负担一些工作任务 cover some duties / an increased workload 128不满 feel upset and resentful 129偏向性待遇 preferential treatment 130介入帮忙 step in and help 131切实的好处 tangible benefits 132挽留 staff retention…

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑,一个是外部特性,一个是内部特性。外部特性就是把电感视为一个黑盒子,带有两个端子,如果带有抽头的电感就有三个端子,需要去考虑其电感值、Q值和自…

基础元器件的学习

1、二极管 1.1二极管的符号 ZD是稳压二极管 VD、V、D是普通二极管的符号。 1.2二极管的反向恢复时间 首先交流电为上正下负,然后下正上负。当二极管接到反向电压,二极管存在寄生电容,电压不能立刻突变,当输入频率变高时&#…

EdgeX物联网平台

一、概述 EdgeX Foundry是一个由Linux基金会支持的边缘计算开源平台。它的定位是作为通用工业物联网边缘计算通用框架,部署在路由器和交换机等边缘设备上。EdgeX Foundry为各种传感器、设备或其他物联网器件提供即插即用功能,并管理它们,进一步收集和分析它们的数据,或者导…

基于小样本学习的自然场景图像中茶叶病害识别技术综述

基于小样本学习的自然场景图像中茶叶病害识别技术综述 引言 茶叶作为全球广泛消费的饮品之一,其产量和品质直接关系到茶农的经济收益。然而,茶树在生长过程中容易受到多种病害的侵染,这些病害不仅影响茶叶的产量和品质,还给茶农…

Linux之帮助命令

一、man帮助命令 语法: man 你要查找的命令例如:man ls 即可得到你要的命令说明,按q退出 二、内置命令和外部命令 一部分基础功能的系统命令是直接内嵌在shel中的,系统加载启动之后会随着shll一起加载,常驻系统内存中…

MONI后台管理系统-swagger3(springdoc-openapi)集成

springdoc-openapi Java 库有助于使用 Spring Boot 项目自动生成 API 文档。springdoc-openapi 通过在运行时检查应用程序来根据 Spring 配置、类结构和各种注释推断 API 语义。 该库会自动生成 JSON/YAML 和 HTML 格式的页面文档。生成的文档可以使用swagger-api注释进行补充。…

GFPS扩展技术原理(七)-音频切换消息流

音频切换消息流 Seeker和Provider通过消息流来同步音频切换能力,触发连接做切换,获取或设置音频切换偏好,通知连接状态等等。为此专门定义了音频切换消息流Message Group 为0x07,Message codes如下: MAC of Audio s…

LiteFlow决策系统的策略模式,顺序、最坏、投票、权重

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 想必大家都有听过或做过职业和性格测试吧,尤其是现在的毕业生,在投了简历之后经…

【计算机视觉基础CV-图像分类】02-入门详解图像分类、经典数据集、比赛与冠军图像模型演进史

前言 图像分类(Image Classification)是计算机视觉(Computer Vision)中一项基础且核心的任务。简单来说,就是让计算机从给定的类别集合中,为一张输入图片分配一个正确的类别标签。这个过程听起来直观&…

三子棋游戏(基础版)

我们用 C 语言代码实现了一个简单的控制台版三子棋游戏&#xff0c;代码分为三个部分&#xff0c;分别是头文件game.h中定义的函数声明以及两个源文件game.c和test.c、game.c文件。 1.头文件&#xff08;game.h&#xff09;部分 首先包含了<stdio.h>&#xff08;用于标…

使用Chat-LangChain模块创建一个与用户交流的机器人

当然&#xff01;要使用Chat-LangChain模块创建一个与用户交流的机器人&#xff0c;你需要安装并配置一些Python库。以下是一个基本的步骤指南和示例代码&#xff0c;帮助你快速上手。 安装依赖库 首先&#xff0c;你需要安装langchain库&#xff0c;它是一个高级框架&#x…

嵌入式驱动开发详解20(IIO驱动架构)

文章目录 前言IIO子系统简介主要结构体主要API函数 IIO子系统实现SPI框架IIO框架IIO通道详解通道结构体分析通道命名分析icm20608设备通道实现 读取函数写入函数 测试测试效果命令行读取应用程序读取 后续参考文献 前言 IIO 全称是 Industrial I/O&#xff0c;翻译过来就是工业…

Linux 网络维护相关命令简介

目录 零. 概要一. ping二. ip命令2.1 ip address2.2 ip route2.3 ip neighbour 三. traceroute四. DNS查询4.1 nslookup4.2 dig 五. ss 查看网络连接状态 零. 概要 ⏹在Linux系统中有2套用于网络管理的工具集 net-tools 早期网络管理的主要工具集&#xff0c;缺乏对 IPv6、网…