Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Виртуальный скрининг ингибиторов DYRK1A

Пайплайн поиска низкомолекулярных ингибиторов киназы DYRK1A — мишени для терапии болезни Альцгеймера. От выбора мишени и сбора данных ChEMBL до генерации молекул, молекулярного докинга и отбора кандидатов по 13 критериям.

Решение команды «Квадрицепс», хакатон DataCon 2025.

Python License CI


Коротко

Этап Что сделано Результат
1. Выбор мишени 6 кандидатов, оценка по 5 критериям DYRK1A
2. QSAR-модель ChEMBL + Mordred/PaDEL/RDKit, scaffold split, XGBoost + Optuna R² 0.628, RMSE 0.718
3. Генерация перебрано 6 подходов, выбран fine-tuning gpt2_zinc_87m 981 валидная молекула из 1000
4. Докинг и отбор AutoDock Vina на GPU, композитный скор 809 из 814 соединений отдокировано

Пайплайн: 7 стадий от выбора мишени до ранжированных хитов

Главный результат

Ни одна из 814 молекул не проходит все 13 строгих критериев, предъявляемых к препарату для ЦНС. Лучшие кандидаты проходят 10 из 13.

Это отрицательный результат, и он основной. Три барьера, на которых останавливаются даже лучшие молекулы:

Барьер Проходит Почему важно
P-gp efflux < 2 46 из 814 (5.7 %) белок-насос выбрасывает молекулу обратно через гематоэнцефалический барьер
Docking score < −8 ккал/моль 38 из 814 (4.7 %) недостаточная предсказанная аффинность к DYRK1A
hERG < 0.3 32 из 814 (3.9 %) риск кардиотоксичности

Генератор уверенно выдаёт молекулы, похожие на лекарства по общим правилам (89.3 % проходят Lipinski), но целевая аффинность и профиль безопасности остаются узким местом — именно туда имеет смысл направлять следующую итерацию.

Выбор мишени

Из шести кандидатов, обсуждаемых в контексте болезни Альцгеймера — Aβ, тау-белок, TREM2, GSK-3β, DYRK1A, Fyn — выбрана DYRK1A. Критерии отбора и разбор каждого кандидата: research.md.

Коротко, почему DYRK1A:

  • участвует в патогенезе через фосфорилирование тау-белка и образование Aβ;
  • десятки ингибиторов с измеренной активностью в нМ диапазоне (гармин, IC₅₀ ≈ 80 нМ; SM07883, IC₅₀ = 1.6 нМ) — достаточно данных, чтобы обучить QSAR-модель;
  • решены кристаллоструктуры с лигандами (PDB 4YU2, 6T6A, 6S14) — есть куда докировать;
  • отчётливый ATP-связывающий карман: ингибиторы DYRK1A уже находили in silico;
  • экспрессия уже, чем у GSK-3β, — потенциально лучший профиль безопасности, а SM07883 снизил тау-патологию и нейровоспаление в моделях БА при пероральном введении.

QSAR-модель активности

Данные: ChEMBL, мишень CHEMBL2292, значения IC₅₀.

  • Дескрипторы: Mordred, PaDEL и RDKit, затем отбор наиболее информативных признаков.
  • Валидация: scaffold split, а не случайное разбиение. Это принципиально: случайный split завышает метрики, потому что близкие аналоги попадают и в обучение, и в тест. Scaffold split разводит химические серии и показывает, как модель работает на действительно новых каркасах.
  • Модель: XGBoost с GPU-ускорением, гиперпараметры подобраны Optuna.

Результат: R² = 0.628, RMSE = 0.718 на scaffold split.

Генерация молекул

Основная часть работы — перебор подходов. Из шести опробованных пять отвергнуты, и это задокументировано: что именно не сработало, тоже результат.

Подход Статус Почему
SELFIES VAE отвергнут низкая валидность генерируемых структур
Transformer VAE отвергнут то же; обучение нестабильно
DPO (Direct Preference Optimization) отвергнут сложность настройки, нестабильность
RLHF отвергнут то же; остался в репозитории как прототип
Docking-guided generation отвергнут технические сложности интеграции докинга в цикл генерации
Fine-tuning entropy/gpt2_zinc_87m выбран стабильное обучение, высокая валидность

Финальный вариант — дообучение предобученной модели на 3 эпохи. Loss: 2.71 → 0.66 → 0.32. Дальше не обучали, чтобы не переобучиться. Валидность: 981 молекула из 1000.

Код отвергнутых подходов оставлен в step_03_molecule_generation/ намеренно — как след проделанной работы. Эти модули не участвуют в финальном пайплайне, часть из них — незавершённые прототипы (в rlhf_finetuner.py цикл PPO не реализован, стоит заглушка).

Виртуальный скрининг

  • Подготовка белка: очистка структуры DYRK1A, удаление лишних цепей и растворителя.
  • Подготовка лигандов: конвертация в PDBQT, генерация 3D-конформеров.
  • Докинг: AutoDock Vina с GPU-ускорением.
  • Ранжирование: композитный скор по docking score, ADMET-свойствам, CNS-специфичным параметрам и лигандной эффективности (LE, LLE).

До докинга дошли 814 молекул, успешно отдокированы 809, для 5 не удалось подготовить корректную 3D-структуру.

До докинга дошли 814 молекул из 981 валидной. Чем именно отфильтрованы остальные 167, по коду и артефактам репозитория однозначно не восстанавливается — этот шаг не был зафиксирован, и честнее это признать, чем задним числом придумывать объяснение.

Результаты

Счётчики молекул в этом разделе — панели Lipinski и CNS, строгие критерии, распределение docking score — пересчитываются из step_04_hit_selection/results/panels/ligands_descriptors.parquet тестом tests/test_reported_numbers.py и проверяются в CI при каждом push. Метрики, приходящие с других стадий (R² и RMSE модели, 981/1000 при генерации, лоссы дообучения), этим тестом не покрыты.

Правила Lipinski

Выборка: 814 молекул.

Критерий Проходит Доля
MW ≤ 500 789 96.9 %
LogP ≤ 5 739 90.8 %
HBD ≤ 5 814 100 %
HBA ≤ 10 814 100 %
TPSA ≤ 140 811 99.6 %
Все правила 727 89.3 %

Фильтры для препаратов ЦНС

Критерий Проходит Доля
MW ≤ 450 729 89.6 %
LogP ≤ 3 387 47.5 %
TPSA ≤ 90 580 71.3 %
RotB ≤ 3 287 35.3 %
CNS_MPO ≥ 4 200 24.6 %
Все фильтры 63 7.7 %

Докинг

  • Средний score: −6.63 ккал/моль
  • Лучший score: −10.72 ккал/моль
  • Соединений с score ≤ −7: 226 из 814 (27.8 %)

Строгие критерии для терапии болезни Альцгеймера

Тринадцать критериев, объединяющих физхимию, проницаемость через ГЭБ, аффинность, безопасность и синтетическую доступность.

Группа Критерий Проходит
Физхимия / CNS MW ≤ 450 Da 729
LogP 1–4 538
TPSA < 70 Ų 295
HBD ≤ 3 795
HBA ≤ 7 786
RotB ≤ 8 809
QED 0.4–0.8 478
CNS_MPO ≥ 4 200
Проницаемость ГЭБ logBB > −0.3 427
P-gp efflux < 2 46
Аффинность Docking score < −8 38
Безопасность hERG < 0.3 32
Синтез SA-score < 5 814
Все 13 критериев 0

Молекулы, подошедшие ближе всего:

Молекула Пройдено Не пройдено
lig_23 10/13 P-gp 3.11, docking −6.27, hERG 0.49
lig_77 10/13 P-gp 2.80, docking −6.72, hERG 0.48
lig_90 10/13 P-gp 3.17, docking −6.32, hERG 0.51
lig_107 10/13 P-gp 2.78, docking −6.63, hERG 0.45
lig_109 10/13 P-gp 3.18, docking −6.37, hERG 0.51

Молекулы, ближе всего подошедшие к прохождению всех критериев

Параметры этих молекул

Топ-5 по композитному скору

Соединение Composite Docking, ккал/моль LE LLE CNS
lig_674 0.207 −6.06 0.26 5.75 4
lig_155 0.093 −4.99 0.25 4.44 4
lig_232 0.081 −5.54 0.25 4.94 3
lig_794 0.066 −5.64 0.25 4.75 3
lig_601 0.056 −7.02 0.27 6.17 3

Топ-5 молекул по композитному скору

Параметры топ-5 молекул

Распределения дескрипторов

Физико-химические свойства Проницаемость ГЭБ
Структура и drug-likeness Эффективность связывания
ADME и токсичность CNS-специфичные параметры

Карта рисков CNS

Установка и запуск

Нужны Python 3.11+, uv, OpenBabel и AutoDock Vina.

# OpenBabel и AutoDock Vina
sudo apt-get install openbabel autodock-vina    # Debian/Ubuntu
brew install open-babel autodock-vina           # macOS
sudo pacman -S openbabel autodock-vina          # Arch

git clone https://github.com/gulldan/datacon2025hack.git
cd datacon2025hack
uv sync

Запуск пайплайна целиком:

./run.sh

Отдельные стадии:

uv run python step_01_target_selection/run_target_analysis.py
uv run python step_02_activity_prediction/run_prediction_model.py
uv run python step_03_molecule_generation/run_generation.py
uv run python step_04_hit_selection/run_hit_selection.py

Параметры — пути, бокс докинга, пороги фильтров — собраны в config.py.

Воспроизводимость

uv run pytest tests/ -q

29 проверок пересчитывают счётчики из раздела «Результаты» прямо из таблиц с дескрипторами. Если прогон пайплайна изменит числа, тест упадёт, и README придётся обновить тем же коммитом.

Докинг-конформеры лигандов (*.pdbqt) и матрицы дескрипторов не хранятся в git — они пересоздаются стадиями 2 и 4. Подготовленный рецептор step_04_hit_selection/docking/3ANQ_receptor.pdbqt оставлен в репозитории: без него докинг не воспроизвести.

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

datacon2025hack/
├── config.py                       параметры всех стадий
├── run.sh                          запуск пайплайна целиком
├── step_01_target_selection/       выбор мишени, отчёт
├── step_02_activity_prediction/    ChEMBL, дескрипторы, QSAR
├── step_03_molecule_generation/    генерация; прототипы отвергнутых подходов
├── step_04_hit_selection/          подготовка белка и лигандов, докинг, отбор
├── analize_results.py              сводный анализ
├── desirability_ranking.py         композитный скор
├── draw_molecules.py               отрисовка структур
├── utils/                          логирование, расчёт центра бокса
├── docs/diagrams/                  схема пайплайна
└── tests/                          проверка чисел README по данным

Стек

Данные — polars, polars-ds, numpy. Химия — rdkit, mordred, padelpy. ML — scikit-learn, xgboost, lightgbm, optuna. Глубокое обучение — torch, torch-geometric, transformers. Докинг — AutoDock Vina, OpenBabel. Инструменты — uv, ruff, loguru.

Команда

«Квадрицепс», DataCon 2025. Презентация · Разбор выбора мишени

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages