Вариации, SNP и базы данных биологии
Геномы людей совпадают на 99,9%. Оставшиеся различия — вариации — определяют индивидуальность и риски болезней. Их находят, хранят и ищут в базах.
SNP (Single Nucleotide Polymorphism) — замена одного нуклеотида в определённой позиции генома, встречающаяся в популяции. Самый частый тип генетической вариации.
Сравнивая геном человека с эталоном, мы находим миллионы отличий — вариаций. Большинство безобидны, но некоторые вызывают болезни или меняют ответ на лекарства. Этот урок — про то, как вариации находят, в каком формате хранят и где берут справочные данные.
Типы вариаций
- SNP — замена одной буквы (A→G в позиции X). Самый частый тип.
- Инделы (indel) — вставка или удаление нескольких букв.
- Структурные вариации — крупные перестройки: дупликации, делеции, инверсии больших участков.
Как находят SNP
Картируют риды образца на референс, и в каждой позиции смотрят: если большинство ридов согласно расходятся с эталоном — это вариант. Покажем простейший вызов варианта по консенсусу ридов в одной позиции.
from collections import Counter
reference_base = 'A'
reads_at_pos = ['G', 'G', 'G', 'A', 'G', 'G', 'G', 'G']
votes = Counter(reads_at_pos)
observed = votes.most_common(1)[0][0]
alt_fraction = votes[observed] / len(reads_at_pos)
print('Референс:', reference_base)
print('Наблюдаемая буква:', observed, f'({alt_fraction:.0%} ридов)')
if observed != reference_base and alt_fraction > 0.5:
print(f'Вариант (SNP): {reference_base} -> {observed}')Вывод:
Референс: A Наблюдаемая буква: G (88% ридов) Вариант (SNP): A -> G
88% ридов показывают G вместо эталонного A — это SNP. Реальные вызыватели вариантов (GATK, bcftools) делают то же, но со статистикой качества, учётом покрытия и фильтрами.
Формат VCF
Найденные варианты хранят в VCF (Variant Call Format): по строке на вариант, с позицией, референсным и альтернативным аллелем, качеством. Это стандарт клинической геномики.
#CHROM POS ID REF ALT QUAL
chr1 10583 rs58 A G 99
chr1 12783 . T C 87
chr2 34521 rs71 G GAA 60 (это indel: вставка AA)Где лежат данные: ключевые базы
| База | Что хранит |
| GenBank (NCBI) | нуклеотидные последовательности всех организмов |
| UniProt | белковые последовательности и их аннотации (функции) |
| Ensembl | геномы с разметкой генов, регуляции, вариаций |
| dbSNP / ClinVar | известные SNP и их клиническая значимость |
| PDB | трёхмерные структуры белков |
Идентификаторы вроде rs58 (SNP в dbSNP) или P69905 (белок в UniProt) — это «ссылки» в мир биологических данных. Зная id, любой инструмент достанет полную запись.
Как работает под капотом: значимость варианта
Найти SNP легко; понять, важен ли он, — трудно. Вариант оценивают по нескольким осям: меняет ли он белок (синонимичная/миссенс/нонсенс замена — вспомните раздел про код), как часто встречается в популяции (редкие подозрительнее), есть ли он в ClinVar как патогенный, затрагивает ли консервативную (важную) позицию по данным выравнивания многих видов. Интерпретация варианта объединяет почти все навыки курса — от трансляции до выравнивания.
Полезно понять масштаб и фильтрацию, потому что без них поток вариантов захлёбывается. При полногеномном секвенировании одного человека находят порядка 4–5 миллионов отличий от референса. Очевидно, что вручную их не разобрать, поэтому применяют каскад фильтров, сужающий список с миллионов до единиц кандидатов: оставляют только варианты в генах или регуляторных областях; отбрасывают частые в популяции (если вариант есть у 30% людей, он вряд ли причина редкой болезни); приоритизируют те, что меняют белок; сверяются с базами клинической значимости. Этот воронкообразный процесс — суть клинической интерпретации генома, и каждый его шаг опирается на навык из курса: знание структуры гена, генетического кода, частот, баз данных. Биоинформатик здесь — это тот, кто строит и обосновывает воронку, а не просто запускает вызов вариантов.
Стоит сказать и про устройство самих баз данных, ведь без них анализ слеп. Они связаны системой перекрёстных идентификаторов: SNP имеет rs-номер в dbSNP, ген — символ (например, BRCA1) и стабильный id в Ensembl, белок — номер в UniProt, структура — код в PDB. Зная один id, инструменты автоматически достают связанные записи из других баз: по гену находят его белок, по белку — структуру и известные патогенные варианты. Большинство баз дают программный доступ через API (NCBI Entrez, Ensembl REST), так что пайплайн может на лету обогащать находки аннотацией. Понимание этой экосистемы id и API превращает «нашёл вариант в позиции X» в «нашёл известный патогенный вариант гена BRCA1, связанный с риском рака» — то есть в осмысленный результат.
Частые ошибки
- Вызывать вариант без учёта покрытия. Одиночные риды ненадёжны; нужны глубина и качество.
- Считать любой SNP опасным. Большинство нейтральны; патогенность надо доказывать.
- Игнорировать координатную систему. VCF использует 1-based; ошибка на 1 ломает привязку к гену.
Итог
- Вариации (SNP, indel, структурные) — отличия генома от эталона; SNP самый частый тип.
- SNP вызывают по консенсусу картированных ридов и хранят в формате VCF.
- Данные лежат в базах: GenBank, UniProt, Ensembl, dbSNP/ClinVar, PDB.
- Оценка значимости варианта объединяет трансляцию, частоты в популяции и консервативность.