Модуль s.4 · Урок 3
Урок 3: Доменные пайплайны
Чему вы научитесь
- Собирать сквозной доменный пайплайн силами агента: от сырых данных до интерпретируемого результата
- Выбирать пайплайн под свою область: single-cell RNA-seq, drug discovery или интерпретация вариантов
- Использовать навыки Scientific Agent Skills для доступа к 100+ научным базам данных и доменным пакетам
- Понимать, что в доменном пайплайне человек проверяет на каждом стыке, а не только в конце
- Применять изоляцию из урока 2 к долгим вычислительным пайплайнам
Что такое доменный пайплайн
В уроке 1 был один датасет и один анализ. Доменный пайплайн — это цепочка шагов, где выход одного инструмента становится входом следующего, а на каждом стыке свои форматы, базы данных и подводные камни.
Здесь и проявляется ценность Scientific Agent Skills: 140 навыков дают агенту доступ к 100+ научным базам данных и доменным пакетам, так что он не пишет пайплайн с нуля, а собирает его из проверенных кирпичей (K-Dense scientific-agent-skills).
Три домена на выбор
| Домен | Пайплайн | Ключевые навыки и базы |
|---|---|---|
| Биоинформатика | single-cell RNA-seq: Scanpy → PyDESeq2 | Scanpy, PyDESeq2, формат h5ad |
| Хемоинформатика | drug discovery: ChEMBL → RDKit → DiffDock | ChEMBL, RDKit, DiffDock |
| Генетика | интерпретация вариантов: VCF → ClinVar | парсинг VCF, база ClinVar |
Все три строятся одинаково: загрузка и контроль качества, доменная обработка, сопоставление с внешней базой, интерпретация. Различаются инструменты, но не логика и не место человека в ней.
Кейс 1: single-cell RNA-seq
Самый частый биоинформатический пайплайн. На входе — матрица «клетки на гены» в формате h5ad, на выходе — список дифференциально экспрессированных генов между условиями.
flowchart LR
A[h5ad: клетки x гены] --> QC[Контроль качества: фильтр клеток и генов]
QC --> N[Нормализация и отбор HVG]
N --> CL[Кластеризация: Scanpy]
CL --> DE[Дифференциальная экспрессия: PyDESeq2]
DE --> R[Список генов + интерпретация]
R --> V{Человек проверяет}
V -- артефакты, батч-эффект --> QC
style A fill:#0891b2,color:#fff,stroke:#0e7490
style V fill:#f59e0b,color:#fff,stroke:#d97706
style R fill:#059669,color:#fff,stroke:#047857
Узкое место — контроль качества: если не отфильтровать мёртвые клетки и дублеты, дальше всё выглядит правдоподобно, но биологически неверно. Поэтому первый шаг агента — показать распределения числа генов на клетку и доли митохондриальных ридов, а не сразу кластеризовать.
import scanpy as sc
adata = sc.read_h5ad("pbmc.h5ad")
print(adata.shape) # клетки x гены, первая проверка
# контроль качества: помечаем митохондриальные гены и считаем метрики
adata.var["mt"] = adata.var_names.str.startswith("MT-")
sc.pp.calculate_qc_metrics(adata, qc_vars=["mt"], inplace=True)
# фильтры порогов задаёт человек, глядя на распределения
adata = adata[adata.obs.n_genes_by_counts < 2500]
adata = adata[adata.obs.pct_counts_mt < 5]
Дифференциальную экспрессию между условиями считают на псевдо-бульк-уровне через PyDESeq2 — это статистически корректнее, чем сравнивать отдельные клетки. Результат, список генов с p-value, — это гипотеза, а не вывод: его проверяют по литературе и, в идеале, отдельным экспериментом.
Кейс 2: drug discovery
Хемоинформатический пайплайн для скрининга кандидатов: от известных активных молекул к предсказанию связывания с мишенью.
- ChEMBL. Агент тянет активные молекулы по мишени из базы ChEMBL — структуры в формате SMILES плюс данные активности.
- RDKit. Считает молекулярные дескрипторы и фильтрует кандидатов по drug-likeness, строит фингерпринты для поиска похожих.
- DiffDock. Предсказывает позу связывания кандидата с белком-мишенью (докинг).
- Приёмка. Лучшие позы — это предсказания модели, а не подтверждённое связывание. Дальше нужен эксперимент.
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski
mol = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)O") # пример: аспирин
mw = Descriptors.MolWt(mol)
logp = Descriptors.MolLogP(mol)
hbd = Lipinski.NumHDonors(mol)
print(round(mw, 1), round(logp, 2), hbd) # масса, липофильность, доноры H
Кейс 3: интерпретация вариантов
Генетический пайплайн: от файла вариантов VCF к клинической аннотации через базу ClinVar.
| Шаг | Что делает агент | Точка приёмки человеком |
|---|---|---|
| Парсинг VCF | Читает варианты, проверяет качество вызовов | Доля отфильтрованных по quality |
| Аннотация по ClinVar | Сопоставляет варианты с известной клинической значимостью | Версия базы и дата выгрузки |
| Приоритизация | Сортирует по значимости и частоте в популяции | Ручная проверка топ-кандидатов |
ClinVar постоянно обновляется, и значимость варианта может смениться с «патогенный» на «неопределённый» и обратно. Поэтому агент обязан зафиксировать версию базы — иначе результат невоспроизводим.
Общий принцип всех трёх
Какой бы домен вы ни выбрали, структура одна: контроль качества на входе, доменная обработка, сверка с внешней базой, интерпретация на выходе. И человек стоит не только в конце, а на каждом стыке.
- На входе — проверить, что данные вообще пригодны: фильтры качества, форма, версии.
- На стыках — проверить, что формат и идентификаторы согласованы между шагами.
- На выходе — помнить, что результат это гипотеза: список генов, поза докинга, аннотация варианта требуют независимой проверки.
Следующий модуль
Модуль S.5: Многоагентные системы и оркестрация — как несколько агентов делят между собой роли planner, research, code и write.