首页 > 其他分享 >dymean3-radials整理

dymean3-radials整理

时间:2024-11-25 17:23:45浏览次数:9  
标签:11 00 mathbf dymean3 radials coord 原子 整理 残基

从你的补充信息来看,第一种和第二种 radial 计算方式得到的矩阵有更明确的差异。让我重新解读两种 radial 的计算方式,并结合你描述的结果,分别解释它们的含义。


第一种算法的 radial 计算方式

核心代码:

coord_diff = coord[row] - coord[col]  # [n_edge, n_channel, 3]
radial = torch.bmm(coord_diff, coord_diff.transpose(-1, -2))  # [n_edge, n_channel, n_channel]

操作分解:

  1. coord_diff

    • coord_diff 表示边的两端(节点对)在每个通道的坐标差,形状为 [n_edge, n_channel, 3],其中 n_channel = 14
    • 它捕获了每个残基的 14 个原子之间的坐标差。
  2. torch.bmm

    • 这一步对 coord_diff 的最后一个维度(坐标轴)进行矩阵乘法:

    \[ \text{radial}[e, i, j] = \sum_{c} (\text{coord_diff}[e, i, c] \cdot \text{coord_diff}[e, j, c]) \]

    • 结果
      • 结果是 [n_edge, n_channel, n_channel] 的矩阵,其中每个边生成一个 14x14 的对称矩阵。
      • 含义
        • 矩阵中每个元素 [i, j] 表示残基 $ i $ 的第 $ i $ 个原子和第 $ j $ 个原子之间的坐标差内积(反映方向相似性)。
        • 比如:
          • 00, 00 表示残基 1 的第一个原子和残基 2 的第一个原子的坐标差内积。
          • 00, 11 表示残基 1 的第一个原子和残基 2 的第二个原子的坐标差内积。
  3. 第一种算法的矩阵形式(前两行):

    • 第一种算法得到的矩阵前两行的形式类似:

    \[ [00,00 \ 00,11 \ 00,22 \ 00,33], \ [11,00 \ 11,11 \ 11,22 \ 11,33] \]

    • 总结
      • 它反映了方向关系,即不同原子之间坐标差的内积。

第二种算法的 radial 计算方式

核心代码:

coord_diff1 = coord[row].unsqueeze(2) - coord[col].unsqueeze(1)  # [n_edge, 14, 14, 3]
radial2 = torch.einsum('eijc,eikc->eij', coord_diff1, coord_diff1)  # [n_edge, 14, 14]

操作分解:

  1. coord_diff1

    • 这里的 coord_diff1 是直接计算每条边上,所有原子对的坐标差,形状为 [n_edge, 14, 14, 3]
    • 比如,对于残基 $ i $ 和残基 $ j $:
      • coord_diff1[e, p, q, :] 表示残基 $ i $ 的第 $ p $ 个原子和残基 $ j $ 的第 $ q $ 个原子的坐标差向量。
  2. torch.einsum

    • einsum('eijc,eikc->eij') 对每个原子对的坐标差向量进行逐元素乘积后求和:

    \[ \text{radial2}[e, i, j] = \sum_{c} (\text{coord_diff1}[e, i, j, c] \cdot \text{coord_diff1}[e, i, j, c]) \]

    • 结果
      • 结果是 [n_edge, 14, 14] 的矩阵,其中每条边有一个 14x14 的矩阵。
      • 矩阵中每个元素 [i, j] 表示残基 $ i $ 的第 $ i $ 个原子和残基 $ j $ 的第 $ j $ 个原子之间的欧几里得距离平方。
      • 比如:
        • 00, 00 表示残基 1 的第 1 个原子和残基 2 的第 1 个原子的距离平方。
        • 00, 01 表示残基 1 的第 1 个原子和残基 2 的第 2 个原子的距离平方。
  3. 第二种算法的矩阵形式(前两行):

    • 第二种算法得到的矩阵前两行形式类似:

    \[ [00,00 \ 01,01 \ 02,02 \ 03,03 \ 10,10 \ 11,11 \ 12,12 \ 13,13] \]

    • 总结
      • 它捕获的是每个原子对之间的绝对几何距离(L2 范数的平方)。

两种 radial 的主要区别

