Вариации, 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.
  • Оценка значимости варианта объединяет трансляцию, частоты в популяции и консервативность.
Проверьте себя
1. Что такое SNP?
AВставка длинного участка ДНК
BЗамена одного нуклеотида в определённой позиции, встречающаяся в популяции
CЦелый ген
DОшибка секвенатора
2. В каком формате обычно хранят найденные генетические варианты?
AFASTA
BFASTQ
CVCF
DNewick
3. Где хранятся белковые последовательности с аннотацией их функций?
AGenBank
BUniProt
CPDB
DFASTQ