Skip to content

gulldan/datacon2025hack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧬 DYRK1A Virtual Screening Pipeline

Решение команды "Квадрицепс" хакатона DataCon 2025
Виртуальный скрининг ингибиторов киназы DYRK1A для терапии болезни Альцгеймера

Python License Platform

📋 Содержание

🎯 О проекте

Данный проект представляет собой комплексный pipeline для виртуального скрининга потенциальных ингибиторов киназы DYRK1A - перспективной мишени для терапии болезни Альцгеймера.

🎯 Выбор мишени

После детального анализа шести потенциальных мишеней (Aβ, Tau, TREM2, GSK-3β, DYRK1A, Fyn) была выбрана киназа DYRK1A как оптимальная мишень по следующим критериям:

  • Научная актуальность: DYRK1A участвует в патогенезе БА через фосфорилирование тау-белка и образование Aβ
  • Данные по лигандам: Известны десятки ингибиторов с IC₅₀ в нМ диапазоне
  • Структурная информация: Решены кристаллографические структуры с лигандами
  • Пригодность для in silico дизайна: Классический ATP-связывающий карман
  • Лекарственная перспективность: Селективные ингибиторы уже показали эффективность в доклинических тестах

🎯 Цели проекта

  1. Сбор и анализ данных по активности соединений против DYRK1A
  2. Разработка QSAR моделей для предсказания активности
  3. Генерация новых молекул с использованием современных ML подходов
  4. Виртуальный скрининг с молекулярным докингом
  5. Отбор перспективных кандидатов с оценкой дезирабельности

🔬 Методология

📊 Step 1: Анализ мишеней

  • Сравнительный анализ 6 потенциальных мишеней БА
  • Оценка по 5 критериям: патогенетическая значимость, данные по лигандам, структурная информация, пригодность для in silico дизайна, лекарственная перспективность
  • Выбор DYRK1A как оптимальной мишени
  • 📖 Подробное исследование: research.md - детальный анализ выбора мишени с научным обоснованием

🧪 Step 2: Сбор данных и QSAR моделирование

  • Сбор данных: Извлечение данных по активности соединений из ChEMBL
  • Расчет дескрипторов: Мордред, PaDEL, RDKit дескрипторы
  • Feature selection: Отбор наиболее информативных признаков
  • Моделирование:
    • Scaffold split для химически корректной валидации
    • XGBoost с GPU ускорением
    • Optuna для гиперпараметрической оптимизации

🧬 Step 3: Генерация молекул

  • VAE модели: SELFIES и Transformer VAE
  • Fine-tuning: DPO и RLHF для улучшения качества
  • Docking-guided generation: Генерация с учетом докинга
  • Валидация: Проверка химической корректности и уникальности

🔬 Экспериментальные подходы: В процессе разработки были опробованы различные методы генерации молекул:

  • VAE модели: SELFIES VAE, Transformer VAE - показали низкую валидность сгенерированных структур
  • Fine-tuning: DPO (Direct Preference Optimization) и RLHF (Reinforcement Learning from Human Feedback) - сложность в настройке и нестабильность обучения
  • Docking-guided generation: Попытки генерации с учетом docking scores - технические сложности интеграции

✅ Финальный подход: Остановились на fine-tuning предобученной модели (entropy/gpt2_zinc_87m) на 3 эпохи, так как:

  • Loss стабильно падал с 2.71 → 0.66 → 0.32
  • Дальнейшее обучение могло привести к переобучению
  • Достигнута валидность 981 молекулы из 1000 сгенерированных

🎯 Step 4: Виртуальный скрининг

  • Подготовка белка: Очистка и подготовка структуры DYRK1A
  • Подготовка лигандов: Конвертация в PDBQT формат
  • GPU-ускоренный докинг: AutoDock Vina с CUDA
  • Ранжирование: Композитный скор с учетом активности, липидофильности, токсичности

🏗️ Архитектура

datacon2025hack/ ├── step_01_target_selection/ # Анализ и выбор мишени ├── step_02_activity_prediction/ # QSAR моделирование ├── step_03_molecule_generation/ # Генерация молекул ├── step_04_hit_selection/ # Виртуальный скрининг ├── data/ # Данные и результаты ├── utils/ # Утилиты └── config.py # Конфигурация 

