- BrainTools - https://www.braintools.ru -

Полный геном за $200 и его анализ в домашних условиях: Just-DNA-Lite, ИИ и пересборка генома. Часть 3

Разбираемся, что делать с результатами полногеномного секвенирования: трактовка с помощью ИИ, полигенные оценки в опенсорсном Just-DNA-Lite и пересборка генома

Разбираемся, что делать с результатами полногеномного секвенирования: трактовка с помощью ИИ, полигенные оценки в опенсорсном Just-DNA-Lite и пересборка генома

В прошлой части [1] я рассказывал о файлах и их форматах, которые я получил после полногеномного секвенирования.

В этой статье поговорим о трактовке результатов секвенирования с помощью ИИ, опенсорсного инструмента Just-DNA-Lite, а также о пересборке генома.

Ленивый способ: просто спросить ИИ

На руках у меня VCF на 215 МБ — список отличий от эталона (как он получается, разбирал в прошлой части). Осталось их прочитать: где болезнь, где признак, а где шум. Первая ленивая мысль — отдать папку с геномом языковой модели: разбери.

Модели нужен инструмент — библиотеки, которыми читают VCF и лезут в базы вариантов. Тут совпало: я как раз ставил Just-DNA-Lite, опенсорсный интерпретатор геномных данных (о нём ниже), а он при установке ставит массу Python-модулей и утилит для своей работы — как раз такое окружение модели и нужно. Ставится клонированием репозитория и одной командой uv:

git clone https://github.com/dna-seq/just-dna-lite
cd just-dna-lite
uv sync

Пара слов про uv — менеджер пакетов и окружений для Python на Rust компания (Astral) [2], который в десятки раз быстрее pip. Команда uv sync за секунды прочитала зависимости, создала виртуальное окружение .venv прямо в папке и сложила туда всё нужное. В Gentoo он в дереве как dev-python/uv; в остальных системах — соответствующий пакет, официальным установщиком Astral или github [3].

Папка с just-dna-lite с локальным окружением .venv и стала средой для эксперимента. Я открыл папку — с .vcf.gz и дал окружение от just-dna-lite двум моделям сразу и попросил разобрать геном, велев использовать готовое окружение и установленные в нём пакеты, чтобы всё было в одном месте. Моделей было две: Gemini 3.1 Pro (high, через IDE Antigravity) и Claude Opus 4.8 (xhigh). Прогнал два генома: свой и геном друга (назову его User1).

Третью, Claude Fable 5, тоже пробовал, но, как выяснилось, для биологии она сейчас бесполезна. Даже если отправить ей запрос из трёх букв — «ДНК», — она переадресует его к Opus.

