我有一个pdb文件,它是一个大得多的系统的子集。这个pdb是特殊的,因为我有一些基于这个文件的坐标系的向量。我想把这些向量和系统的基向量画到pdb上。最后,我想可视化的矢量和基向量,因为它通过一些MD模拟,我更新矢量的位置,根据轨迹随着时间的推移。
首先,我想读一个pdb,它的坐标定义了基础向量,进一步定义了我想要可视化的其他向量。现在我在MDAnalysis:modules/MDAnalysis/coordinates/PDB.html#PDBReader中使用这个类
molecule=mda.coordinates.PDB.PDBReader('molecule.pdb')它可以很好地读取pdb,但是返回这个变量类型。
coordinates.PDB.Reader我想这并不奇怪,但我希望能够打印这个变量,得到一些坐标位置和原子类型的数组。我也想看看债券,但那没必要。现在当我打印出来的时候
<PDBReader molecule.pdb with 1 frames of 60 atoms>我想要看上去像
[atomtype1,x1,y1,z1]...[atomtypen,xn,yn,zn]谢谢,
发布于 2021-03-17 05:48:04
加载数据: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)]例如,使用包含在PDB包中的测试文件MDAnalysisTests:
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,请看一下快速启动指南,它更详细地解释了大部分这些事情。它还将告诉您如何选择特定的原子并形成新的AtomGroups。
然后,您可以查看用户指南的其余部分。
但是,如果您想使用u.atoms.bonds,您必须了解更多关于MDAnalysis如何表示拓扑的知识--我建议您从询问用户邮件列表开始,请参阅参与MDAnalysis,因为这是MDAnalysis开发人员主要回答问题的地方。
https://stackoverflow.com/questions/66660281
复制相似问题