Попытка загрузить VCF-файл напрямую в сервисы вроде GEDmatch или Promethease обычно заканчивается ошибкой: эти платформы принимают данные только в «сыром» текстовом формате 23andMe, а не в стандартном Variant Call Format. Поэтому задача конвертации VCF в 23andMe возникает у всех, кто получил результаты полногеномного секвенирования (WGS) или экзомного анализа в лаборатории и хочет использовать их в популярных генеалогических и медицинских сервисах.

Конвертация технически выполнима: оба формата описывают одни и те же генетические варианты, просто по-разному их структурируют. Однако есть важные нюансы — система координат, версия референсного генома и набор SNP. Разберём процесс по шагам, от подготовки исходного файла до проверки готового результата.

Чем отличаются форматы VCF и 23andMe

VCF (Variant Call Format) — это стандартный табличный формат биоинформатики, в котором каждый вариант описывается позицией в геноме, идентификатором rsID, референсным и альтернативным аллелями, а также служебными полями качества. Файл обычно сжат в .vcf.gz и содержит сотни тысяч или миллионы строк при полногеномном секвенировании.

Формат 23andMe устроен гораздо проще. Это обычный текстовый файл с четырьмя колонками, разделёнными табуляцией: rsid, chromosome, position, genotype. Генотип записывается двумя буквами (например, AG), а вместо rsID может стоять внутренний идентификатор вида i5000001.

Ключевое отличие, которое ломает наивную конвертацию, — референсный геном. VCF из лаборатории может быть построен по сборке GRCh37 или GRCh38, а позиции в файле 23andMe исторически соответствуют GRCh37. Если версии не совпадают, координаты вариантов сместятся, и результат будет некорректным, даже если конвертация формально прошла без ошибок.

💡

Успех конвертации определяется не программой, а совпадением версии референсного генома в исходном VCF и целевом формате.

Что понадобится перед началом

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

  • 🧬 Исходный файл .vcf или .vcf.gz из лаборатории секвенирования
  • 💻 Компьютер с Linux, macOS или Windows с WSL — большинство биоинформатических утилит рассчитаны на командную строку
  • 🛠 Установленные инструменты: BCFtools, PLINK или готовые скрипты-конвертеры
  • 📋 Информация о версии референсного генома — обычно указана в сопроводительных документах лаборатории или в заголовке VCF
  • 💾 Запас свободного места на диске: полногеномные файлы могут занимать десятки гигабайт

Версию сборки можно увидеть прямо в шапке VCF-файла — ищите строки, начинающиеся с ##reference= или ##contig=. Если там упоминается GRCh38 или hg38, а вам нужен формат 23andMe на базе GRCh37, потребуется дополнительный шаг — лифтовер координат, о котором речь пойдёт ниже.

Обзор инструментов для конвертации

Единой «официальной» программы для этой задачи не существует, поэтому сообщество использует несколько проверенных подходов. Ниже — сравнение основных вариантов, чтобы вы могли выбрать подходящий под свой уровень подготовки.

ИнструментТипСложностьОсобенности
PLINK + скриптыКомандная строкаСредняяГибкая фильтрация, нужна ручная доработка вывода
BCFtools + awkКомандная строкаСредняяПолный контроль над форматом выходного файла
Готовые Python-скриптыСкриптНизкая-средняяЗависят от автора, проверяйте исходный код
Онлайн-конвертерыВеб-сервисНизкаяРиск для приватности генетических данных

⚠️ Внимание: геном — это максимально чувствительные персональные данные. Загружая VCF-файл в малоизвестный онлайн-конвертер, вы фактически передаёте свою полную генетическую информацию третьей стороне без каких-либо гарантий. Предпочтительнее выполнять конвертацию локально на собственном компьютере.

📊 Какой способ конвертации вам ближе?
Командная строка (BCFtools/PLINK)
Готовый скрипт
Онлайн-сервис
Ещё выбираю

Пошаговая конвертация через BCFtools

Наиболее контролируемый способ — извлечь нужные поля из VCF с помощью BCFtools и переформатировать их в четырёхколоночную структуру. Сначала посмотрите, какие данные есть в файле:

bcftools view -h input.vcf.gz | head -50

Затем извлеките идентификатор, хромосому, позицию и генотип. Базовый запрос выглядит так:

bcftools query -f '%ID\t%CHROM\t%POS\t[%GT]\n' input.vcf.gz > output_raw.txt

Полученный файл ещё не является готовым форматом 23andMe: генотипы записаны в виде 0/1 или 1/1, а не буквами нуклеотидов. Чтобы получить буквенные генотипы, используйте расширенный запрос с подстановкой аллелей:

bcftools query -f '%ID\t%CHROM\t%POS\t[%TGT]\n' input.vcf.gz > output_gt.txt

Опция %TGT выводит генотип сразу в виде нуклеотидов (например, AG). Останется привести обозначения хромосом к виду, принятому у 23andMe: убрать префикс chr, если он есть, и заменить MT на MT или M в зависимости от требований целевого сервиса. Это удобно сделать через sed или простой скрипт.

☑️ Проверка перед конвертацией

Выполнено: 0 / 5

Альтернативный путь — загрузить VCF в PLINK, отфильтровать варианты и экспортировать в текстовый формат, близкий к 23andMe. PLINK хорош тем, что умеет массово обрабатывать сотни тысяч SNP и отсекать проблемные записи.

plink --vcf input.vcf.gz --double-id --make-bed --out mydata