🛠️ Технологический стек

  • Data Processing: polars, polars-ds, numpy
  • Chemistry: rdkit, mordred, padelpy
  • Machine Learning: scikit-learn, xgboost, lightgbm
  • Deep Learning: torch, torch-geometric, transformers
  • Molecular Docking: AutoDock Vina, OpenBabel
  • Visualization: plotly, matplotlib, seaborn
  • Optimization: optuna
  • Development: uv, ruff, loguru

⚙️ Установка

Предварительные требования

  1. Python 3.13+

  2. uv (менеджер пакетов):

    # macOS brew install astral-sh/astral/uv # Linux curl -Ls https://astral.sh/uv/install.sh | bash # Arch Linux paru -S openbabel autodock-vina
  3. OpenBabel и AutoDock Vina:

    # Ubuntu/Debian sudo apt-get install openbabel autodock-vina # macOS brew install open-babel autodock-vina # Arch Linux sudo pacman -S openbabel autodock-vina

Установка проекта

# Клонирование репозитория git clone https://github.com/gulldan/datacon2025hack.git cd datacon2025hack # Установка зависимостей uv sync # Активация виртуального окружения source .venv/bin/activate

🚀 Быстрый старт

Запуск полного pipeline

# Один клик - запуск всего pipeline ./run.sh

Пошаговое выполнение

# Step 1: Анализ мишеней uv run python step_01_target_selection/run_target_analysis.py # Step 2: QSAR моделирование uv run python step_02_activity_prediction/data_collection.py uv run python step_02_activity_prediction/run_descriptor_calc.py uv run python step_02_activity_prediction/train_activity_model_scaffold.py # Step 3: Генерация молекул uv run python step_03_molecule_generation/run_generation.py uv run python step_03_molecule_generation/validate_generated.py # Step 4: Виртуальный скрининг uv run python step_04_hit_selection/run_vina.py uv run python analize_results.py uv run python desirability_ranking.py uv run python draw_molecules.py

📊 Результаты

📈 Ключевые метрики

  • QSAR модель: R² = 0.628, RMSE = 0.718 (scaffold split)
  • Генерация: 981 валидных молекул из 1000 сгенерированных (98.1% валидность)
  • Докинг: 809 соединений успешно проанализировано (5 молекул не удалось подготовить)
  • Время выполнения: ~1 часа на CPU
  • Fine-tuning: 3 эпохи, loss: 2.71 → 0.66 → 0.32

🎯 Drug Discovery Filters Analysis

Lipinski Rule of 5 (814 молекул):

  • MW ≤ 500: 789/814 (96.9%)
  • LogP ≤ 5: 739/814 (90.8%)
  • HBD ≤ 5: 814/814 (100.0%)
  • HBA ≤ 10: 814/814 (100.0%)
  • TPSA ≤ 140: 811/814 (99.6%)
  • 🎯 Все правила Lipinski: 727/814 (89.3%)

CNS Drug Filters (для терапии БА):

  • MW ≤ 450: 729/814 (89.6%)
  • ⚠️ LogP ≤ 3: 387/814 (47.5%)
  • ⚠️ TPSA ≤ 90: 580/814 (71.3%)
  • ⚠️ RotB ≤ 3: 287/814 (35.3%)
  • ⚠️ CNS_MPO ≥ 4: 200/814 (24.6%)
  • 🎯 Все CNS фильтры: 63/814 (7.7%)

Docking Performance:

  • 🎯 Средний docking score: -6.63 kcal/mol
  • 🎯 Лучший docking score: -10.72 kcal/mol
  • 🎯 Соединения с score ≤ -7: 226/814 (27.8%)

📊 Визуализация распределений параметров

🔬 Core Physicochemical Properties

Core Physicochemical Properties

🧠 BBB & CNS Penetration

BBB & CNS Penetration

🏗️ Structure & Drug-likeness

Structure & Drug-likeness

⚡ Binding Efficiency

Binding Efficiency

🧪 ADME & Toxicity

ADME & Toxicity

