- Получаем белковые структуры из базы PDB и сохраняем их в локальный каталог для дальнейшей обработки.
- Распаковываем сжатые
.ent.gz
файлы в формат.pdb
, чтобы подготовить их к обработке.
- Удаляем PDB файлы, содержащие последовательности ДНК или РНК, оставляя только белковые структуры.
- Анализ файла: Проверяем строки SEQRES и ATOM на наличие нуклеотидов (A, T, G, C, U и их производных).
- Удаление файлов: Если обнаружены нуклеотиды, файл удаляется.
- Исключаем файлы с несколькими моделями для упрощения анализа.
- Подсчёт моделей: Определяем количество моделей по строкам "MODEL" в каждом файле.
- Удаление файлов: Удаляем файлы с более чем одной моделью.
- Удаляем молекулы воды из структур для очистки от лишних элементов, которые могут искажать анализ.
- Исключаем ненужные молекулы (например, ионы и буферные компоненты), используя список лигандов из файла
trash_ligands.json
. Составление списка происходило вручную и с использованием анализа в ноутбукеligand_eda.ipynb
после предварительной конвертации в форматы SMILES и SDF.
- Преобразуем лигандные части PDB-файлов в форматы SMILES и SDF для удобства последующей обработки.
- Создаем JSON файл с информацией о комплексах белков с лигандами, а также информацию о сайтах связывания, полученную из PDB-файлов.
- Фильтруем лигандные комплексы, оставляя только те, которые находятся в известных сайтах связывания. Если информация о сайте отсутствует, комплекс не изменяется.
- Удаляем PDB файлы, не содержащие интересующие нас лиганды, или файлы, которые не прошли предыдущие этапы фильтрации.
- Разделяем структуры на уникальные биомолекулы на основе информации из REMARK 350 и сохраняем только уникальные структуры.
- Парсинг цепей биомолекул: Извлекаем информацию о цепях для каждой биомолекулы.
- Сохранение уникальных структур: Удаляем дубликаты и структуры, в которых одна последовательность включает другую.
На этом этапе выделяются уникальные белок-лиганд комплексы для изучения их взаимодействий. В итоге получаем отдельные файлы для каждого уникального комплекса, содержащего только взаимодействующие цепи и лигандные группы, что упрощает дальнейший анализ.
Процесс разделения:
-
Загрузка PDB-файлов:
- Читаем структуры из подготовленного каталога PDB, содержащие очищенные белково-лигандные комплексы.
-
Определение белковых и лигандных атомов:
- Определяем атомы белка и лиганда для каждой структуры, чтобы корректно разделить их и сконцентрироваться на изучении только ключевых взаимодействий.
-
Поиск взаимодействующих цепей и лигандов:
- Для каждого лиганда проверяем, находится ли он в пределах заданного расстояния (4.5 Å) от белковых атомов. Если лигандные атомы находятся достаточно близко к атомам белка, эти цепи включаются в текущий комплекс, в то время как остальные цепи исключаются. Таким образом, в финальный комплекс включаются только белковые цепи, которые действительно взаимодействуют с лигандом.
-
Группировка лигандов:
- Лиганды, находящиеся на расстоянии менее 4 Å друг от друга, объединяются в одну группу, формируя единый функциональный сайт. Это позволяет корректно сохранить функциональные группы лигандов, которые взаимодействуют с белком как единое целое.
-
Фильтрация схожих структур:
- Для каждой группы белок-лиганд вычисляется значение RMSD и идентичность последовательностей белка. Если идентичность более 98% и RMSD менее 2 Å, структура считается схожей с одной из ранее сохранённых и исключается, оставляя только уникальные комплексы.
-
Сохранение разделённых комплексов:
- Каждый уникальный белок-лиганд комплекс сохраняется как отдельный PDB-файл, с информацией о взаимодействующих цепях и лигандах.
Результат: Получается набор уникальных белок-лиганд комплексов, содержащих только взаимодействующие цепи и лигандные группы. Исключение неактивных цепей и схожих структур позволяет сосредоточиться на уникальных и значимых взаимодействиях для дальнейшего анализа.
- На этом этапе упрощаются названия файлов, чтобы стандартизировать их формат. Если название файла следует шаблону вида
pdbXXXX.pdb
, оно переименовывается в более компактный форматXXXX.pdb
, где XXXX — идентификатор структуры.
- Создание базы данных Foldseek: Создается база данных для PDB-файлов, оптимизированная для поиска дубликатов.
- Поиск идентичных структур: Foldseek выполняет сравнение структур по порогам TM-score (0.5) и идентичности последовательностей (0.9).
- Формирование групп идентичных структур: Идентичные структуры объединяются в группы.
- Сохранение результатов: Группы дубликатов сохраняются в JSON для дальнейшей фильтрации.
- Определение наилучшей структуры в каждой группе: Выбирается структура с наилучшим разрешением.
- Сортировка и отбор структур: Группы сортируются, исключаются вложенные группы.
- Выбор структуры по разрешению: В каждой группе сохраняется структура с лучшим разрешением; если оно не указано, берется первая структура.
- Удаление схожих структур: Удаляются все файлы, не вошедшие в финальный набор уникальных структур.
- Удаление поверхностных лигандов: оценка погружённости Чтобы оценить, насколько лиганд погружен в белок и участвует в значимых взаимодействиях, для каждого атома лиганда вычисляется минимальное расстояние до ближайшего атома белка. Если достаточная доля атомов лиганда (например, 30%) находится на расстоянии менее 5 Å, лиганд считается погруженным. Иначе лиганд определяется как поверхностный и удаляется.
- Если струтуры накладываются друг на друга, удаляем. Клэш - это когда между структурами меньше 0.5 ангстрем
- Добавляем атомы водорода к лигандам через obabel
- Создаем JSON файл с данными об удаленных на каждом этапе файлах для дальнейшего анализа.
- Отправляем уведомление об успешном завершении обработки и всех этапов пайплайна.