1

我想使用 MDAnalysis 从我的分子动力学轨迹(xtc 文件)中提取一条链。我希望它非常简单,但是发生了错误,我不确定为什么会得到它。这是代码:

import MDAnalysis as mda

u = mda.Universe('trajectory1.xtc')
protein = u.select_atoms('segid A')
protein.write('trajectory1-A.xtc')

它返回错误: AttributeError: AtomGroup has no attribute segids

在 MDAnalysis 页面上,“segid”与“.select_atoms”一起使用。问题是我有轨迹文件而不是经典 PDB 文件吗?

4

2 回答 2

1

假设在Universe创作中(我觉得自己像上帝)你必须提供拓扑和轨迹。据我记得,xtc 文件只包含轨迹(三元组数字,原子的坐标),但不包含拓扑。没有拓扑,既没有残基,也没有片段。

检查您是否有一些细分:

u.atoms.segments
list(u.atoms.segments)

可能它会返回一个空集。

在这种情况下,您应该为Universe创建提供您感兴趣的段的合适拓扑。

就像是:

import MDAnalysis as mda

u = mda.Universe('mytopology.pdb', 'trajectory1.xtc')
protein = u.select_atoms('segid A')

现在,您可以以任何您认为合适的方式遍历/处理您的轨迹。

于 2020-02-24T09:21:13.553 回答
1

所以,我修改了代码,因为我发现使用轨迹文件需要稍微修改代码,否则它只会提取轨迹的一帧,但是这样它会提取一条链的整个轨迹:

import MDAnalysis as mda

u = mda.Universe('mytopology.pdb', 'trajectory1.xtc')
protein = u.select_atoms('segid A')
with mda.Writer("traj1-Achain.xtc", protein.n_atoms) as W:
    for ts in u.trajectory:
        W.write(protein)

感谢帮助!

于 2020-02-24T10:28:15.160 回答