如何使用 atomselect 在 pdb 文件中为 MDAnalysis 指定 atomNumbers/Index 位置?

问题描述

在通读文档后,我仍然无法找到一种方法来使用 MDAnalysis 在我的 pdb 文件中选择一个特定的原子。

对于我的项目,我基本上是在外加电场中通过膜通道拉动氯化物。我想使用 MDAnalysis 专门选择通过通道推送的这种氯化物。不幸的是,这不是同一系统或什至段中唯一的氯化物,因此选择重命名或段在确定我要跟踪的氯化物方面没有用处。本质上,我将使用 MDAnalysis 进行计算,该计算使用该特定氯化物的轨迹来计算位移电荷函数。我很难编写代码告诉 MDAnalysis 我想要那个特定的氯化物。

我在 NAMD 中区分这一点的方式是使用索引号,但我无法在他们的文档中找到在 MDAnalysis 中使用此数字的方法,如果有人有使用 pdb 索引号而不是 segnames 和 ids 的经验,我将不胜感激,或将相关页面链接到文档(如果存在)。

谢谢!

解决方法

bynum 7:10 是一个基于 1 的包含索引

index 7 是一个从 0 开始的索引

例如,atomi7 = universe.select_atoms("index 7")

相关documentation

,

不幸的是 this is not yet documented,但从 2.0.0dev0 开始,除了 idindex 之外,您还可以使用 bynum 关键字。这可能更直接,因为 id 直接对应于 PDB 格式中“串行”列中的数字。例如:

import MDAnalysis as mda
from MDAnalysis.tests.datafiles import PDB
u = mda.Universe(PDB)
atom_with_serial_10_in_pdb = u.select_atoms("id 10")[0]
# or
atom_with_serial_10_in_pdb = u.atoms[u.atoms.ids == 10][0]