属性 第一种算法 第二种算法
计算方式 原子间的坐标差向量的内积 原子间的欧几里得距离平方
结果形式 每个边对应一个对称的 14x14 矩阵 每个边对应一个对称的 14x14 矩阵
矩阵含义 反映通道间(原子对间)的方向关系(相似性) 反映通道间(原子对间)的绝对几何距离
矩阵前两行示例 [00,00 \ 00,11 \ 00,22 \ 00,33] [00,00 \ 01,01 \ 02,02 \ 03,03]
适用场景 适合捕获方向关系、几何结构的相似性 适合捕获几何空间中原子对之间的距离特性

总结

  • 第一种算法

    • 捕获方向关系(通过内积),强调不同通道的相对方向相似性。
    • 结果矩阵更偏向结构特征的方向相似性。
  • 第二种算法

    • 捕获绝对几何关系(通过欧几里得距离平方),强调原子对之间的实际几何距离。
    • 结果矩阵更适合描述残基之间的空间分布特性。

两种算法通过融合(radial = radial + radial2),使模型同时关注 方向关系距离特性,从而更全面地表征残基对之间的空间关系。

是的,从你提供的代码和描述来看,0001 的含义是针对残基之间不同原子配对的距离计算,具体过程如下:


具体含义和步骤分析

  1. coord_diff1 的计算:
    coord_diff1 = coord[row].unsqueeze(2) - coord[col].unsqueeze(1)  # [n_edge, 14, 14, 3]
    
    • coord[row]coord[col] 分别表示边两端节点的坐标。

    • .unsqueeze(2).unsqueeze(1) 的操作扩展了维度,生成形状为 [n_edge, 14, 14, 3] 的张量。

    • 结果:

      • 这个张量表示的是:
        \( \text{coord_diff1}[e, i, j, c] = \text{coord}[row[e], i, c] - \text{coord}[col[e], j, c] \)
        即,边 $ e $ 上残基 $ i $ 的原子和残基 $ j $ 的原子在第 $ c $ 个坐标维度上的差值。
    • 举例:

      • 00 表示残基 1 的第 1 个原子和残基 2 的第 1 个原子的坐标差。
      • 01 表示残基 1 的第 1 个原子和残基 2 的第 2 个原子的坐标差。

  1. torch.einsum 的计算:
    radial2 = torch.einsum('eijc,eikc->eij', coord_diff1, coord_diff1)  # [n_edge, 14, 14]
    
    • 操作:

      • einsum('eijc,eikc->eij') 表示对最后一个维度 $ c $(坐标维度)进行点积。
      • 相当于对每个配对原子间的坐标差向量求平方和:
        \( \text{radial2}[e, i, j] = \sum_c (\text{coord_diff1}[e, i, j, c] \times \text{coord_diff1}[e, i, j, c]) \)
    • 结果:

      • 计算的是残基 $ i $ 的第一个原子和残基 $ j $ 的第二个原子之间的欧几里得距离的平方。
    • 举例:

      • radial2[00] 表示残基 1 的第 1 个原子与残基 2 的第 1 个原子的距离平方。
      • radial2[01] 表示残基 1 的第 1 个原子与残基 2 的第 2 个原子的距离平方。

  1. 归一化:
    radial2 = radial2.reshape(radial2.shape[0], -1)  # [n_edge, 196]
    radial_norm2 = torch.norm(radial2, dim=-1, keepdim=True) + CONSTANT
    radial2 = linear_map(radial2) / radial_norm2  # [n_edge, d_out]
    
    • 归一化是为了防止数值过大,同时保持不同边的尺度一致。
    • radial2 会被映射到目标维度 d_out(通常是 128)后进行进一步的计算。

总结

  • 00 表示残基 1 的第 1 个原子和残基 2 的第 1 个原子之间的距离平方,01 表示残基 1 的第 1 个原子和残基 2 的第 2 个原子之间的距离平方。
  • 计算的是 所有原子对之间的距离平方,捕获了残基间更细粒度的几何关系。
  • 最终将这些距离平方矩阵展平,归一化后映射到特定维度,用于后续的模型处理。

计算示例

