Перейти к содержимому
AUTHORВЫПУСК №008 → АВТОМАТИЗАЦИЯ АГЕНТАМИ: 90% НЕ ПРОМПТ / имейте совесть, когда будете делиться или копировать
>AISTUDY_

Модуль s.4 · Урок 3

Урок 3: Доменные пайплайны

25 мин
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 → PyDESeq2Scanpy, PyDESeq2, формат h5ad
Хемоинформатикаdrug discovery: ChEMBL → RDKit → DiffDockChEMBL, 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

Хемоинформатический пайплайн для скрининга кандидатов: от известных активных молекул к предсказанию связывания с мишенью.

  1. ChEMBL. Агент тянет активные молекулы по мишени из базы ChEMBL — структуры в формате SMILES плюс данные активности.
  2. RDKit. Считает молекулярные дескрипторы и фильтрует кандидатов по drug-likeness, строит фингерпринты для поиска похожих.
  3. DiffDock. Предсказывает позу связывания кандидата с белком-мишенью (докинг).
  4. Приёмка. Лучшие позы — это предсказания модели, а не подтверждённое связывание. Дальше нужен эксперимент.
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.

Скачать урок

Есть идея или нашли ошибку?

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.