首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地遍历MDAnalysis轨迹,保存剩余属性时间序列?

如何有效地遍历MDAnalysis轨迹,保存剩余属性时间序列?
EN

Stack Overflow用户
提问于 2022-01-19 14:37:57
回答 1查看 285关注 0票数 2

我使用MDAnalysis编写了一些工作代码,可以将质量时间序列的残差中心保存在数组中,但我不知道是否有一种更全面、更高效/快速的方法(理解、数组操作.)做这件事。

代码语言:javascript
复制
import MDAnalysis as mda
mdau = mda.Universe(pdb, xtc)
arr = np.empty(( len(mdau.select_atoms("protein").residues), len(mdau.trajectory), 3 ))
# 288 protein residues, 1250 frames and 3 xyz-coordinates per center of mass; this array shape is important
for ts in mdau.trajectory:
    for num, res in enumerate(mdau.select_atoms("protein").residues):
        arr[num, ts.frame] = res.atoms.center_of_mass()

我使用的.pdb和.xtc文件可以在以下链接中下载:https://submission.gpcrmd.org/dynadb/files/Dynamics/11579_dyn_169.pdb https://submission.gpcrmd.org/dynadb/files/Dynamics/11576_trj_169.xtc

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 14:57:58

您可以对代码进行一些更改:

在for循环之外选择蛋白质原子,而不是在每个iteration

  • vectorise上通过将compound='residues'参数传递给center_of_mass方法

  • 将质量计算中心传递给center_of_mass方法

  • 使用ag.n_residuesu.trajectory.n_frames属性

F 211

下面是对使用以下建议的代码的更新:

代码语言:javascript
复制
import numpy as np
import MDAnalysis as mda

u = mda.Universe('11579_dyn_169.pdb', '11576_trj_169.xtc')
protein = u.select_atoms("protein")
arr = np.empty((protein.n_residues, u.trajectory.n_frames, 3))

for ts in u.trajectory:
    arr[:, ts.frame] = protein.center_of_mass(compound='residues')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70772541

复制
相关文章

相似问题

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