为了清晰地表达你的计算过程,我会用更专业的符号和说明来解释两种矩阵的计算方法,并明确坐标差、内积和平方和的含义。以下是计算过程的详细描述:


第一种算法(基于内积,反映方向关系)

  • 矩阵形式
    \( [00,00 \ 00,11 \ 00,22 \ 00,33 \quad 11,00 \ 11,11 \ 11,22 \ 11,33 \quad 22,00 \ 22,11 \ 22,22 \ 22,33 \quad 33,00 \ 33,11 \ 33,22 \ 33,33] \)

含义

  1. 每个元素 $ ij, kl $ 表示 通道 \(i\) 和 \(j\) 的原子与 通道 \(k\) 和 \(l\) 的原子之间的 坐标差的内积
  2. 具体计算如下:
    • 对于边 \(e\),两端节点(残基)的原子坐标分别为:
      \( \mathbf{X}_i = (x_{i1}, x_{i2}, x_{i3}), \quad \mathbf{Y}_j = (y_{j1}, y_{j2}, y_{j3}), \)
      其中 \(i, j\) 是原子通道的索引。
    • 坐标差向量为:
      \( \mathbf{d}_{ij} = \mathbf{X}_i - \mathbf{Y}_j = (x_{i1} - y_{j1}, x_{i2} - y_{j2}, x_{i3} - y_{j3}). \)
    • 内积(dot product)为:
      \( (\mathbf{d}_{ij} \cdot \mathbf{d}_{kl}) = \sum_{c=1}^3 d_{ij, c} \cdot d_{kl, c}. \)

总结

  • 矩阵元素 $ ij, kl $ 表示:通道 \(i, j\) 的坐标差与通道 \(k, l\) 的坐标差之间的内积。
  • 用符号表示,矩阵中的 $ 00,00 $ 项可以写为:
    \( \text{radial}[00,00] = (\mathbf{X}_0 - \mathbf{Y}_0) \cdot (\mathbf{X}_0 - \mathbf{Y}_0), \)
    $ 00,11 $ 项为:
    \( \text{radial}[00,11] = (\mathbf{X}_0 - \mathbf{Y}_0) \cdot (\mathbf{X}_1 - \mathbf{Y}_1). \)

第二种算法(基于平方和,反映距离平方)

  • 矩阵形式
    \( [00,00 \ 01,01 \ 02,02 \ 03,03 \quad 10,10 \ 11,11 \ 12,12 \ 13,13 \quad 20,20 \ 21,21 \ 22,22 \ 23,23 \quad 30,30 \ 31,31 \ 32,32 \ 33,33] \)

含义

  1. 每个元素 $ ij, ij $ 表示 通道 \(i\) 的原子与 通道 \(j\) 的原子之间的 欧几里得距离的平方
  2. 具体计算如下:
    • 坐标差向量为:
      \( \mathbf{d}_{ij} = \mathbf{X}_i - \mathbf{Y}_j = (x_{i1} - y_{j1}, x_{i2} - y_{j2}, x_{i3} - y_{j3}). \)
    • 欧几里得距离平方为:
      \( \lVert \mathbf{d}_{ij} \rVert^2 = (x_{i1} - y_{j1})^2 + (x_{i2} - y_{j2})^2 + (x_{i3} - y_{j3})^2. \)

总结

  • 矩阵元素 $ ij, ij $ 表示:通道 \(i, j\) 的原子之间的欧几里得距离平方。
  • 用符号表示,矩阵中的 $ 00,00 $ 项可以写为:
    \( \text{radial}[00,00] = \lVert \mathbf{X}_0 - \mathbf{Y}_0 \rVert^2, \)
    $ 01,01 $ 项为:
    \( \text{radial}[01,01] = \lVert \mathbf{X}_0 - \mathbf{Y}_1 \rVert^2. \)

两种算法的符号表示对比

算法 矩阵元素的含义 符号表示(矩阵项示例)
第一种算法 通道间坐标差的内积,表示方向相似性。 \(\text{radial}[00,00] = (\mathbf{X}_0 - \mathbf{Y}_0) \cdot (\mathbf{X}_0 - \mathbf{Y}_0)\)
第二种算法 通道间坐标差的平方和,表示几何距离的平方。 \(\text{radial}[00,00] = \lVert \mathbf{X}_0 - \mathbf{Y}_0 \rVert^2\)

