Biopython предоставляет модуль Bio.PDB для манипулирования полипептидными структурами. PDB (Protein Data Bank) является крупнейшим ресурсом по структуре белка, доступным онлайн. Он содержит много различных белковых структур, в том числе белково-белковые, белково-ДНК, белково-РНК-комплексы.
Чтобы загрузить PDB, введите следующую команду —
from Bio.PDB import *
Форматы файлов структуры белка
PDB распределяет белковые структуры в трех разных форматах —
- Формат файла на основе XML, который не поддерживается Biopython
- Формат файла pdb, который представляет собой специально отформатированный текстовый файл
- Формат файлов PDBx / mmCIF
Файлы PDB, распространяемые Банком Белковых Данных, могут содержать ошибки форматирования, которые делают их двусмысленными или трудными для анализа. Модуль Bio.PDB пытается автоматически устранить эти ошибки.
Модуль Bio.PDB реализует два разных анализатора, один в формате mmCIF, а второй в формате pdb.
Давайте узнаем, как анализировать каждый формат в деталях —
Парсер mmCIF
Давайте загрузим пример базы данных в формате mmCIF с сервера pdb, используя следующую команду:
>>> pdbl = PDBList() >>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
Это загрузит указанный файл (2fat.cif) с сервера и сохранит его в текущем рабочем каталоге.
Здесь PDBList предоставляет опции для просмотра и загрузки файлов с FTP-сервера PDB. Метод retrieve_pdb_file требует имя файла для загрузки без расширения. В файле retrieve_pdb_file также есть возможность указать каталог загрузки, pdir и формат файла file_format. Возможные значения формата файла следующие:
- «MmCif» (по умолчанию, файл PDBx / mmCif)
- «Pdb» (формат PDB)
- «Xml» (формат PMDML / XML)
- «Ммтф» (сильно сжатый)
- «Bundle» (архив в формате PDB для большой структуры)
Чтобы загрузить файл cif, используйте Bio.MMCIF.MMCIFParser, как указано ниже —
>>> parser = MMCIFParser(QUIET = True) >>> data = parser.get_structure("2FAT", "2FAT.cif")
Здесь, QUIET подавляет предупреждение при разборе файла. get_structure проанализирует файл и вернет структуру с идентификатором 2FAT (первый аргумент).
После выполнения вышеуказанной команды он анализирует файл и печатает возможное предупреждение, если оно доступно.
Теперь проверьте структуру, используя приведенную ниже команду —
>>> data <Structure id = 2FAT> To get the type, use type method as specified below, >>> print(type(data)) <class 'Bio.PDB.Structure.Structure'>
Мы успешно проанализировали файл и получили структуру белка. Мы узнаем подробности о структуре белка и о том, как его получить, в следующей главе.
PDB Parser
Давайте загрузим пример базы данных в формате PDB с сервера pdb, используя следующую команду:
>>> pdbl = PDBList() >>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
Это загрузит указанный файл (pdb2fat.ent) с сервера и сохранит его в текущем рабочем каталоге.
Чтобы загрузить файл pdb, используйте Bio.PDB.PDBParser, как указано ниже —
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True) >>> data = parser.get_structure("2fat","pdb2fat.ent")
Здесь get_structure похожа на MMCIFParser. Параметр РАЗРЕШЕНИЕ попытается проанализировать данные белка как можно более гибкими.
Теперь проверьте структуру и ее тип с помощью фрагмента кода, приведенного ниже —
>>> data <Structure id = 2fat> >>> print(type(data)) <class 'Bio.PDB.Structure.Structure'>
Хорошо, структура заголовка хранит информацию словаря. Для этого введите следующую команду —
>>> print(data.header.keys()) dict_keys([ 'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution', 'structure_reference', 'journal_reference', 'author', 'compound', 'source', 'keywords', 'journal']) >>>
Чтобы получить имя, используйте следующий код —
>>> print(data.header["name"]) an anti-urokinase plasminogen activator receptor (upar) antibody: crystal structure and binding epitope >>>
Вы также можете проверить дату и разрешение с помощью приведенного ниже кода —
>>> print(data.header["release_date"]) 2006-11-14 >>> print(data.header["resolution"]) 1.77
Структура PDB
Структура PDB состоит из одной модели, содержащей две цепочки.
- цепь L, содержащая количество остатков
- цепь H, содержащая количество остатков
Каждый остаток состоит из нескольких атомов, каждый из которых имеет трехмерную позицию, представленную координатами (x, y, z).
Давайте узнаем, как получить структуру атома подробно в следующем разделе —
модель
Метод Structure.get_models () возвращает итератор для моделей. Это определено ниже —
>>> model = data.get_models() >>> model <generator object get_models at 0x103fa1c80> >>> models = list(model) >>> models [<Model id = 0>] >>> type(models[0]) <class 'Bio.PDB.Model.Model'>
Здесь Модель описывает ровно одну трехмерную конформацию. Он содержит одну или несколько цепочек.
цепь
Метод Model.get_chain () возвращает итератор по цепочкам. Это определено ниже —
>>> chains = list(models[0].get_chains()) >>> chains [<Chain id = L>, <Chain id = H>] >>> type(chains[0]) <class 'Bio.PDB.Chain.Chain'>
Здесь Chain описывает правильную полипептидную структуру, то есть последовательную последовательность связанных остатков.
остаток
Метод Chain.get_residues () возвращает итератор для остатков. Это определено ниже —
>>> residue = list(chains[0].get_residues()) >>> len(residue) 293 >>> residue1 = list(chains[1].get_residues()) >>> len(residue1) 311
Ну, остаток содержит атомы, которые принадлежат аминокислоте.
атомы
Residue.get_atom () возвращает итератор для атомов, как определено ниже —
>>> atoms = list(residue[0].get_atoms()) >>> atoms [<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
Атом содержит трехмерную координату атома и называется вектором. Определяется ниже
>>> atoms[0].get_vector() <Vector 18.49, 73.26, 44.16>
Он представляет значения координат x, y и z.