使用 MDAnalysis 从 MD 轨迹文件中提取一条链

Extracting one chain from MD trajectory file using MDAnalysis

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

import MDAnalysis as mda

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

它 returns 错误: AttributeError: AtomGroup 没有属性 segids

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

据说在Universe造物中(我感觉像上帝)你必须提供拓扑结构和轨迹。据我所知,xtc 文件只包含轨迹(数字的三元组,原子的坐标),但不包含拓扑。没有拓扑结构,既没有残基也没有段。

检查您是否有一些细分:

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

可能会 return 一个空集。

在这种情况下,您应该为 Universe 创建一个包含您感兴趣的网段的合适拓扑。

类似于:

import MDAnalysis as mda

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

现在,您可以traverse/process您认为合适的任何方式的轨迹。

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

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)

感谢帮助!