Обе модели с задачей справились, но по-разному. Opus заметно лучше разобрал геномные данные, и ярче всего они разошлись на синдроме Жильбера [4]. Это доброкачественная особенность: из-за слабого варианта гена UGT1A1 печень хуже перерабатывает билирубин (нейротоксичный продукт распада красных кровяных телец), отсюда его повышение в крови. Диагноз ставят по гомозиготе UGT1A1 *28/*28 — то есть когда слабый вариант *28 стоит на обеих копиях гена, и материнской, и отцовской (был бы только на одной — это гетерозигота, и синдрома нет). У меня гомозигота есть, и Opus её увидел, прочитав нужную вставку в TA-повторе на обеих копиях. Gemini тот же участок принял за норму и написал, что синдрома нет: промахнулся в единственном месте с однозначным диагнозом. Дальше я спрашивал только Opus.

Разошлись не только тут. Opus дал разбор другого уровня: паспорт образца (пайплайн, сборка, глубина, качество файла), сверку со всей базой ClinVar (открытый каталог американского NCBI, Национального центра биотехнологической информации, где по каждому известному варианту записано, патогенный он, безобидный или спорный), фармакогенетику, гаплогруппы по Y- и мт-ДНК — и помог выявить ложную находку. Автоаннотация «нашла» у меня наследственный панкреатит PRSS1 (ген трипсиногена — предшественника пищеварительного фермента поджелудочной), а Opus проверил: оказалось, что это глюк, возникший из-за некачественной привязки ридов (кусочки ДНК, которые оцифровывает секвенатор) к эталонному геному. Некоторые риды сели не на своё место, а на почти одинаковый соседний ген. Gemini выдал намного меньше маркеров (около полутора десятка) и формулировку вроде «вы прирождённый марафонец».

Полные отчёты для сравнения будут далее.

Фрагмент отчёта Gemini — синдром Жильбера пропущен

5. Синдром Жильбера. Ген UGT1A1.

rs8175347 (UGT1A1*28): мутация (удлинение TA-повторов) не обнаружена.

Вывод: риск синдрома Жильбера отсутствует. У вас стандартный генотип [5] (6 TA-повторов), фермент работает в полную силу.

Общее заключение. Генетический профиль по проверенным маркерам выглядит благоприятным. Высокопатогенных мутаций, связанных с раком или сердечно-сосудистыми заболеваниями, не выявлено.

Фрагмент отчёта Opus — тот же участок, диагноз найден

Синдром Жильбера (UGT1A1) — ВЫЯВЛЕН. Генотип UGT1A1 *28/*28 (гомозигота) → генетически соответствует синдрому Жильбера.

Маркер

Генотип

Значение

TA-повтор *28

chr2:233760233 C>CAT, гомозигота (AC=2, DP=32)

A(TA)₇ на обеих копиях → сниженная экспрессия UGT1A1

rs887829 (tag-SNP *28)

T/T (AC=2, DP=47)

надёжный маркер *28/*28, согласуется с прямым вызовом повтора

Проявления — эпизодическая лёгкая желтушность, провоцируется голоданием, обезвоживанием, инфекцией; лечения не требует. Практически важно: *28/*28 повышает токсичность иринотекана (химиотерапия [6]) и влияет на ряд глюкуронидируемых препаратов.

Там же снята ложная тревога: «наследственный панкреатит PRSS1» — артефакт вызова вариантов. В гене стоит сплошной кластер из ~150 гетерозиготных вызовов подряд со сниженным MQ и высоким стренд-байесом: чтения соседних трипсиногеновых генов ложатся на PRSS1. Это ошибка [7] выравнивания, а не заболевание.

Полные отчёты по геному друга (User1) — под спойлерами, можно сравнить разбор Gemini и Opus напрямую. Оговорюсь: это не совсем честный поединок моделей. После того как Gemini напортачил с синдромом Жильбера, большинство вопросов я стал задавать Opus — оттого его отчёты и разрослись. Так что часть разрыва в подробности на моём счету, а не только на счету модели. (На геноме User1 Gemini, к слову, на Жильбере не споткнулся: там случай проще, гетерозигота.)

Полный разбор генома User1 — Gemini

Отчёт по анализу генома: User1

1. Риск деменции (Болезнь Альцгеймера)

Ген APOE (Аполипопротеин E)

  • rs429358: Гетерозиготная мутация (T/C).

  • rs7412: Вариант не обнаружен (генотип C/C – норма).

Вывод: Комбинация rs429358(T/C) и rs7412(C/C) соответствует фенотипу APOE ε3/ε4. Наличие одного аллеля ε4 (гетерозигота) повышает риск развития болезни Альцгеймера с поздним началом примерно в 2–3 раза по сравнению со средним популяционным уровнем. Это не означает стопроцентную вероятность болезни, но указывает на генетическую предрасположенность. Рекомендуется уделять внимание [8] факторам образа жизни, снижающим риск когнитивных нарушений (контроль давления, диета, интеллектуальные и физические нагрузки).

2. Долгожительство

Ген FOXO3 (Фактор транскрипции)

  • rs2802292: Вариант не обнаружен (генотип T/T – норма).

Вывод: Защитный аллель (G), ассоциированный с долгожительством, отсутствует. Вероятность достижения экстремального долголетия (100+ лет) находится на общепопуляционном уровне и будет зависеть от образа жизни и других генов.

3. Риски развития рака

Ген TP53 (Опухолевый супрессор p53)

  • rs1042522: Гетерозиготная мутация (G/C, Pro72Arg).

Вывод: Как и у User0, присутствует широко распространённый вариант белка p53 (Arg72). Он в норме встречается у значительной части населения. Вариант влияет на баланс между клеточным арестом и апоптозом (гибелью клеток) при повреждении ДНК, но сам по себе не является прямым онкомаркером.

Ген BRCA1 (Рак молочной железы и яичников)

  • Патогенных мутаций (например, 185delAG) не обнаружено. Генетический риск по этому маркеру в норме.

4. Хронические заболевания (Диабет и Сердечно-сосудистые)

  • Ген TCF7L2 (rs7903146): Вариант риска сахарного диабета 2 типа не обнаружен (норма).

  • Локус 9p21 (rs1333049): Маркер повышенного риска инфаркта миокарда не обнаружен (норма).

5. Синдром Жильбера

Ген UGT1A1 (Уридиндифосфат-глюкуронилтрансфераза)

  • rs8175347 (UGT1A1*28): Обнаружена гетерозиготная мутация (инсерция дополнительных нуклеотидов, генотип 0/1).

Вывод: Вы являетесь гетерозиготным носителем удлинённого TA-повтора (генотип *1/*28). Сам по себе синдром Жильбера обычно проявляется при гомозиготной мутации (*28/*28). У гетерозиготных носителей фермент работает немного слабее нормы, что может приводить к незначительному и безопасному повышению уровня билирубина во время сильного стресса [9], голодания или болезней, но клинический синдром Жильбера, как правило, не диагностируется.

Общее заключение по геному User1

Главной находкой в генетическом профиле User1 является наличие аллеля APOE ε4, который является значимым фактором риска болезни Альцгеймера. Остальные проанализированные маркеры хронических заболеваний, рака и долгожительства не показывают клинически значимых отклонений от популяционной нормы.

6. Положительные качества, интеллект и физиология

Ген ACTN3 (Ген спринтера/марафонца, rs1815739)

  • Генотип: C/C (гомозигота по «быстрому» аллелю).

  • Смысл: Полная противоположность User0. Ваши мышцы синтезируют максимум белка альфа-актинин-3. Вы — прирождённый «спринтер». У вас отличная взрывная сила, предрасположенность к тяжёлой атлетике, боевым искусствам, спринтерскому бегу. Мышцы сокращаются очень быстро и мощно, но быстрее устают (выносливость прокачивается сложнее).

Ген COMT (Воин или Мыслитель, rs4680)

  • Генотип: G/A (гетерозигота).

  • Смысл: Сбалансированный вариант (как и у User0). Средняя скорость разрушения дофамина. Вы сохраняете хорошие аналитические способности в спокойной обстановке и адекватно реагируете на стресс [10], не впадая в панику.

Ген BDNF (Память [11] и обучаемость, rs6265)

  • Генотип: G/G (Val/Val).

  • Смысл: Самый благоприятный вариант. Способствует высокой пластичности мозга [12], отличной эпизодической памяти и устойчивости к нейродегенеративным процессам (что особенно важно на фоне наличия APOE ε4!).

Ген FTO (Обмен веществ, rs9939609)

  • Генотип: T/A. Умеренная склонность к набору веса (один аллель риска). Требует стандартного контроля за питанием.

Полный разбор генома User1 — Opus

Геномный отчёт — User1

Независимый анализ. Составлен заново из исходного VCF (не использует готовые отчёты из data/output). Источник: M8UBMVNLH.hard-filtered.vcf.gz. Не является медицинским диагнозом. Исследовательско-образовательная интерпретация; действенные находки подтверждать в аккредитованной лаборатории и с врачом-генетиком.

Паспорт образца

Параметр

Значение

Идентификатор

M8UBMVNLH

Сборка генома

GRCh38 / hg38 (alt-masked + граф 32 популяций)

Пайплайн

Illumina DRAGEN 4.2.4 (2024), ML-рекалибровка вариантов

Аннотация dbSNP

build 156

Генетический пол

Мужской (XY) — заявлен в заголовке (referenceSexKaryotype=XY)

Всего вариантов

4 833 398 (SNV 3 893 565 + indel 939 833)

Средняя глубина

~44×

Ts/Tv

1.995

Фильтрация качества

применена (99.7% PASS; 15 915 отсеяно)

Методология анализа — та же, что для User0: панель ~80 rsID + полногеномный скрин по ClinVar 2026-06-27 + LongevityMap. Отсутствие записи трактуется как гомозигота по референсу при достаточном покрытии.


TL;DR — главное

  • 🔴 Деменция / сердечно-сосудистое: APOE ε3/ε4. Одна копия ε4 → повышенный риск позднего Альцгеймера (примерно ×2.5–3 относительно ε3/ε3) и более высокий ЛПНП/сердечно-сосудистый риск. Это самая значимая практическая находка и главный повод для профилактики.

  • 🔴 Фармакогенетика: CYP2D6 — «слабый метаболизатор» (вероятно *4/*4). Затрагивает кодеин/трамадол (не работают как анальгетики), тамоксифен, многие антидепрессанты/нейролептики, метопролол.

  • 🟢 Наследственный рак: высокопенетрантных мутаций НЕ найдено (BRCA1/2, Линч, TP53, и др. — чисто). Носитель синдрома Вернера (WRN) — только для планирования семьи.

  • 🟢 Тромбофилия, гемохроматоз — не выявлены.

  • 🟡 Варфарин: гомозигота VKORC1 → высокая чувствительность, нужна низкая доза.


Деменция и когнитивное здоровье — приоритетный раздел

Ген

Вариант

Генотип

Значение

APOE

rs429358 / rs7412

ε3/ε4

одна копия ε4 — ведущий общий генетический фактор риска болезни Альцгеймера

TOMM40

rs2075650

G/G

усиливает сигнал ε4 (в сцеплении с APOE-локусом)

NECTIN2

rs6857

T/T

то же (APOE-регион)

PSEN1/PSEN2/APP

ClinVar-скрин

чисто

мутаций раннего (семейного) Альцгеймера нет

Интерпретация. ε4-гетерозигота повышает пожизненный риск позднего Альцгеймера (ориентировочно до ~20–30% против ~10–15% в среднем; зависит от пола, возраста, сосудистого статуса). Это риск, а не приговор — примерно половина носителей ε4 не заболевает, и модифицируемые факторы (давление, липиды, сахар, физактивность, сон [13], слух [14]) реально сдвигают вероятность. Практический смысл: держать сердечно-сосудистые факторы под контролем и обсудить с врачом стратегию наблюдения. ε4 также повышает ЛПНП — см. кардиораздел.

Онкологические риски

Полногеномный скрин ClinVar не выявил высокопенетрантных наследственных онкогенных мутаций (BRCA1/2, синдром Линча, TP53/Ли-Фраумени, CHEK2, HOXB13 — без патогенных вариантов).

  • ATM rs1801516 (D1853N), гетерозигота — это распространённый полиморфизм, обычно расценивается как доброкачественный/слабого эффекта; не путать с патогенными LoF-вариантами ATM.

  • CDKN2B / локус 9p21 (rs1063192) — распространённый GWAS-локус (сердце/некоторые опухоли), не моногенный.

PRS распространённых раков не считался; возрастные скрининги актуальны как для всех.

Хронические и кардиометаболические

Сердечно-сосудистая тема заслуживает внимания — несколько факторов складываются в одном направлении:

Тема

Маркер

Генотип

Интерпретация

Липиды

APOE ε4

тенденция к более высокому ЛПНП, выше риск ИБС

Эндотелий/давление

NOS3 Glu298Asp rs1799983

гомозигота

распространённый вариант, слабо связан с эндотелиальной функцией/АД

Триглицериды

APOA5 rs662799

A/A (частый)

рисковый аллель не несёт

Ожирение

FTO rs9939609

T/A (1 копия)

лёгкая предрасположенность к набору веса

Тромбофилия

F5 Leiden, F2 G20210A

норма

низкий риск

Гемохроматоз

HFE C282Y/H63D

норма

низкий риск

Диабет 2 типа

TCF7L2 rs7903146

норма

нет главного рискового аллеля

Фолат/гомоцистеин

MTHFR 677 C/T, 1298 A/A

1 копия 677T

лёгкое снижение активности фермента

Дегенерация макулы

CFH Y402H rs1061170

C/T

умеренно повышенный риск AMD

Лактоза

MCM6 rs4988235

G/A

лактазная персистентность — молоко переносится

Свод по сердцу: ε4 + кардио-модификаторы → разумно контролировать липидный профиль и АД, не курить, поддерживать активность. Это же снижает и риск, связанный с ε4, по деменции.

Синдром Жильбера (UGT1A1) — носитель, не болезнь

Генотип: UGT1A1 *1/*28 (гетерозигота) → синдрома Жильбера НЕТ.

Маркер

Генотип

Значение

TA-повтор *28

chr2:233760233 C>CATгетерозигота (AC=1, DP=44)

одна копия *28

rs887829 (tag-SNP *28)

C/T (AC=1, DP=38)

согласуется с *1/*28

Для клинического синдрома Жильбера нужна гомозигота *28/*28 (или компаунд-гетерозигота с *6). У User1 — один аллель *28: билирубин обычно в норме, возможно очень лёгкое повышение при голодании/болезни, но это не синдром. Значимо для планирования семьи: при партнёре-носителе *28 — 25% вероятность *28/*28 (и, соответственно, синдрома Жильбера) у ребёнка.

Носительство (рецессивное)

  • WRN (delAC, 2★, гетерозигота) — носитель варианта синдрома Вернера (взрослая прогерия, аутосомно-рецессивно). Гетерозигота = носитель без болезни; значимо только при партнёре-носителе WRN.

  • UPB1 (2★, гетерозигота) — носительство дефицита бета-уреидопропионазы (рецессивно, как правило, доброкачественно).

  • IL10, VDR, CCL5, XG — распространённые полиморфизмы/группа крови, малозначимы.

Фармакогенетика (практически важное)

Ген / фенотип

Генотип

Клиническое следствие

CYP2D6

слабый метаболизатор, вероятно *4/*4 (rs3892097 T/T + rs1065852 A/A)

кодеин/трамадол не дают анальгезии (не активируются в морфин); тамоксифен — снижена активация; осторожно с дозами многих антидепрессантов/нейролептиков, метопролола

VKORC1

rs9923231 T/T (гомозигота)

высокая чувствительность к варфарину → низкая стартовая доза

SLCO1B1

rs4149056 T/C (*1/*5)

промежуточный риск миопатии на статинах (особенно симвастатин)

CYP2C19

норма (*1/*1)

клопидогрел/ИПП — стандартно (в отличие от User0)

CYP1A2

rs762551 A/A

быстрый метаболизм кофеина

CYP3A5

*3/*3 (rs776746)

непрезентёр — важно для дозы такролимуса

⚠️ CYP2D6 — сложный локус (делеции/дупликации, множество аллелей). Гомозигота *4 по rs3892097 указывает на «слабого метаболизатора», но окончательный статус даёт специализированный star-allele-каллер (DRAGEN его запускал — стоит взять этот отдельный вывод, если он есть, для подтверждения и учёта копийности).

Долгожительство

Профиль смешанный: сильные благоприятные факторы гасятся неблагоприятным APOE ε4.

Маркер

Генотип

Направление

FOXO3 (rs2802292)

G/G

🟢 сильно благоприятно, 2 копии (вес +0.95)

CETP (rs5882)

G/A

🟢 умеренно благоприятно

APOE ε4 (rs429358)

T/C

🔴 неблагоприятно (вес −0.5) — доминирующий фактор

Итог: нейтрально-смешанный уклон. Отличный FOXO3, но ε4 — весомый противовес. Практически: у User1 именно образ жизни (сердечно-сосудистая профилактика) даёт наибольший рычаг.

Признаки

  • ACTN3 rs1815739: рискового «стоп»-аллеля нет (R/R) → есть α-актинин-3, профиль скорее «сила/спринт» (в отличие от User0).

  • ABCC11 rs17822931 (ушная сера/запах тела), TAS2R38, COMT Val/Met — обычная вариативность.


Почему геном User1 технически качественнее (ответ на вопрос)

Речь именно о техническом качестве данных, а не о «здоровье» — по здоровью, наоборот, у User1 профиль настороженнее (ε4). Файл User1 надёжнее по совокупности причин:

1. Поколение вариант-каллера. DRAGEN 4.2.4 (2024) против GATK HaplotypeCaller 3.8 у User0. GATK 3.8 — легаси-линейка 2017 года; стандартом с 2018-го стал GATK4, а аппаратный DRAGEN сегодня — референс индустрии. DRAGEN добавляет ML-рекалибровку генотипов и апостериорные вероятности (поля GP/SQ), а не только эвристические фильтры.

2. Референс с ALT-контигами и графом. User1 выровнен на hg38 alt-masked + граф 32 популяций — это корректно разводит паралоги, сегментные дупликации, регион MHC/HLA. User0 — на референсе без ALT (no_alt + decoy), где паралогичные гены «схлопываются» и порождают мисмаппинг.

3. Прямое доказательство — ген PRSS1. В одном и том же участке (chr7:142.75 Мб):

  • User0: ~150 гетерозиготных вызовов подряд, MQ 55–58, высокий стренд-байес (FS 8–23) — сигнатура мисмаппинга трипсиногенового кластера. Из-за этого автоаннотатор ложно «находит» наследственный панкреатит.

  • User1: 7 чистых PASS-вызовов — нормальная картина. Это буквально видно в данных и лучше любых общих слов иллюстрирует разницу.

4. Применённый контроль качества. У User1 проведена фильтрация: 99.7% записей PASS, 15 915 низкокачественных помечены и отсеяны, плюс проверка кросс-контаминации. У User0 поле FILTER = . у всех вариантов — фильтрация фактически не применялась, ложноположительные остаются в наборе.

5. Глубина покрытия. ~44× против ~37× — увереннее генотипы, лучше чувствительность в трудных участках.

6. Ts/Tv. 1.995 против 1.970 (ожидаемое полногеномное ~2.0–2.1) — набор SNV немного чище (меньше случайных ложных трансверсий). Косвенно это же видно по «шуму» на половых хромосомах: у User0 больше гетерозигот chrX и вдвое больше вызовов chrY.

7. Специализированные каллеры. DRAGEN дополнительно отработал CNV, SV, повторные экспансии (STR), SMN1/2, CYP2D6, CYP2B6, GBA, HLA (класс I+II), CYP21A2, HBA, LPA — клинически более полный набор (эти результаты лежат в отдельных выходных файлах, не в этом VCF).

⚠️ Одна ловушка при чтении файла User1: «сырой» QUAL у него низкий (44–72) и MQ показывается как 250 — это особенность шкалы DRAGEN (он опирается на ML-рекалибровку и апостериорные вероятности генотипа GP), а не признак плохого качества. Не сравнивать QUAL напрямую с GATK-файлом User0, где шкала другая (QUAL в сотнях, MQ до 60).

Митохондриальная ДНК (материнская линия)

Гаплогруппа: T1a1 — формальная классификация (haplogrep3 3.3.2, PhyloTree 17, качество 0.98) по гомоплазменным PASS-вариантам chrM.

  • Основа T-ветви на месте (4216, 11251, 15452, 16126 — JT; 1888, 4917, 10463, 13368, 14905, 15928, 16294 — T); инструмент уточняет ветвь до T1a1 (в т.ч. 12633A, 16163, 16186, 16189). (Моя предварительная ручная оценка «T2» была неточной — формальный разбор по PhyloTree даёт T1a1.)

  • Патогенных митохондриальных мутаций НЕ выявлено (LHON 11778/3460/14484, MELAS 3243, MERRF 8344, NARP 8993, тугоухость 1555 — отсутствуют).

  • DRAGEN дополнительно выдал ~24 низкокачественных вызова (0/1, преимущественно A>C/T>G с фильтром base_quality) — это артефакты секвенирования, а не реальная гетероплазмия (корректно отфильтрованы, не PASS). Гомоплазменный «каркас» T2 надёжен.

  • Контекст: T2 — распространённая европейская/ближневосточная материнская линия (~10% европейцев).

  • Материнская линия отличается от User0 (у него K1c1) → по матери они неродственны.

Y-хромосома (отцовская линия)

Гаплогруппа: R1a, скандинавская ветвь Z284, терминал R-YP1187 (yleaf 4.1.4; ISOGG: R1a1a1b1a3a / S221, 193 маркера; YFull: R-Z282→Z289→Z284→…→R-YP1187, 332 маркера; QC-score 1.0).

  • R1a — массовая евразийская отцовская линия, связанная с бронзовым веком степи (ямная → шнуровая керамика → синташта) и распространением индоевропейских языков. Делится на европейскую (Z282) и азиатскую (Z93) ветви; у User1 — европейская Z282.

  • Ключевое уточнение (углублённый разбор по YFull): внутри европейской R1a это не восточнославянская Z280 и не западнославянская M458, а скандинавская ветвь Z284 («норманнская/викингская»): пик в Норвегии (~20–25% мужчин), распространена в Швеции и по путям расселения норманнов (Британские острова, Исландия).

  • В контексте Восточной Европы скандинавская R1a-Z284 хорошо согласуется с исторической варяжской (Русь) линией — норманнами, участвовавшими в формировании ранней Руси.

  • Отличается от User0 (у него уральская N-P43) → по отцовской линии они неродственны.

Ограничения

  • Проанализированы только SNV и короткие indel. НЕ оценены: CNV, SV, экспансии повторов, митохондрия, структурные аллели CYP2D6, HLA-типирование (для User1 эти данные считались DRAGEN отдельно — их стоит поднять из соответствующих файлов).

  • Полигенные баллы (PRS) не считались.

  • Сопоставление с ClinVar — по точному совпадению аллеля; часть indel с иной нормализацией могла быть пропущена.

  • Это не клинический тест. Действенные находки (ε4, CYP2D6) подтверждать в аккредитованной лаборатории.

Впечатления [15] смешанные. Отчёты Opus уже очень полезны: подробно, по делу, с проверкой сомнительных находок — и это при том, что специально под геномику его не затачивали, он просто воспользовался стеком, установленным вместе с Just-DNA-Lite. Для быстрого «что там у меня» — отличная вещь. Но на одну модель нельзя опираться. Большая языковая модель по своей природе галлюцинирует и может уверенно пороть чушь (как Gemini на Жильбере), а для околомедицинских тем, где цена ошибки высока, это ненадёжно. Вдобавок воспроизводимость не гарантирована, перцентилей и полигенных оценок она не даёт — только точечные попадания. Специализированный инструмент всё равно надёжнее: он считает по правилам и повторяемо.

Одним из немногих опенсорсных продуктов является Just-DNA-Lite.

Эволюция инструмента Just-DNA-Seq

Открытого и бесплатного юзерского инструмента для полного генома долго не было. На слуху — платные онлайн-сервисы. Классический пример — Promethease [16]: туда загружают файл — он берёт и микрочипы 23andMe, и полноценный VCF, — на выходе длинный список того, что про найденные варианты писали в базе (SNPedia)[https://www.snpedia.com/ [17]] — это такая вики про гены. Сервис закрытый и платный (несколько отчётов, каждый ~$25 за ~10 минут). А юзерского инструмента, который считал бы локально по полногеномному VCF полигенные оценки не было. Есть утилиты командной строки для исследователей (тот же PLINK2), но это не «юзер-фриендли».

Я знаком с основателем и поэтому быстро узнал о проекте Just-DNA-Seq [18], открытой платформе для персональной геномики. Сначала он появился как онлайн-сервис: у проекта был свой сайт, куда пользователи загружали геном и получали отчёт — долголетие, полигенные оценки, фармакогенетика; весь код открыт. Но это направление пришлось прикрыть, чтобы не нарваться на юридические проблемы: трактовка чужих геномных данных на сервере упирается в юридическое регулирование — даже 23andMe в 2013-м получила от американского регулятора FDA предписание убрать медицинские отчёты и почти два года отдавала клиентам только происхождение и сырые данные. А чтобы прогнать свой геном, приходилось поднимать всю платформу самому, хотя бы локально, — и потом ждать: один разбор генома на движке OakVar занимал 4–8 часов. Геномный сервис-сайт в таких условиях не развить. Первую версию, к слову, в 2022-м профинансировали грантом через Gitcoin — крипто-краудфандинг по «квадратичной» схеме (важнее число жертвователей, чем размер взносов), популярный в среде исследователей долголетия. Команда свои задачи выполнила, отработала финансирование, но как самостоятельный онлайн-проект Just-DNA-Seq сейчас неактивен.

Поэтому его переписали с нуля и переделали под локальный запуск — это и есть Just-DNA-Lite [19]. По сути, это тот же веб-сайт, только поднимается он локально; онлайн-разбора своего генома больше нет, данные никуда не отправляются. Было удобно, что ничего не нужно ставить и настраивать; теперь удобство другое — скорость. Да и развернуть локальную версию по силам почти любому, хоть силами того же ИИ. Сменили и движок: вместо OakVar — конвейер на Dagster, тяжёлый счёт отдали Polars и DuckDB, данные держат в колоночном Parquet, чтение VCF идёт через polars-bio. Прогон, занимавший часы, укладывается в минуты, а расчёт оценок — в секунды. По готовым отчётам старый Just-DNA-Seq пока немного богаче, но Just-DNA-Lite быстро догоняет — вопрос ближайших дней, максимум месяца.

Напоминаю, вначале:

git clone https://github.com/dna-seq/just-dna-lite
cd just-dna-lite
uv sync

Потом — uv run start в той же папке поднимает сервис на localhost:3000. Веб-морду переписали — был вьюер от OakVar, стал Reflex, интерфейс на чистом Python. На входе — полногеномный или полноэкзомный VCF в координатах GRCh38.

Прогон: от генома до отчёта

Порядок простой. Геном грузим кнопкой Add Sample — свой .vcf.gz; файл появляется ниже, в списке образцов. Жмём New analysis и отмечаем, что считать. По умолчанию включены все девять модулей (набор just-dna-seq/annotators) — для первого прогона проще оставить как есть:

  • Cancer — патогенные варианты в генах предрасположенности к раку (панель ClinVar).

  • Cardio — патогенные варианты в генах болезней сердца (панель ClinVar).

  • Coronary — риск ишемической болезни сердца.

  • Lipid Metabolism — обмен липидов и сосудистые риски.

  • Longevity Map — варианты долголетия из базы LongevityMap.

  • Pathogenic — общий скрин патогенных вариантов по геному (ClinVar).

  • Superhuman — редкие полезные варианты и элитная физиология.

  • Thrombophilia — наследственная склонность к тромбозам (Лейден, протромбин).

  • VO2 Max — максимальное потребление кислорода [20].

Just-DNA-Lite: загрузка генома через Add Sample, выбор образца в списке, вкладка New Analysis и запуск анализа

Just-DNA-Lite: загрузка генома через Add Sample, выбор образца в списке, вкладка New Analysis и запуск анализа

Когда анализ отработал, готовый разбор лежит во вкладке Report — его можно открыть прямо в браузере или скачать.

Just-DNA-Lite: вкладка с готовыми отчётами, кнопки просмотра и скачивания репорта

Just-DNA-Lite: вкладка с готовыми отчётами, кнопки просмотра и скачивания репорта

Как выглядит полный отчёт — вот пример с сайта проекта [21] (на английском): варианты долголетия, генные пути и полигенные оценки, с генами, генотипами, весами и ссылками на исследования. Это развёрнутый эталонный отчёт; Just-DNA-Lite даёт такой же по устройству, но пока менее подробный, и дорастает. Полигенные оценки, кстати, считаются отдельно, во вкладке PRS, — про них подробнее.

Что такое полигенная оценка

Сперва про слово: правильно «полигенная» (много генов), а не «полигеномная». По-английски — polygenic score, отсюда PGS и PRS в интерфейсе и в названии каталога.

За большинством признаков и распространённых болезней не стоит одна сломанная буква. Рост, индекс массы тела, риск диабета второго типа или ишемической болезни складываются из тысяч крохотных вкладов по всему геному: один вариант чуть толкает вверх, другой вниз. Полигенная оценка сворачивает это в число: берут посчитанный на больших выборках список позиций с весами, смотрят, какие из этих вариантов есть у человека, и складывают веса.

Само по себе это число ни о чём не говорит. Смысл появляется в сравнении с популяцией: результат кладут на распределение референсной группы и получают перцентиль. Девяностый означает, что по генетике человек выше девяноста процентов группы сравнения — и только. Формулировка авторов каталога: это не вероятность болезни, а ранг.

Полигенная оценка — не диагноз и не вероятность заболеть, а место в строю: где человек стоит относительно других по сумме тысяч мелких генетических вкладов.

И это не перестраховка. Прочитать в геноме букву легко, а понять, что она меняет, — трудно. Эффект варианта надо провести через трёхмерную структуру и работу белка, а предсказывать, как одиночная замена меняет функцию, наука [22] пока умеет плохо; дальше — ещё скачок с молекулярного уровня на клинический, где мешаются среда, случай и другие гены. Сверху биология, которая сама себя страхует. Каждая хромосома у нас в двух экземплярах, от матери и от отца, — своего рода бакап, где здоровая копия часто прикрывает сломанную. Вдобавок многие гены задублированы.

Что такое паралоги и как они возникли

Паралоги — это почти одинаковые копии одного и того же гена, лежащие в геноме рядом. Возникают они так: при копировании ДНК или перестройке хромосом участок случайно дублируется. Чаще такое удвоение вредно или теряется бесследно, но иногда лишняя копия оказывается кстати — и отбор закрепляет её в геноме. Сразу после дупликации две копии одинаковы буква в букву; расходятся они лишь со временем, накапливая независимые мутации, — и становятся паралогами. А иные геном и вовсе держит почти идентичными: рибосомные гены сидят сотнями таких копий подряд.

И чем больше запасных копий у важного гена, тем крепче страховка. Самый яркий пример — противораковый ген TP53 (тот самый p53): у человека он в единственном экземпляре, а у слонов копий около двадцати. Поэтому гиганты, которым по числу клеток полагалось бы болеть раком куда чаще нас, наоборот, болеют реже: смертность от рака у слонов меньше 5% против человеческих, доходящих до четверти. Это и есть знаменитый парадокс Пето [23].

Поэтому поломка в одной копии обычно не проявляется: вариант даёт о себе знать, лишь когда испорчены и основная копия, и запасные. Крайние случаи отсеиваются раньше и жёстче — при совсем тяжёлых поломках нежизнеспособной оказывается сама половая клетка, сперматозоид или яйцеклетка, и до зачатия не доходит; при средних зачатие происходит, но эмбрион часто не развивается, и всё кончается выкидышем или отторжением (больше половины ранних выкидышей связаны с хромосомными аномалиями зародыша). До взрослого генома, который мы секвенируем, доходит в основном то, что эти фильтры пропустили.

Полигенная оценка этот клубок не распутывает — она складывает статистические корреляции с больших выборок. В этом её сила (считается, не вникая в механизм) и её потолок (ранг, а не приговор).

Оценки Just-DNA-Lite подтягивает из открытого PGS Catalog [24] — базы, куда исследователи выкладывают опубликованные модели с весами; по документации инструмента, доступно свыше пяти тысяч. Каждая модель — это список позиций, и у каждой позиции указан «рисковый» вариант и его вес. Считается в лоб: инструмент находит эти позиции в VCF, смотрит, сколько рисковых аллелей несёт человек в каждой (ноль, один или два — копий-то две), умножает на вес и складывает. Выходит одно число, сырой балл. Его кладут на распределение референсных популяций проекта «1000 геномов» (африканской, американской, восточноазиатской, европейской, южноазиатской) и переводят в перцентиль. Выбирают оценку, жмут «посчитать» — и видно, где человек на этой шкале.

Правило чтения простое: перцентиль выше 50 — риск повышен относительно выбранной популяции, ниже 50 — понижен. Одна карточка из отчёта:

Карточка полигенной оценки в Just-DNA-Lite: риск тромбоза глубоких вен, перцентиль 31%

Карточка полигенной оценки в Just-DNA-Lite: риск тромбоза глубоких вен, перцентиль 31%

Поле

Значение

Признак

Blood clot or deep vein thrombosis — тромб, тромбоз глубоких вен (PGS000931)

Сумма

0,371

Учтено / всего

308 / 534

Среднее

0,0006

Перцентиль

31%

Перцентиль 31 означает, что генетическая склонность к венозным тромбозам здесь ниже, чем у большинства людей в популяции сравнения (в расчёт вошло 308 из 534 позиций модели).

У метода есть встроенное ограничение. Почти все модели каталога обучены на преимущественно европейских выборках. Если происхождение другое, оценка теряет точность — веса считали на других популяциях. Перцентиль стоит читать как прикидку, а не приговор.

Про скорость расчёта Just-DNA-Lite

Про «за секунды» — цифра проверяемая. Стандартный инструмент для такого счёта — командный PLINK2 (рабочая лошадка популяционной генетики: открытая утилита, которой считают GWAS, полигенные оценки и прочую статистику по геномам). Авторы Just-DNA-Lite приводят данные, что их расчёт на DuckDB — встраиваемой аналитической SQL-СУБД, эдакой «SQLite для аналитики», — выходит примерно в 12 раз быстрее PLINK2 при том же результате: на сотне оценок (полногеномный VCF, 4,66 млн вариантов) числа от DuckDB и от PLINK2 совпали почти буква в букву — корреляция Пирсона 0,9999 (эта мера сходства двух рядов чисел меняется от −1 до 1, и 1 означало бы полное тождество). Причина простая: подсчёт оценки — это, по сути, join двух таблиц (варианты из VCF × позиции модели с весами) и взвешенная сумма, а такие join’ы и агрегации колоночная СУБД делает влёт. Быстрее при той же точности — просто движок DuckDB заточен под такие операции.

Ещё в отчёте: Superhuman

Один модуль стоит особняком — Superhuman. Он собран по нашумевшему списку [25] Джорджа Чёрча (George Church), гарвардского генетика и одного из пионеров редактирования генома: это таблица редких «полезных» вариантов — от защиты сосудов и пониженного риска рака до нечувствительности к боли [26], устойчивости к малярии и способности надолго задерживать дыхание [27]. Отчёт показывает, какие из них есть в геноме. У меня набралось несколько — например, вариант ANGPTL3 (защита сосудов и липидного обмена) и вариант GHR, который в работах связывают с пониженным риском рака и долголетием ценой невысокого роста. Только этот «вариант невысокого роста» достался человеку заметно выше среднего — мне. Гены предрасполагают, а не диктуют.

Модуль скорее развлекательный: наличие «сверхварианта» — это лишь предрасположенность, а не суперспособность. Это в лучшем случае предрасположенность — многое решают пенетрантность (какая доля носителей реально проявляет признак), взаимодействие генов и среда. Модуль самый развлекательный и наименее строгий: одиночные маркеры, часто с хлипкой доказательной базой. Любопытно — да, медицински значимо — нет.

Кто за этим стоит

Just-DNA-Lite — часть проекта Just-DNA-Seq (аккаунт dna-seq [28] на GitHub). Задача проекта: дать человеку открытый и прозрачный разбор своего генома — по долголетию (веса из LongevityMap плюс полигенные оценки), наследственной предрасположенности к ракам, фармакогенетике, плюс сердечно-сосудистые модули. Сами авторы формулируют цель так: инструмент не ставит диагнозы, а помогает приходить к врачу с более глубокими вопросами. Поэтому у каждой находки видно, откуда она взялась: ген, конкретный вариант и генотип, вес и ссылка на исследование, — всю цепочку до сырых данных можно перепроверить.

Команда небольшая и международная. Ядро: Антон Кулага (Anton Kulaga) — биоинформатик, системная биология старения; Ольга Борисова (Olga Borysova) — биолог и генетик, специалист по митохондриям, основатель MitoSpace; Николай Усанов (Newton Winter) — сооснователь, биоинформатические пайплайны; плюс несколько разработчиков и волонтёров. Проект описан в препринте на arXiv [29].

Где посмотреть и как поставить у себя

Публичная демоверсия — на lite.just-dna.life [30], но по той же юридической причине там только открытые, заранее опубликованные геномы (например, самого Антона и его коллеги Ливии, выложенные на Zenodo). Свой геном на публичный сервер не загрузить — его анализируют только локально, командой uv run start на своём ПК.

Историю проекта удобнее послушать. На канале @just-dna-seq [31] собраны доклады; в этом эфире [32] Ольга Борисова, главный генетик проекта, ведёт цикл «Just-DNA-Seq Истории» — генетику долголетия разбирают через комикс на реальных данных. Герой Джеймс — айтишник, далёкий от биологии; у него вилка: по материнской линии родня живёт долго, по отцовской — мало, да ещё со склонностью к раку. Разобраться помогает подруга-генетик Алекс; попутно показывают, как отсеквенировать геном и достать «гены долголетия», которых нет в коммерческих отчётах. Как развернуть Just-DNA-Lite у себя, по шагам показано во втором видеотуториале [33].

Проект молодой, и обратная связь нужна ему как воздух. Разработчики жаловались мне прямо: главная головная боль сейчас — не баги, а молчание пользователей. Люди стесняются сообщать о проблемах, отклик приходится вытаскивать силком, а без него инструмент до продакшена не дотянуть. Зато на любое замечание — хоть в личку, хоть issue на GitHub [34] — реагируют быстро, часто в тот же день. Так что не молчите: сломалось или неудобно — пишите.

Пересборка генома: чиним корень артефакта

Ложный панкреатит PRSS1 из ИИ-разбора не давал мне покоя. Да, Opus распознал в нём артефакт, но сам факт, что мой файл выдаёт несуществующий наследственный диагноз, напрягал: доверия к такому геному меньше. И артефакт не случаен — он вшит в то, как собран мой VCF. Файл я получил в 2023-м, но инструменты в нём поколения 2017 года.

Что технически не так с моей сборкой генома

Выравнивание — minimap2, вызов вариантов — GATK HaplotypeCaller 3.8, референс GRCh38 без ALT-контигов (это дополнительные, альтернативные версии тех участков референса, что у людей сильно различаются или задублированы — район иммунной совместимости MHC/HLA, семейства почти одинаковых генов), фильтрация не применялась (в колонке FILTER у всех вариантов точка). GATK4 стал стандартом ещё в 2018-м; minimap2 создавался под длинные чтения, а не под короткие иллюминовские; референс без ALT-контигов «схлопывает» почти одинаковые копии-паралоги, и чтения соседних трипсиногеновых генов садятся на ген PRSS1 — отсюда кластер ложных гетерозигот.

Добавил решимости и геном друга: разбирая файл User1, Opus отметил, что тот собран заметно качественнее — свежим софтом 2024 года (DRAGEN), с фильтрацией и правильным референсом, — и на том же участке PRSS1 у User1 никакого артефакта нет. На его фоне мой файл смотрелся устаревшим.

Сырые чтения (FASTQ) у меня были, а качество хотелось поднять. Я попросил Opus 4.8 пересобрать геном с нуля современным конвейером и по ходу объяснить каждую деталь.

Конвейер короткий: FASTQ → выравнивание → вызов вариантов → VCF. Две ступени — выравниватель и вызыватель.

Выравниватель: bwa-mem2

Прочтения приходят миллионами коротких кусков по ~150 нуклеотидов, и каждый надо поставить на своё место в трёхмиллиардном геноме. Этим занят выравниватель. Опус подобрал мне bwa-mem2 [35] — переписанный на скорость преемник классического BWA-MEM: результат тот же, работает в 2–3 раза быстрее. Он запускает не одну сборку, а самую продвинутую под текущий процессор — то есть с самыми широкими векторными инструкциями, которые тот поддерживает: AVX2 или AVX-512. У меня выбралась bwa-mem2.avx2. Чтобы искать место каждого чтения не перебором всего генома, а за считаные операции, bwa строит FM-индекс — компактный поисковый указатель поверх преобразования Барроуза–Уилера [36]: он находит подстроку за число шагов по длине запроса, а не по размеру генома.

Как FM-индекс находит место чтения (BWT изнутри)

Преобразование Барроуза–Уилера (BWT, Michael Burrows и David Wheeler, 1994) изначально придумали для сжатия — та же трансформация лежит в основе bzip2. Геном с маркером конца выписывают всеми циклическими сдвигами, сортируют, берут последний столбец — это BWT. Он обратим и группирует одинаковые буквы рядом.

Из BWT собирают FM-индекс (Ferragina–Manzini): сам BWT плюс таблицы, которые дают «обратный поиск» — найти все вхождения запроса за число шагов, равное длине запроса, а не размеру генома. Искать 20-буквенную зацепку в трёх миллиардах букв — 20 операций, не три миллиарда. На этом и держится скорость bwa: он находит по индексу точные зацепки, сцепляет их и доращивает выравнивание вокруг них SIMD-арифметикой — той самой AVX2-частью.

Вызыватель вариантов: DeepVariant

Дальше по выровненным чтениям надо решить, где я отличаюсь от эталона, — это делает программа-вызыватель, на жаргоне «каллер». Каждое её решение «здесь вариант» называют вызовом (variant call), и такой вызов вполне может оказаться ложным. Вместо старого статистического GATK Опус посоветовал взять DeepVariant [37] от Google. Он не считает по формулам: каждое подозрительное место превращает в картинку — стопку чтений в этой позиции, где основание, качество, цепь и надёжность привязки закодированы цветом, — и скармливает свёрточной нейросети, обученной на эталонных геномах. Сеть отвечает: гомозигота-эталон, гетерозигота или гомозигота-вариант.

Смысл картинки в том, что сеть выучивает по данным, как выглядит настоящий вариант против шума секвенатора, и переносит это на новые геномы, не завися от формул под конкретный случай. Работа идёт тремя шагами: собрать картинки, прогнать через сеть, записать VCF с честными метками PASS. Подход берёт призы в состязаниях precisionFDA и заметно точнее GATK 3.8.

Тяжёлый шаг — прогон через сеть — я сделал на GPU. Причём на дешёвой CMP 90HX: эту карту NVIDIA выпустила под майнинг криптовалют — без видеовыходов, с урезанной шиной PCIe. Но с CUDA-вычислениями она прекрасно справляется, а прогону нейросети больше ничего и не надо — майнинговая карта честно посчитала геном. Чтобы docker её увидел, пришлось доставить nvidia-container-toolkit; дальше DeepVariant отработал на ней штатно, вызов вариантов уложился в пару часов.

Выравнивание я скормил DeepVariant в формате BAM: сжатый и самодостаточный. CRAM был бы вдвое компактнее, но кодирует чтения относительно референса и без него не разворачивается — BAM за независимость платит удвоенным местом на диске.

На выходе рядом с обычным VCF получается ещё .g.vcf.gz — gVCF. Обычный VCF перечисляет только отличия от эталона, а gVCF описывает весь геном: и варианты, и совпавшие с эталоном участки, свёрнутые в блоки с оценкой уверенности. Это снимает вечную двусмысленность обычного VCF, где отсутствие записи означает то ли «совпало с эталоном», то ли «не было прочтений» — в gVCF видно, что из двух. Оттого он и крупнее, даже с учётом gzip-компрессии: 922 МБ (в файле .g.vcf.gz) против 115 МБ у варианта-только.

Что получилось

Сравнение старого файла и пересобранного:

Показатель

Старый (GATK 3.8, без фильтра)

Пересобранный (bwa-mem2 + DeepVariant)

PASS-вариантов

4 835 656 (100%, фильтр не применён)

4 735 848 (76,8%)

SNV / индели (PASS)

3 922 275 / 913 381

3 843 701 / 892 147

Ts/Tv (PASS)

1,970

1,985

Кластер PRSS1

168 вызовов

11 PASS, мисмаппинг отфильтрован

Откуда уверенность, что пересборка не просто другая, а лучше? Новый конвейер мог и напортить, так что Опус сверял тремя независимыми способами.

Первый — контрольный участок, тот самый PRSS1. В старом файле там 168 вызовов подряд, почти все ложные; в пересобранном — 11, только настоящие. Причина в двух вещах: bwa-mem2 честнее оценивает, насколько надёжно чтение легло на своё место, а DeepVariant по-настоящему отсеивает мусор (в старом файле фильтрации не было вовсе). Ложный кластер исчез.

Второй — объективные метрики, которые можно проверить, не зная «правильного ответа». Ts/Tv (соотношение двух типов однобуквенных замен; у чистого полногеномного набора оно около 2,0) подрос с 1,970 ближе к идеалу — до 1,985. И появилась сама фильтрация: старый файл держал все вызовы как «прошедшие» (PASS), новый честно пометил около 1,4 млн низкокачественных.

Третий — воспроизводимость. Независимая пересборка выдала те же надёжные находки, которым я и так доверял: тот же APOE, ту же гомозиготу Жильбера *28/*28. Значит, новый конвейер не ломает верное, а вычищает ложное.

Все три сигнала показали в одну сторону.

Оговорка: конвейер считает только малые варианты — замены и короткие вставки-удаления. Крупные перестройки, изменения числа копий, HLA-типирование (разбор генов тканевой совместимости — по ним подбирают доноров при пересадке и предсказывают лекарственную гиперчувствительность) он не делает. И трудные участки — паралоги, район MHC (там гены HLA и лежат), сегментные дупликации — короткими чтениями на линейном референсе берутся плохо в принципе; тут помог бы граф-пангеномный референс, но это отдельная история.

Сам конвейер, по шагам

Инструменты: bwa-mem2 и samtools в изолированном окружении micromamba (в Gentoo — sci-biology/bwa-mem2 из оверлея и sci-biology/samtools; в Debian/Ubuntu, Fedora, openSUSE — одноимённые пакеты); DeepVariant — из docker-образа. Тайминги — на 58 ядрах AMD EPYC и одной GPU.

# 1. Инструменты (~пара минут)
micromamba create -y -p ./env -c conda-forge -c bioconda bwa-mem2 samtools

# 2. Индекс референса GRCh38 (~15-20 мин, RAM ~40-70 ГБ, однопоточно)
bwa-mem2 index GRCh38_no_alt.fna

# 3. Выравнивание + пометка дубликатов -> BAM (~1,5 ч, все ядра)
bwa-mem2 mem -t 58 -R '@RGtID:stSM:User0tLB:lib1tPL:MGI' GRCh38_no_alt.fna R1.fq.gz R2.fq.gz 
  | samtools fixmate -m -@ 24 - - 
  | samtools sort    -@ 24 -m 2G - 
  | samtools markdup -@ 24 -O bam - User0.markdup.bam
samtools index User0.markdup.bam

# 4. Вызов вариантов DeepVariant на GPU (~2 ч) -> VCF + gVCF
docker run --rm --gpus all -v $PWD:/w google/deepvariant:1.10.0-gpu 
  /opt/deepvariant/bin/run_deepvariant --model_type=WGS 
  --ref=/w/GRCh38_no_alt.fna --reads=/w/User0.markdup.bam 
  --output_vcf=/w/User0.deepvariant.vcf.gz 
  --output_gvcf=/w/User0.deepvariant.g.vcf.gz --num_shards=58

Весь прогон — около четырёх часов: индекс, выравнивание, DeepVariant на GPU.

Зачем это вообще

В сухом остатке, главный смысл полногеномного теста — управление рисками. Геном не лечит и судьбу не предсказывает, но показывает, на что обратить внимание. Если, не дай Бог, всплыла повышенная предрасположенность — к раку, к тромбозам — это не повод паниковать, а повод раньше мониторить: скрининги, анализы, образ жизни. Знать слабое место заранее дешевле, чем ловить проблему по факту.

А ещё просто интересно узнавать о себе. Я не знал, что у меня «гены марафонца»: по варианту ACTN3 мышцы почти не синтезируют быстрый белок α-актинин-3 — я собран под выносливость, а не под спринт. Мелочь, но подсказывает, где скрыт потенциал.

Ещё недавно у проекта Just-DNA-Lite появился (MCP-сервер)[https://github.com/winternewt/just-prs-mcp [38]]: у кого-то стоит какой-либо агент, типа Claude Code, Cursor или похожий, тот может подключить его и разобрать геном прямо в агенте. А в планах — бесплатный магазин расширений: модули оформлены в специальном формате, так что любой соберёт свой (руками или с помощью ИИ по научной статье) и выложит для других.

Про создание собственных модулей, исследующих мутации, которые интересуют лично вас, интеграцию «ИИ + Just-DNA-Lite», и более точную граф-пангеномную сборку генома — в следующей части.

© 2026 ООО «МТ ФИНАНС»

Автор: inetstar

Источник [39]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/32886

URLs in this post:

[1] прошлой части: https://habr.com/ru/companies/ruvds/articles/1049242/

[2] компания (Astral): https://%5Bhttps://astral.sh/about

[3] github: https://%5Bhttps://github.com/astral-sh/uv%5D

[4] синдроме Жильбера: https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B4%D1%80%D0%BE%D0%BC_%D0%96%D0%B8%D0%BB%D1%8C%D0%B1%D0%B5%D1%80%D0%B0

[5] генотип: http://www.braintools.ru/article/9375

[6] химиотерапия: http://www.braintools.ru/brain-disease/brain-growth/treatment-of-brain-tumors/chemotherapy

[7] ошибка: http://www.braintools.ru/article/4192

[8] внимание: http://www.braintools.ru/article/7595

[9] стресса: http://www.braintools.ru/article/9548

[10] стресс: http://www.braintools.ru/article/9041

[11] Память: http://www.braintools.ru/article/4140

[12] мозга: http://www.braintools.ru/parts-of-the-brain

[13] сон: http://www.braintools.ru/article/9809

[14] слух: http://www.braintools.ru/article/6251

[15] Впечатления: http://www.braintools.ru/article/2012

[16] Promethease: https://promethease.com/

[17] https://www.snpedia.com/: https://www.snpedia.com/

[18] Just-DNA-Seq: https://github.com/dna-seq/dna-seq

[19] Just-DNA-Lite: https://github.com/dna-seq/just-dna-lite

[20] кислорода: http://www.braintools.ru/article/5138

[21] пример с сайта проекта: https://just-dna.life/report_example/

[22] наука: http://www.braintools.ru/article/7634

[23] парадокс Пето: https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9F%D0%B5%D1%82%D0%BE

[24] PGS Catalog: https://www.pgscatalog.org/

[25] нашумевшему списку: https://arep.med.harvard.edu/gmc/protect.html

[26] боли: http://www.braintools.ru/article/9901

[27] дыхание: http://www.braintools.ru/article/4500

[28] dna-seq: https://github.com/dna-seq

[29] препринте на arXiv: https://arxiv.org/abs/2403.19087

[30] lite.just-dna.life: https://lite.just-dna.life/

[31] @just-dna-seq: https://youtube.com/@just-dna-seq

[32] этом эфире: https://www.youtube.com/live/6BOFkKg1PGU

[33] втором видеотуториале: https://www.youtube.com/watch?v=NcOiEUaIpUk

[34] issue на GitHub: https://github.com/dna-seq/just-dna-lite/issues

[35] bwa-mem2: https://github.com/bwa-mem2/bwa-mem2

[36] преобразования Барроуза–Уилера: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%91%D0%B0%D1%80%D1%80%D0%BE%D1%83%D0%B7%D0%B0_%E2%80%94_%D0%A3%D0%B8%D0%BB%D0%B5%D1%80%D0%B0

[37] DeepVariant: https://github.com/google/deepvariant

[38] https://github.com/winternewt/just-prs-mcp: https://github.com/winternewt/just-prs-mcp

[39] Источник: https://habr.com/ru/companies/ruvds/articles/1056512/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1056512

www.BrainTools.ru

Rambler's Top100