加载数据中:Universe
要在 MDAnalysis 中获取坐标,您首先加载一个 Universe(通常不直接使用坐标读取器):
import MDAnalysis as mda
u = mda.Universe('molecule.pdb')
宇宙包含“拓扑”(原子类型、可用的键等)和“轨迹”(即坐标)。
访问每个原子数据:Universe.atoms
所有原子都存储在u.atoms
(它们形成一个AtomGroup)。所有关于原子的信息都可以从 AtomGroup 获得。例如,所有位置都可以作为一个 numpy 数组使用
u.atoms.positions
名字是
u.atoms.names
还有更多的属性。(同样适用于残基:u.residues
或u.atoms.residues
给出残基。您还可以对 AtomGroup 进行切片/索引以获得新的 AtomGroup。例如,属于前 20 个原子的残基是u.atoms[:20].residues
...... AtomGroups 是使用 MDAnalysis 的关键.)
提取原子名称和位置
要构建您要求的列表:
names_positions = [[at] + list(pos) for at, pos in zip(u.atoms.names, u.atoms.positions)]
例如,使用MDAnalysisTests包PDB
中包含的测试文件:
import MDAnalysis as mda
from MDAnalysisTests.datafiles import PDB
u = mda.Universe(PDB)
names_positions = [[at] + list(pos) for at, pos in zip(u.atoms.names, u.atoms.positions)]
# show the first three entries
print(names_positions[:3])
给
[['N', 52.017, 43.56, 31.555], ['H1', 51.188, 44.112, 31.722], ['H2', 51.551, 42.828, 31.039]]
学习更多...
有关 MDAnalysis 的快速介绍,请查看快速入门指南,其中更详细地解释了其中大部分内容。它还告诉您如何选择特定的原子并形成新的 AtomGroup。
然后您可以查看用户指南的其余部分。
绑定有点棘手(您可以使用它们,u.atoms.bonds
但如果您想使用它们,您必须了解更多关于 MDAnalysis 如何表示拓扑的信息——我建议您从询问用户邮件列表开始,请参阅参与 MDAnalysis,因为这是MDAnalysis 开发人员主要回答问题的地方。)