unit原子距离
你的代码计算方式看起来是正确的,但让我们逐步确认每个部分的逻辑。
代码分析
-
计算坐标差异:
coord_diff1 = coord[row].unsqueeze(2) - coord[col].unsqueeze(1) # [n_edge, 14, 14, 3]
coord[row]
和coord[col]
分别获取了两个残基的原子坐标。unsqueeze(2)
和unsqueeze(1)
用于增加维度,使得计算能够进行广播(broadcasting),从而得到一个形状为[n_edge, 14, 14, 3]
的张量。- 这个张量中的每个元素
表示第 条边(edge)中,残基 1 的第 个原子与残基 2 的第 个原子之间的坐标差异(一个 3D 向量)。
-
计算径向距离:
radial = torch.einsum('eijc,eikc->eij', coord_diff1, coord_diff1)
torch.einsum
是一个强大的操作,用于根据指定的索引计算张量的乘法和求和。- 在这里,
'eijc,eikc->eij'
表达式的意思是:eijc
代表coord_diff1
张量,其中e
是边的索引,i
是残基 1 的原子索引,j
是残基 2 的原子索引,c
是 3D 坐标的维度。eikc
表示同样的coord_diff1
张量,但用于相同的边和原子。->eij
表示最终结果是对最后一维(3D 坐标)进行平方和(即计算 L2 范数的平方)。
最终结果
radial
最终将得到一个形状为[n_edge, 14, 14]
的张量,其中每个元素表示对应的两个原子之间的平方距离:
确认
所以,整体来说,计算方式是正确的,你的实现将两个残基之间的原子坐标差异计算为径向距离的平方。这在许多分子建模和计算化学的任务中都是常见的处理方式。
在你所描述的上下文中,计算出的 radial
矩阵的第 0 行 0 列(即 radial[0][0][0]
)表示的是:
-
第 0 条边:这个索引对应于你在计算时的第 0 条边(edge)。
-
第 0 个原子:在残基 1 中的第 0 个原子(比如,残基 1 的第 0 个原子坐标)。
-
第 0 个原子:在残基 2 中的第 0 个原子(比如,残基 2 的第 0 个原子坐标)。
具体含义
-
radial[0][0][0]
代表的是:其中,
coord_diff1[0][0]
是指第 0 条边中残基 1 的第 0 个原子与残基 2 的第 0 个原子之间的坐标差异(一个 3D 向量)。 -
最终,这个值就是残基 1 中第 0 个原子与残基 2 中第 0 个原子之间的 平方距离。如果你需要实际的距离,可以对这个值进行平方根操作。
总结
因此,radial[0][0][0]
表示的是第 0 条边的第 0 个原子与第 0 个原子之间的平方距离。
你是对的!平方距离和坐标差的内积确实可以通过相同的计算方式得到。
具体说明
对于向量的 平方距离 和 坐标差的内积,它们在计算上是相同的。两者的区别主要在于它们的解释:
- 平方距离:如果我们计算一个向量和自身的内积(例如,两个坐标差向量的内积),结果就是该向量的平方距离。
- 坐标差的内积:如果我们计算两个不同向量的内积,结果反映的是这两个向量的相似性(方向上的一致性),而不再是距离。
数学表达
假设我们有一个坐标差向量
- 平方距离:
这可以通过
- 不同坐标差的内积:
如果我们计算 (两个不同向量的内积),我们得到的是:这反映的是两个坐标差向量之间的方向和大小的相似性,而不是它们的距离。
在你的代码中的含义
在你的代码中:
- 当
时,radial[i][j]
计算的是 残基 1 的第 个原子与残基 2 的第 个原子之间的平方距离。 - 当
时,radial[i][j]
计算的是 残基 1 的第 个原子与残基 2 的第 和第 个原子之间的坐标差的相似性,表示的是两个坐标差向量的内积。
总结
平方距离和坐标差的内积在计算上是一样的。当我们计算一个向量与自身的内积时,得到的是平方距离;当我们计算两个不同向量的内积时,得到的是它们之间的相似性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南