Попытка загрузить 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
Наиболее контролируемый способ — извлечь нужные поля из 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 или простой скрипт.
☑️ Проверка перед конвертацией
Конвертация через PLINK
Альтернативный путь — загрузить 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 может занять от нескольких минут до часа и более. Рекомендуется сначала отработать процедуру на одной хромосоме.