🎯 CNS-Specific Parameters

CNS-Specific Parameters

🚨 CNS Risk Assessment Heatmap

CNS Risk Assessment

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

Физико-химические / CNS-drug-likeness:

  • MW ≤ 450 Da: 729/814 (89.6%)
  • LogP 1-4: 538/814 (66.1%)
  • ⚠️ TPSA < 70 Ų: 295/814 (36.2%)
  • HBD ≤ 3: 795/814 (97.7%)
  • HBA ≤ 7: 786/814 (96.6%)
  • RotB ≤ 8: 809/814 (99.4%)
  • ⚠️ QED 0.4-0.8: 478/814 (58.7%)
  • ⚠️ CNS_MPO ≥ 4: 200/814 (24.6%)

Барьер кровь-мозг / проницаемость:

  • ⚠️ logBB > -0.3: 427/814 (52.5%)
  • P-gp efflux < 2: 46/814 (5.7%)

Целевая аффинность:

  • Docking score < -8 kcal/mol: 38/814 (4.7%)

ADMET-безопасность:

  • hERG IC₅₀ > 10 µM (hERG < 0.3): 32/814 (3.9%)

Синтетическая реализуемость:

  • SA-score < 5: 814/814 (100.0%)

🎯 Результат: 0/814 (0.0%) молекул проходят все строгие критерии для терапии БА

🖼️ Визуализация результатов

Проект генерирует детальные визуализации:

  • Молекулярные структуры топ-кандидатов
  • Параметрические таблицы с цветовой кодировкой
  • Распределения дескрипторов
  • Анализ docking poses

🎯 Молекулы, максимально близкие к прохождению всех критериев

Молекула Пройдено критериев Не пройденные критерии (значение, порог)
lig_23 10/13 P-gp efflux: 3.11 (>2), Docking: -6.27 (> -8), hERG: 0.49 (<0.3)
lig_77 10/13 P-gp efflux: 2.80 (>2), Docking: -6.72 (> -8), hERG: 0.48 (<0.3)
lig_90 10/13 P-gp efflux: 3.17 (>2), Docking: -6.32 (> -8), hERG: 0.51 (<0.3)
lig_107 10/13 P-gp efflux: 2.78 (>2), Docking: -6.63 (> -8), hERG: 0.45 (<0.3)
lig_109 10/13 P-gp efflux: 3.18 (>2), Docking: -6.37 (> -8), hERG: 0.51 (<0.3)
lig_134 9/13 QED: 0.89 (0.4-0.8), P-gp efflux: 3.12 (>2), Docking: N/A (<-8), hERG: 0.43 (<0.3)
lig_156 9/13 QED: 0.93 (0.4-0.8), P-gp efflux: 2.55 (>2), Docking: N/A (<-8), hERG: 0.37 (<0.3)
lig_351 9/13 QED: 0.93 (0.4-0.8), logBB: -0.32 (> -0.3), P-gp efflux: 2.42 (>2), Docking: N/A (<-8), hERG: 0.35 (<0.3)
lig_519 9/13 QED: 0.86 (0.4-0.8), CNS_MPO: 3.00 (≥4), P-gp efflux: 3.23 (>2), Docking: N/A (<-8), hERG: 0.44 (<0.3)
lig_540 7/13 TPSA: 78.68 (<70), QED: 0.88 (0.4-0.8), CNS_MPO: 2.00 (≥4), logBB: -0.62 (> -0.3), P-gp efflux: 2.37 (>2), Docking: N/A (<-8), hERG: 0.36 (<0.3)

Примечание:

  • P-gp efflux: должно быть <2 (чем меньше, тем лучше проникновение в мозг)
  • Docking: должно быть < -8 (чем меньше, тем выше аффинность)
  • hERG: должно быть <0.3 (чем меньше, тем ниже риск кардиотоксичности)
  • QED: 0.4-0.8 (оптимальный диапазон лекарственной привлекательности)
  • CNS_MPO: ≥4 (оптимально для CNS)
  • TPSA: <70 (оптимально для проникновения через ГЭБ)
  • logBB: > -0.3 (лучше проникновение через ГЭБ)

