Разместить здесь вашу рекламу


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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Об авторе. Энди Томасон — ведущий программист Genomics PLC. Он с 70-х годов занимается графическими системами, играми и компиляторами; специализация — производительность кода.

Гены: краткое введение


Геном человека состоит из двух копий примерно по 3 миллиарда пар оснований ДНК, для кодирования которых используются буквы A, C, G и T. Это около двух бит на каждую пару оснований:

3 000 000 000 × 2 × 2 / 8 = 1 500 000 000 или около 1,5 ГБ данных.

На самом деле эти копии очень похожи, и ДНК всех людей практически одинаков: от торговцев с Уолл-Стрит до австралийских аборигенов.

Существует ряд «референсных геномов», таких как файлы Ensembl Fasta. Эталонные геномы помогают построить карту с конкретными характеристикам, которые присутствуют в ДНК человека, но не уникальны для конкретных людей.

Например, мы можем определить «местоположение» гена, который кодирует белок BRCA2, отвечающий за восстановление ДНК при раке молочной железы: вот этот ген.

Он находится в хромосоме 13, начиная с позиции 32315474 до 32400266.



Генетические вариации


Люди настолько похожи, что для представления человека обычно достаточно хранить небольшой набор «вариаций».

Со временем наша ДНК повреждается космическими лучами и ошибками копирования, поэтому ДНК, которую родители передают детям, немного отличается от их собственной.

Рекомбинация ещё больше перемешивает гены, так что ДНК ребёнка наследует от каждого родителя смесь ДНК бабушек и дедушек с этой стороны.

Поэтому для каждого изменения нашей ДНК достаточно сохранить только различия от эталонного генома. Обычно они сохраняются в файле VCF (Variant Call Format).

Как и почти все файлы в биоинформатике, это файл типа TSV (текстовый формат с разделением табами).

Вы можете получить собственный файл VCF у компаний вроде 23 and Me и Ancestry.com: платите относительно небольшие деньги и отправляете образец, который секвенируется на ДНК-микрочипе. Он подсвечивает фрагменты, где ДНК соответствует ожидаемым последовательностям.

Сокращённый пример из спецификаций VCF:

##fileDate=20090805
##source=myImputationProgramV3.1
##reference=1000GenomesPilot-NCBI36
##phasing=partial
#CHROM POS     ID        REF ALT    QUAL FILTER INFO                              FORMAT      NA00001        NA00002        NA00003
20     14370   rs6054257 G      A       29   PASS   NS=3;DP=14;AF=0.5;DB;H2           GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.

Здесь у нас три человека с именами NA00001, NA00002 и NA00003 (мы в мире генетики очень серьёзно относимся к безопасности персональных данных), у которых в позиции 14370 хромосомы 20 есть определённые отличия 0|0, 1|0 и 1|1 от G до A.

На человека приходится два числа, поскольку у всех нас две копии хромосомы 20 (по одной от каждого родителя; исключение составляют только половые хромосомы). Мне не повезло, что у меня только одна Х-хромосома, поэтому я унаследовал дальтонизм от деда через мать).

Возможны такие варианты:

0|0 обе хромосомы соответствует эталонному образцу
1|0 и 0|1 только одна хромосома отличается от эталона
1|1 обе хромосомы отличаются от эталона

Файлы VCF считаются «фазированными», если можно выяснить, на какой конкретно хромосоме находится вариант или, по крайней мере, где он расположен относительно соседей. На практике трудно сказать, из какой хромосомы произошла ДНК, поэтому приходится строить догадки!

Таким образом, у нас есть битовый вектор 001011, которого достаточно, чтобы классифицировать трёх людей в этой вариации. Это гаплотипы или вариации отдельных хромосом.

Исследования GWAS


С помощью этого битового вектора мы можем попытаться выяснить, какие части генома влияют на болезни или другие индивидуальные свойства, такие как цвет волос или рост. Для каждого варианта мы строим гаплотип для измеряемых признаков (фенотип).

