首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MDAnalysis从pdb中提取数组中的坐标

使用MDAnalysis从pdb中提取数组中的坐标
EN

Stack Overflow用户
提问于 2021-03-16 17:26:01
回答 1查看 410关注 0票数 1

我有一个pdb文件,它是一个大得多的系统的子集。这个pdb是特殊的,因为我有一些基于这个文件的坐标系的向量。我想把这些向量和系统的基向量画到pdb上。最后,我想可视化的矢量和基向量,因为它通过一些MD模拟,我更新矢量的位置,根据轨迹随着时间的推移。

首先,我想读一个pdb,它的坐标定义了基础向量,进一步定义了我想要可视化的其他向量。现在我在MDAnalysis:modules/MDAnalysis/coordinates/PDB.html#PDBReader中使用这个类

代码语言:javascript
复制
molecule=mda.coordinates.PDB.PDBReader('molecule.pdb')

它可以很好地读取pdb,但是返回这个变量类型。

代码语言:javascript
复制
coordinates.PDB.Reader

我想这并不奇怪,但我希望能够打印这个变量,得到一些坐标位置和原子类型的数组。我也想看看债券,但那没必要。现在当我打印出来的时候

代码语言:javascript
复制
<PDBReader molecule.pdb with 1 frames of 60 atoms>

我想要看上去像

代码语言:javascript
复制
[atomtype1,x1,y1,z1]...[atomtypen,xn,yn,zn]

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 05:48:04

加载数据:Universe

要获得MDAnalysis中的坐标,首先加载一个Universe (通常不直接使用坐标读取器):

代码语言:javascript
复制
import MDAnalysis as mda
u = mda.Universe('molecule.pdb')

宇宙包含“拓扑”(原子类型、可用键等)和“轨道”(即坐标)。

访问每原子数据:Universe.atoms

所有的原子都存储在u.atoms中(它们形成一个AtomGroup)。有关原子的所有信息都可以从AtomGroup获得。例如,所有位置都可以作为numpy数组使用

代码语言:javascript
复制
u.atoms.positions

名字是

代码语言:javascript
复制
u.atoms.names

还有更多的属性。(对于残余物也是一样的:u.residuesu.atoms.residues给出了残余物。还可以对AtomGroup进行切片/索引,以获得新的AtomGroup。例如,前20个原子的残基是u.atoms[:20].residues.AtomGroups是使用MDAnalysis的关键。)

提取原子名称和位置

若要构建您要求的列表,请执行以下操作:

代码语言:javascript
复制
names_positions = [[at] + list(pos) for at, pos in zip(u.atoms.names, u.atoms.positions)]

例如,使用包含在PDB包中的测试文件MDAnalysisTests:

代码语言:javascript
复制
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])

给出

代码语言:javascript
复制
[['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开发人员主要回答问题的地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66660281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档