Пайплайн поиска низкомолекулярных ингибиторов киназы DYRK1A — мишени для терапии болезни Альцгеймера. От выбора мишени и сбора данных ChEMBL до генерации молекул, молекулярного докинга и отбора кандидатов по 13 критериям.
Решение команды «Квадрицепс», хакатон DataCon 2025.
| Этап | Что сделано | Результат |
|---|---|---|
| 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 соединений отдокировано |
Ни одна из 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 снизил тау-патологию и нейровоспаление в моделях БА при пероральном введении.
Данные: 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 при генерации, лоссы дообучения), этим тестом не покрыты.
Выборка: 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 |
| Соединение | 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 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Нужны 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/ -q29 проверок пересчитывают счётчики из раздела «Результаты» прямо из таблиц с дескрипторами. Если прогон пайплайна изменит числа, тест упадёт, и 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. Презентация · Разбор выбора мишени