GWAS (Genome wide association study, полигеномный поиск ассоциаций) является основой генетического анализа вариантов. Он сопоставляет вариации с данными наблюдений.

Например:

Haplotype Height Person
0         1.5m   NA00001
0         1.5m
1         1.75m  NA00002
0         1.75m
1         1.95m  NA00003
1         1.95m

Обратите внимание, что у каждого два гаплотипа, потому что у нас пары хромосом.

Здесь мы видим, что варианты 1 связаны с более высоким ростом, а значения соответствуют линейной регрессии:

beta            Изменение роста с изменением вариации.
standard error  Показатель погрешности.

На практике в данных действительно много шума, а погрешность обычно больше, чем beta, но часто у нас есть несколько вариантов, где beta намного превышает погрешность. Это соотношение — Z-оценка и связанное с ней p-значение — показывает, какие варианты с наибольшей вероятностью влияют на рост.

Самый простой способ осуществить регрессию — применить инверсию Мура — Пенроуза.

Составляем ковариационную матрицу 2×2 со скалярным произведением двух векторов, а решаем задачу методом наименьших квадратов.

У нас триллионы точек данных, поэтому важно сделать это эффективно.

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


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

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

Неравновесное сцепление (LD) определяет, насколько похожи два вектора с вариациями.

Оно вычисляет значение между -1 и 1, где

-1     Совершенно противоположные вариации.
 0     Вариации не похожи.
 1     Вариации абсолютно одинаковы.

Для определения схожести вариаций создаём большие квадратные матрицы LD для определённых мест в геноме. На практике многие из вариаций вокруг этого места почти идентичны варианту в середине.

Матрица выглядит примерно так, с большими квадратами сходства.

    v0  v2  v4  v6  v8  va  vc  ve  vg
      v1  v3  v5  v7  v9  vb  vd  vf
v0    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
v1    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v2    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v3    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v4    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v5    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v6    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v7    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
v8    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
v9    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
va    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
vb    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
vc    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
vd    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
ve    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
vf    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
vg    0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Реальные значения не 0 или 1, но очень похожи.

В промежутке между v7 и v8 произошла рекомбинация. Из-за этого v0..v7 отличается от v8..vg.

Проблема сходства в том, что мы знаем, что один из вариантов в группе что-то вызвал, но не знаем, какой.

Это ограничивает разрешение нашего геномного микроскопа, и для решения проблемы придётся использовать дополнительные методы, такие как функциональная геномика.

Заключение


В конце концов, никогда нельзя быть уверенным на 100%, какой именно участок генома вызвал конкретную индивидуальную особенность, в этом суть генетики. Биология — не точная машина с идеальными деталями фабричного изготовления. Это кипящая масса случайностей, которые каким-то образом создают то, что мы называем жизнью. Вот почему так важна статистика, или «машинное обучение», как теперь её модно называть.
Источник: https://habr.com/ru/post/452622/


Интересные статьи

Интересные статьи

Бывает такой заходишь на почту и видишь очередную подборку статей, которые никогда не прочитаешь, но тут так сошлись звезды, что и открыл статью, и прочел, и придумал, где на практике при...
Часто от программистов PHP можно услышать: «О нет! Только не „Битрикс“!». Многие специалисты не хотят связываться фреймворком, считают его некрасивым и неудобным. Однако вакансий ...
Продолжение подборки историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Первая часть тут. Читать дальше →
Приветствую! Это небольшая статья, отвечающая на вопросы: "что такое envoy?", "зачем он нужен?" и "с чего начать?". Что это Envoy — это L4-L7 балансировщик написан...
Многие, как и я, любят футбольные симуляторы и многие увлекаются программированием. Когда-то, в далёком 2004 году, наигравшись в ФИФУ я подумал, что было бы неплохо совместить два моих увлечения ...