Далее бинарный набор можно выгрузить в табличный вид через --recode. Однако учтите: PLINK по умолчанию ориентирован на форматы .ped и .raw, поэтому для точного соответствия структуре 23andMe потребуется пост-обработка — перестановка колонок и приведение генотипов к нужному виду. Готовые скрипты для этого шага есть в открытых репозиториях, но перед запуском стоит просмотреть их код.

💡

Начните с теста на небольшом фрагменте: отфильтруйте одну хромосому (например, --chr 22), сконвертируйте её и проверьте результат вручную, прежде чем обрабатывать весь геном.

Проблема версий референсного генома

Если ваш VCF построен по GRCh38, а целевой сервис ожидает координаты GRCh37 (что характерно для формата 23andMe), простая перестановка колонок даст файл с неверными позициями. Внешне он будет выглядеть корректно, но генотипы окажутся привязаны к чужим координатам — и интерпретация в сервисах исказится.

Решение — процедура liftover (перенос координат между сборками). Для этого применяются инструменты вроде CrossMap или UCSC liftOver с цепочечными файлами (chain), которые сопоставляют позиции двух сборок. Часть вариантов при переносе теряется — это нормально, так как не все участки генома однозначно отображаются между версиями.

⚠️ Внимание: никогда не смешивайте в одном файле варианты с разных сборок генома и не «переименовывайте» координаты вручную. Если не уверены в версии сборки — уточните её в лаборатории, выдавшей результат, до начала конвертации.

Как узнать сборку генома, если лаборатория не отвечает

Откройте VCF и найдите строки ##reference= или ##contig=. Если там фигурирует длина хромосомы 1 равная 249250621 — это GRCh37/hg19; если 248956422 — это GRCh38. Эти значения являются общеизвестными характеристиками соответствующих сборок.

Проверка готового файла

После конвертации обязательно провалидируйте результат, прежде чем загружать его куда-либо. Откройте файл в текстовом редакторе или через head и сверьте структуру.

  • ✅ Ровно четыре колонки, разделённые табуляцией: rsid, хромосома, позиция, генотип
  • ✅ Генотипы записаны буквами (AA, AG, GG), а не цифрами вида 0/1
  • ✅ Хромосомы обозначены как 1–22, X, Y, MT — без префикса chr
  • ✅ Нет дублирующихся rsID с конфликтующими позициями
  • ✅ Файл сохранён в кодировке без BOM, с Unix-переводами строк

Для быстрой проверки количества строк и структуры удобны команды wc -l и awk -F'\t' '{print NF}'. Если число полей где-то отличается от четырёх — в этих строках ошибка, и их нужно найти и исправить или удалить.

Финальный тест — загрузка в целевой сервис. Если платформа принимает файл без ошибок валидации и корректно показывает известные вам варианты (например, те, что уже подтверждены другим тестом), конвертация прошла успешно.

💡

Валидный файл 23andMe — это четыре колонки через табуляцию, буквенные генотипы, хромосомы без префикса chr и координаты в одной версии сборки.

Типичные ошибки и их решение

Чаще всего конвертация ломается на предсказуемых местах. Генотипы в числовом виде (0/1) означают, что при извлечении использовался тег %GT вместо %TGT — перезапустите запрос с правильным тегом. Пустые идентификаторы (. вместо rsID) встречаются у редких вариантов, которых нет в базе dbSNP; такие строки можно либо удалить, либо оставить — многие сервисы их просто игнорируют.

Мультиллельные сайты (где указано несколько альтернативных аллелей через запятую) — ещё один источник сбоев. Их стоит разбить на отдельные записи командой bcftools norm -m- до извлечения генотипов, иначе строка выйдет некорректной.

⚠️ Внимание: сконвертированный файл не является эквивалентом оригинального теста 23andMe по набору SNP. Чип 23andMe покрывает фиксированную панель маркеров, а WGS-данные содержат гораздо больше вариантов. Сервисы примут файл, но интерпретировать будут только те позиции, которые знают.

Часто задаваемые вопросы

Можно ли конвертировать VCF в 23andMe онлайн без установки программ?

Онлайн-конвертеры существуют, но их использование связано с риском передачи полных генетических данных неизвестному сервису. Безопаснее выполнять конвертацию локально через BCFtools или PLINK — это не требует глубоких навыков программирования.

Почему в готовом файле генотипы вида 0/1 вместо букв?

При извлечении данных из VCF использовался тег %GT, который выводит числовые индексы аллелей. Замените его на %TGT в запросе BCFtools, чтобы получить буквенные генотипы.

Что делать, если VCF построен по GRCh38, а нужен GRCh37?

Необходимо выполнить liftover координат с помощью CrossMap или UCSC liftOver и соответствующего chain-файла. Простое переименование позиций недопустимо — координаты между сборками реально различаются.

Подойдёт ли сконвертированный файл для GEDmatch и Promethease?

Да, если файл соответствует структуре 23andMe: четыре колонки, буквенные генотипы, корректные обозначения хромосом. Перед загрузкой проверьте требования конкретного сервиса — они могут отличаться в деталях, например в ожидаемой версии сборки.

Сколько времени занимает конвертация полногеномного VCF?

Зависит от размера файла и мощности компьютера. Извлечение полей через BCFtools из сжатого полногеномного VCF может занять от нескольких минут до часа и более. Рекомендуется сначала отработать процедуру на одной хромосоме.