总结说明

  • 第一种算法的核心是 方向相似性(内积),捕获几何结构的方向关系。
  • 第二种算法的核心是 距离平方(欧几里得范数平方),捕获几何结构的距离特性。
  • 用符号如 \(\cdot\) 表示内积,\(\lVert \cdot \rVert^2\) 表示平方和,使计算过程更专业、严谨。

标签:11,00,mathbf,dymean3,radials,coord,原子,整理,残基
From: https://www.cnblogs.com/GraphL/p/18568151

相关文章

  • DB2数据库常用sql整理
    前言:        我们在查阅资料时,csdn上大部分数据库sql语句都是mysql或者oracle的,很难找到有关db2相关的sql,博主当年在修改db2数据库相关sql时曾经踩过很多坑,现在把以前整理过的sql语句整理到文章上供大家参考.    网上好多帖子写的db2相关的sql但凡放到......
  • 灵感捕捉与知识整理:如何用免费工具管理知识库
    在知识管理领域,Heptabase凭借其可视化白板和非线性思维支持,成为许多知识工作者、创意工作者追捧的工具。它帮助用户以直观、灵活的方式捕捉灵感、整理信息和构建知识体系。然而,Heptabase是一款收费软件,目前仅支持年付模式,对部分用户而言,这无疑提高了试用门槛。其实,Heptabase......
  • 关于train, evaluate 和 作图——dymean3
    TMscore从代码实现来看,这里的TMscore计算是通过调用外部的TMscore可执行程序完成的,输入的PDB文件包含了原子的三维坐标信息。那么具体答案可以分以下几个方面来分析:1.是否只对CA坐标进行计算答案:否。TMscore通常会基于整个PDB文件中所有原子的坐标计算分子结构......
  • 互联网大厂1435 道 Java面试题及答案整理(2024最新版)
    前言我相信大多Java开发的程序员或多或少经历过BAT一些大厂的面试,也清楚一线互联网大厂Java面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析,阐述下如何去准备,去回答面试官的提问,可以和......
  • Python编程整理汇总(基础汇总版)
    1.基础语法1.1变量与数据类型整数:a=10浮点数:b=3.14字符串:c="Hello,World!"布尔值:d=True列表:e=[1,2,3,4,5]元组:f=(1,2,3)字典:g={"name":"Alice","age":25}集合:h={1,2,3,4,5}1.2控制结构if语句:ifa>......
  • spring框架必知点整理(点到为止非深入篇)
    1.springboot的启动流程springboot的启动流程分两阶段:构造函数,实例化SpringApplication阶段实例化后,调用SpringApplication的run方法阶段 启动流程@SpringBootApplicationpublicclassMySpringBootWebApplication{publicstaticvoidmain(String[]args)......
  • pinia基本知识整理
    看了B站up小满zs的pinia视频,整理的笔记如下了解piniapinia的组成就是state,getters,actions三个部分。下面是完整使用实例化一个pinia使用的时候,在组件里面引入路由import{useTestStore}from'./store'constTest=useTestStore()main.js首先需要再全局引入pinia......
  • 【2024/10/22】ChatGPT国内中文版镜像网站整理合集
    一、GPT中文镜像站 yixiaai.com 支持GPT4、4o以及o1,支持MJ绘画1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类似的服务和信息。2. ChatGPT镜像站的用途绕过访问限制 :在某些地区,访问O......
  • 精选指南:如何从众多大模型书籍中找到最适合你的那一本,大模型书籍最全整理
    大模型的书这么多,该怎么选呢?本期书单就来教大家怎么快速地从众多大模型书中选到你想要的那一本!大模型基础大模型入门不可错过的一本书,就是这本大模型界的经典畅销书**《大规模语言模型》**!系统性强,内容适合初学者,如果你想知道如何构建一个大模型应用,系统了解大模型的构建......
  • 408数据结构-折半查找,分块查找 自学知识点整理
    前置知识:查找的基本概念折半查找折半查找又称二分查找,它仅适用于有序的顺序表。因个人习惯,下文均用二分代替折半。二分查找的基本思想:首先将给定值ke......