Извлечение одной цепочки из файла траектории MD с использованием MDAnalysis - PullRequest
1 голос
/ 24 февраля 2020

Я бы хотел извлечь одну цепочку из моей траектории молекулярной динамики (файл xt c), используя MDAnalysis. Я ожидал, что это будет очень просто, но произошла ошибка, и я не уверен, почему я получаю это. Вот код:

import MDAnalysis as mda

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

И он возвращает ошибку: AttributeError: AtomGroup не имеет атрибутов segids

На странице MDAnalysis «segid» используется с «. select_atoms». Проблема в том, что у меня есть файл траектории, а не файл classi c PDB?

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Итак, я пересмотрел код, потому что обнаружил, что для использования файла траектории необходимо иметь слегка измененный код, потому что в противном случае он извлечет только один кадр траектории, но при этом он извлечет всю траекторию одного цепочка:

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)

Спасибо за помощь!

1 голос
/ 24 февраля 2020

Предполагается, что в творении Universe (я чувствую себя Богом) вы должны указать топологию и траекторию. Насколько я помню, файл xt c содержит только траекторию (триплеты чисел, координаты для атомов), но не топологию. Без топологии нет ни остатков, ни сегментов.

Проверьте, есть ли у вас сегмент с:

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')

Теперь вы можете проходить / обрабатывать свою траекторию в любым способом, который вы считаете нужным.

...