Вывод: Ни одна молекула не проходит все строгие критерии, но топ-5 молекул проходят 10 из 13 критериев. Основные барьеры — P-gp efflux, docking score и hERG.

🎯 Топ-5 перспективных кандидатов

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

Соединение Composite Score Docking Score LE LLE CNS Score
lig_674 0.207 -6.06 kcal/mol 0.26 5.75 4
lig_155 0.093 -4.99 kcal/mol 0.25 4.44 4
lig_232 0.081 -5.54 kcal/mol 0.25 4.94 3
lig_794 0.066 -5.64 kcal/mol 0.25 4.75 3
lig_601 0.056 -7.02 kcal/mol 0.27 6.17 3

📊 Composite Score - наш композитный скор, учитывающий:

  • Docking score (связывание с мишенью)
  • ADMET свойства (токсичность, метаболизм)
  • CNS-специфичные параметры (проникновение в мозг)
  • Лигандную эффективность (LE, LLE)
  • Химическую привлекательность (QED, SA score)

🖼️ Визуализация топ кандидатов

🏆 Топ-5 молекул по Composite Score

Top 5 Molecules by Composite Score

📋 Детальная таблица параметров топ-5 молекул

Top 5 Molecules Parameters

🎯 Топ-5 молекул, максимально близких к прохождению всех критериев

Top 5 Molecules Closest to All Criteria

📊 Параметры молекул, близких к прохождению всех критериев

Parameters of Molecules Closest to All Criteria

🔧 Использование

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

Основные параметры настраиваются в config.py

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

datacon2025hack/ ├── 📊 step_01_target_selection/ # Анализ мишеней │ ├── run_target_analysis.py │ └── reports/ ├── 🧪 step_02_activity_prediction/ # QSAR моделирование │ ├── data_collection.py # Сбор данных из ChEMBL │ ├── descriptor_calculator.py # Расчет дескрипторов │ ├── feature_selection.py # Отбор признаков │ ├── train_activity_model_*.py # Обучение моделей │ └── results/ # Результаты моделирования ├── 🧬 step_03_molecule_generation/ # Генерация молекул │ ├── run_generation.py # Основной скрипт генерации │ ├── *_generator.py # Различные генераторы (VAE, Transformer) │ ├── *_finetuner.py # Fine-tuning модели (DPO, RLHF) │ ├── validate_generated.py # Валидация молекул │ └── results/ # Сгенерированные молекулы │ │ 📁 **Экспериментальные файлы** (не использовались в финальном pipeline): │ ├── selfies_vae_generator.py # SELFIES VAE генератор │ ├── transformer_vae_generator.py # Transformer VAE │ ├── dpo_finetuner.py # Direct Preference Optimization │ ├── rlhf_finetuner.py # RLHF fine-tuning │ ├── docking_guided_generator.py # Docking-guided generation │ └── optuna_tune_vae.py # Hyperparameter tuning для VAE ├── 🎯 step_04_hit_selection/ # Виртуальный скрининг │ ├── protein_prep.py # Подготовка белка │ ├── ligand_prep.py # Подготовка лигандов │ ├── run_vina.py # Докинг │ ├── accelerated_docking.py # GPU-ускоренный докинг │ ├── docking/ # Файлы докинга │ └── results/ # Результаты скрининга ├── 📁 data/ # Данные │ ├── raw/ # Исходные данные │ ├── processed/ # Обработанные данные │ └── descriptors/ # Молекулярные дескрипторы ├── 🛠️ utils/ # Утилиты │ ├── logger.py # Логирование │ └── get_box_center.py # Расчет центра бокса ├── 📋 config.py # Конфигурация ├── 🚀 run.sh # Скрипт запуска ├── 📊 analize_results.py # Анализ результатов ├── 🎯 desirability_ranking.py # Ранжирование по дезирабельности ├── 🖼️ draw_molecules.py # Визуализация молекул └── 📄 README.md # Документация 

🏆 Команда "Квадрицепс"

DataCon 2025 - Хакатон по drug discovery
Презентация: Google Slides


Создано с ❤️ для продвижения drug discovery с использованием современных ML подходов

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors