/LPCE

The LPCE project is designed to purify and process PDB structures to extract and filter ligands and remove unwanted components such as water molecules and junk ligands.

Primary LanguageJupyter Notebook

LPCE: Ligand Processing and Cleaning Engine

Проект LPCE предназначен для очистки и обработки структур PDB с целью извлечения и фильтрации лигандов, а также удаления ненужных компонентов, таких как молекулы воды и мусорные лиганды.

Структура проекта

├── README.md             <- Основной README-файл для разработчиков.
│
├── data                  <- Дополнительные данные.
│   ├── grouped_complexes.json          <- Группированные по цепям комплексы лигандов.
│   ├── site_info.json                  <- Информация о сайтах связывания лигандов.
│   ├── removed_ligands_summary.json    <- Сводка по удаленным лигандам.
│   ├── removed_files.json              <- Сводка по удаленным комплексам.
│   ├── trash_ligands.json              <- Список мусорных лигандов для удаления.
│   └── trash_ligands_mini.json         <- Сокращенный список мусорных лигандов для тестов.
│
├── lpce                  <- Исходный код проекта.
│   ├── cleanup           <- Скрипты для очистки PDB-файлов от ненужных компонентов.
│   │   ├── __init__.py
│   │   ├── filter_ligands.py           <- Скрипт для фильтрации лигандов.
│   │   ├── remove_dna_rna.py           <- Скрипт для удаления ДНК и РНК из PDB-файлов.
│   │   ├── remove_empty_structures.py  <- Скрипт для удаления пустых структур.
│   │   ├── remove_junk_ligands.py      <- Скрипт для удаления мусорных лигандов из PDB-файлов.
│   │   ├── remove_multiple_models.py   <- Скрипт для удаления моделей с несколькими конфигурациями.
│   │   ├── remove_water.c              <- Программа на C для удаления молекул воды.
│   │   └── remove_water.py             <- Python-обертка для удаления молекул воды.
│   │
│   ├── config            <- Настройки и конфигурации проекта.
│   │   ├── config.yaml                 <- Основной файл конфигурации.
│   │   └── config_trash_mini.yaml      <- Альтернативный конфиг для мини-набора данных.
│   │
│   ├── extraction        <- Скрипты для извлечения PDB-файлов и данных лигандов.
│   │   ├── __init__.py
│   │   ├── convert_pdb_to_smiles_sdf.py <- Конвертирует PDB в SMILES и SDF форматы.
│   │   ├── decompress_files.py          <- Распаковывает PDB-файлы.
│   │   ├── extract_complexes.py         <- Извлекает комплексы из PDB-файлов.
│   │   └── parse_dict.py                <- Создает словари и структурирует данные.
│   │
│   ├── pdb_manipulations <- Скрипты для манипуляции с PDB-файлами.
│   │   ├── __init__.py
│   │   ├── add_h_to_ligands.py         <- Добавляет атомы водорода к лигандам.
│   │   ├── foldseek.py                 <- Ищет дубликаты структур с помощью Foldseek.
│   │   ├── protein_ligand_separator.py <- Разделяет белки и лиганды в PDB-файлах.
│   │   ├── remove_not_buried_ligands.py <- Удаляет лиганды, не погруженные в белок.
│   │   ├── remove_similar_structures.py <- Удаляет похожие структуры.
│   │   └── split_bioml.py              <- Разделяет биологические сборки в PDB-файлах.
│   │
│   ├── tests             <- Тесты для проверки функциональности проекта.
│   │   ├── conftest.py                  <- Конфигурационный файл для pytest.
│   │   └── test_pipeline.py             <- Скрипт для запуска тестового конвейера обработки.
│   │
│   ├── utils             <- Утилиты и вспомогательные функции.
│   │   ├── __init__.py
│   │   ├── calc_descriptors.py         <- Вычисляет химические дескрипторы.
│   │   ├── clean_names.py              <- Очищает имена файлов и директорий.
│   │   ├── sdf2df.py                   <- Конвертирует SDF-файлы в DataFrame.
│   │   ├── send_email.py               <- Отправляет уведомления по электронной почте.
│   │   ├── smi2df.py                   <- Конвертирует SMILES в DataFrame.
│   │   └── utils.py                    <- Общие вспомогательные функции.
│   │
│   └── run_full_pipeline.py             <- Скрипт для запуска полного конвейера обработки.
│
├── notebook              <- Jupyter ноутбуки для анализа и визуализации данных.
│
├── Makefile              <- Скрипты для автоматизации сборки и запуска.
├── environment.yml       <- Описание зависимостей для создания окружения.
├── pyproject.toml        <- Конфигурационный файл проекта.
└── README.md             <- Этот файл.

Описание основных модулей

lpce/pdb_manipulations

  • add_h_to_ligands.py: Добавляет атомы водорода к лигандам с использованием Open Babel.
  • foldseek.py: Использует инструмент Foldseek для поиска дубликатов и схожих структур среди PDB-файлов.
  • protein_ligand_separator.py: Разделяет белки и лиганды в PDB-файлах, выделяя комплексы для дальнейшего анализа.
  • remove_not_buried_ligands.py: Удаляет лиганды, которые не взаимодействуют с белком на заданном уровне (не "погружены" в белок).
  • remove_similar_structures.py: Удаляет похожие структуры на основе последовательности и разрешения, оставляя наиболее качественные.
  • split_bioml.py: Разделяет биологические сборки в PDB-файлах на отдельные единицы для индивидуального анализа.

lpce/tests

  • conftest.py: Конфигурационный файл для pytest, содержит общие фикстуры и настройки тестирования.
  • test_pipeline.py: Скрипт для запуска полного конвейера обработки на тестовых данных, проверяет корректность работы всех модулей.

lpce/utils

  • calc_descriptors.py: Вычисляет химические дескрипторы для лигандов, необходимые для дальнейшего анализа.
  • clean_names.py: Очищает и стандартизирует имена файлов и директорий.
  • sdf2df.py: Преобразует файлы SDF в формат pandas DataFrame для удобства обработки.
  • send_email.py: Отправляет уведомления по электронной почте о статусе выполнения конвейера или возникновении ошибок.
  • smi2df.py: Конвертирует SMILES-формат лигандов в pandas DataFrame.
  • utils.py: Содержит вспомогательные функции, используемые в различных модулях проекта.

lpce/cleanup

  • filter_ligands.py: Фильтрует лиганды по заданным критериям (например, по размеру или составу).
  • remove_dna_rna.py: Удаляет ДНК и РНК из PDB-файлов, оставляя только белки и лиганды.
  • remove_empty_structures.py: Удаляет PDB-файлы, не содержащие необходимых компонентов после очистки.
  • remove_junk_ligands.py: Удаляет нежелательные или "мусорные" лиганды, указанные в списке.
  • remove_multiple_models.py: Удаляет дополнительные модели в PDB-файлах, оставляя только первую модель.
  • remove_water.c: Программа на языке C для эффективного удаления молекул воды из PDB-файлов.
  • remove_water.py: Python-обертка для взаимодействия с remove_water.c.

lpce/extraction

  • convert_pdb_to_smiles_sdf.py: Конвертирует PDB-файлы в форматы SMILES и SDF для химического анализа.
  • decompress_files.py: Распаковывает сжатые PDB-файлы для последующей обработки.
  • extract_complexes.py: Извлекает комплексы белок-лиганд из PDB-файлов.
  • parse_dict.py: Создает словари и структуры данных для удобства доступа к информации о лигандах и комплексах.

notebook

  • ligand_eda.ipynb: Проводит разведочный анализ данных (EDA) по лигандам, визуализирует различные свойства.
  • misato.ipynb: Содержит дополнительные исследования и анализы (детали могут быть специфичными для проекта).
  • pdb_fix.ipynb: Демонстрирует методы исправления и проверки PDB-файлов на ошибки и несоответствия.
  • protein_ligand_separator.ipynb: Визуализирует процесс разделения белков и лигандов из комплексных структур.
  • remove_similar.ipynb: Анализирует и визуализирует процесс удаления похожих структур из набора данных.

Установка

Для работы с проектом LPCE вам необходимо активировать виртуальное окружение. Убедитесь, что файл environment.yml находится в корне проекта, затем выполните следующие шаги:

  1. Установка окружения:

    В терминале выполните команду для создания окружения на основе существующего файла environment.yml:

    conda env create -f environment.yml
  2. Активация окружения:

    После успешного создания окружения активируйте его с помощью команды:

    conda activate lpce

Теперь ваше окружение готово к использованию, и вы можете запускать скрипты проекта, находясь в этом окружении.

Сборка remove_water.c

Если бинарный файл remove_water уже присутствует и совместим с вашей системой, сборка не требуется.

Сборка на новом ПК

Если бинарный файл отсутствует или несовместим:

  1. Перейдите в директорию с remove_water.c:

    cd lpce/cleanup
  2. Скомпилируйте:

    gcc -o remove_water remove_water.c

Это создаст исполняемый файл remove_water для использования в проекте.

Конфигурация

Основные параметры проекта, такие как пути к директориям и переменные окружения, настраиваются в lpce/config/.

Запуск

Полный запуск всех этапов обработки данных

Для запуска полной обработки данных выполните:

make tmux

Этот скрипт выполнит последовательную обработку, очистку и извлечение лигандов, а также отправит уведомление о завершении работы.