Используя библиотеку biopython, я хочу удалить остатки, перечисленные в списке, следующим образом. Эта ветка (http://pelican.rsvs.ulaval.ca/mediawiki/index.php/Manipulating_PDB_files_using_BioPython) предоставляет пример удаления остатков. У меня есть следующий код для удаления остатков
residue_ids_to_remove = [105, 5, 8, 10, 25, 48]
structure = pdbparser.get_structure("3chy", "./3chy.pdb")
first_model = structure[0]
for chain in first_model:
for residue in chain:
id = residue.id
if id[1] in residue_ids_to_remove:
chain.detach_child(id[1])
modified_first_model = first_model
Но этот код не работал и выдавал ошибку
def detach_child(self, id):
"Remove a child."
child=self.child_dict[id]
KeyError: '105'
Что не так с этим кодом?
В качестве альтернативы я могу использовать accept_residue() и записать его в PDB. Я не хочу следовать этому, потому что хочу сделать это в памяти для дальнейшей обработки.