Как наложить и вычислить RMSD для большого количества файлов mmCIF (или PDB), содержащих РАЗНЫЕ белки.Python

Программы на Python
Anonymous
Как наложить и вычислить RMSD для большого количества файлов mmCIF (или PDB), содержащих РАЗНЫЕ белки.

Сообщение Anonymous »

Я хотел бы задать вам вопрос о наложении и вычислении RMSD нескольких файлов mmCIF одновременно. Я создаю код, который загружает все гомологическое суперсемейство, которое затем необходимо обрезать на основе определенного значения RMSD. Я хочу автоматизировать этот процесс в Python (в рамках jupyterLab).
Рассматриваемые файлы mmCIF содержат разные белки. На данный момент я попытался использовать BIO.PDB (MMCIFPparser), чтобы сначала проанализировать структуру первого файла .cif (называемого mmcif_ref), а затем список всех остальных файлов. Я хочу сравнить все остальные белковые структуры с эталонными и рассчитать RMSD. Однако проблема в том, что у них разные атомы, что я нашел в Интернете и является одним из основных критериев.
Мой текущий код не работает и выдает ошибка:

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[24], line 1
----> 1 rmsd = calculate_rmsd(mmcif_list, mmcif_ref, mmcif_comp)

Cell In[21], line 7, in calculate_rmsd(mmcif_dir, mmcif_ref, mmcif_comp)
4 parser = MMCIFParser()
6 # Parse the structures from the MMCIF files
----> 7 structure1 = parser.get_structure("reference", mmcif_dir + '/' + mmcif_ref)
8 structure2 = parser.get_structure("comparison", mmcif_dir + '/' + mmcif_comp)
10 # Select the atoms for superimposition

TypeError: can only concatenate list (not "str") to list

Итак, мой вопрос: глядя на мой код, что бы вы посоветовали мне изменить, чтобы иметь возможность накладывать несколько разных белков на один эталонный белок и сохранять только те файлы cif, которые соответствуют конкретное среднеквадратичное значение.
Надеюсь, кто-нибудь сможет мне помочь. Заранее спасибо!
# Initialization
cur_dir = os.getcwd()
mmcif_dir = cur_dir + '/' + protein_name + '/input/cif_files'
output_dir = cur_dir + '/' + protein_name + '/prep'
mmcif_list = []
for file in os.listdir(mmcif_dir):
if file.endswith('.cif'):
mmcif_list.append(file)

mmcif_ref = mmcif_list[0]
mmcif_comp = mmcif_list[1:]
print(mmcif_ref)
print(mmcif_comp)

def calculate_rmsd(mmcif_dir, mmcif_ref, mmcif_comp):
parser = MMCIFParser()

# Parse the structures from the MMCIF files
structure1 = parser.get_structure("reference", mmcif_dir + '/' + mmcif_ref)
structure2 = parser.get_structure("comparison", mmcif_dir + '/' + mmcif_comp)

# Select the atoms for superimposition
atoms1 = Selection.unfold_entities(structure1, "N, CA, C")
atoms2 = Selection.unfold_entities(structure2, "N, CA, C")

# Create an instance of the Superimposer
super_imposer = Superimposer()

# Set the atoms for superimposition
super_imposer.set_atoms(atoms1, atoms2)

# Apply the transformation to the atoms of structure2
super_imposer.apply(structure2.get_atoms())

# Calculate the RMSD
rmsd = super_imposer.rms

return rmsd

rmsd = calculate_rmsd(mmcif_list, mmcif_ref, mmcif_comp)



Подробнее здесь: https://stackoverflow.com/questions/765 ... for-pdb-fi

Вернуться в «Python»