Ресеквенирование. Поиск полиморфизмов у человека

1. Картирование чтений на референсный геном

Картирование парных триммированных чтений на геном человека было выполнено с помощью команды bwa mem

bwa mem  -t 10 ../../bwa/chr10.fna ../trim_pair/paired_out_1.fq.gz ../trim_pair/paired_out_2.fq.gz > map_16_ch10.sam 2> mem_log

2. Анализ sam файла с выравниванием

a. Файлы формата .sam изначально были придуманы для хранения биологических последовательностей, выровненных с каким-либо референсом. Устройство формата довольно понятное: есть заголовки, начинающиеся с "@", и строки, содержащие информацию о ридах.

b. Информация о ридах, в свою очередь, разбивается по логическим колонкам: 11 обязательных, но иногда добавляется 12-я, содержащая дополнительную информацию. Подробнее о том, в каком столбце что содержится, написано в Таблице 1.

Таблица 1. Содержимое колонок .sam файла
№ колонки Поле Тип данных Краткое описание
1 QNAME String ID чтения
2 FLAG Int Комбинация значиений особых FLAGs (флагов), которые в битах дают характеристику каждому отдельному риду
3 RNAME String Название референса, на который картируется конкретный рид
4 POS Int Координата первого закартированного на референс нуклеотида. Равняется 0, если рид не отображен и не имеет координат
5 MAPQ Int Качество картирования, вычисляемое по формуле Q = -10lgP, где P - вероятность ошибки. Значение 255 свидетельствует о недоступности рида
6 CIGAR String Сжато кодируются события, замеченные в выравнивании (делеции/инсерции/замены)
7 RNEXT String Референсное название следующего закартированного рида. "=" означает, что RNEXT совпадает с RNAME
8 PNEXT Int Позиция картирования следующего рида
9 TLEN Int Расстояние между самой левой и самой правой позициями выравнивания
10 SEQ String Последовательность рида
11 QUAL String Качество прочтения каждого конкретного нкулеодтида (phred33)
12 Additional field any

NM:i - расстояние до генома (количество несовпадающих позиций)

NH:i - количество картирований для каждого конкретного рида

Общаий формат для дополнительного поля - TAG:TYPE:VALUE, где TAG задается двумя символами [A-Za-z][A-Za-z0-9], TYPE - одна буква, определяющая формат VALUE


c. Полученный .sam файл весит 16 Гб, что слишком много, поэтому следующим шагом будет его конвертация в бинарный файл


3. Получение и индексирование bam файла

a. Файл .sam был конвертирован в .bam командой

samtools sort -@ 10 -o map_16_chr10.bam map_16_ch10.sam 2> sort_log

b. Полученный .bam файл весит 4.6 Гб, файл .sam больше не нужен, а потому удален

c. Далее .bam файл был проиндексирован с помощью команды

samtools index -@ 10 map_16_chr10.bam 2> index_bam_log

4. Анализ bam файла

a. Поскольку просто так взять и прочитать бинарный файл несколько затруднительно, можно использовать команду flagstat, которая позволяет собрать статистику по input-файлу и выдать результат

samtools flagstat map_16_chr10.bam > flagstat.txt

b. Теперь в файле flagstat.txt лежит вывод команды.

Картированных чтений обнаружено 14.56%, а в корректно картированных пара чтений картировано 10.75%. Полученные значения можно объяснить тем, что, во-первых, полный экзом картируется лишь на одну хромосому. Во-вторых, ожидается, что чтения из одной пары должны картироваться недалеко друг от друга и быть направлены навстречу друг другу, однако может быть такое, что какое-то чтение из пары могло закартироваться далеко от того места, где следовало бы, поскольку чтения - небольшие сиквенсы, а в геноме короткие участки последовательности могут повторяться. К тому же, чтения могут картироваться на геном не один раз.


5. Получение картированных чтений

Как уже было сказано в предыдущем пункте, если полный экзом картируется лишь на одну хромосому, ожидается множество некартированных чтений, что влечет за собой возникновение желания избавиться от них, оставив только правильно картированные риды.

a. Первый шаг - оставить только картированные на хромосому чтения. Команда ниже позволяет это сделать.

samtools view -h map_16_chr10.bam NC_000010.11 > reads.chr10.sam

NC_000010.11 - название хромосомы, найденное в .fna файле. Далее файл .sam был конвертирован в .bam.

samtools view -bS reads.chr10.sam > reads.chr10.bam

b. Затем с помощью команды

samtools flagstat reads.chr10.bam > 5b_flagstat.txt

был получен файл 5b_flagstat.txt, из которого было получено, что картированных чтений найдено 87.64%, а картированных чтений в корректно картированных парах 64.97%.

c. По сравнению с тем, что было получено в пункте 4b, заметно, что количество закартированных на конкретную (10-ю) хромосому ридов увеличилось, как и ожидалось, однако картированных чтений в корректно картированных парах всё ещё меньше.

d. Несмотря на то, что, казалось бы, раз программа отсекла все некартированные риды, то просто картированных должно быть 100%, однако такого почему-то не наблюдается. Возможно, это связано с тем, что samtools view не идеально распознаёт некартированные чтения из-за повторов, которые могут возникнуть при картировании, а поскольку не задается, какие именно выравнивания надо брать, в выход явно попадают и ошибки. Вероятно, эта программа нужна для того, чтобы отфильтровать точно некартированные риды, потому что после этого можно применять более жесткий фильтр по тому, какие выравнивания брать (в команде из 5е опция -f 0x2 будет выбирать те выравнивания, у которых в поле FLAG стоит соответствующий бит, а 0x2 ставится, если рид сопоставлен правильной паре).

e. Оставить только правильно картированные пары чтений можно с помощью команды:

samtools view -@ 10 -f 0x2 -bS reads.chr10.bam > correct_reads_chr10.bam

f. И снова надо проверить статистику в полученном файле:

samtools flagstat correct_reads_chr10.bam > 5f_flagstat.txt

Из полученного файла 5f_flagstat.txt было найдено, что картированных чтений найдено 100.00%, а картированных чтений в корректно картированных парах 100.00%.

g. При сравнении с результатами в пунке 5b возникает желание радоваться жизни, потому что наконец удалось получить файл, содержащий только картированные чтения корректно картированных пар.

h. Последний полученный .bam файл содержит только правильно спаренные картированыые чтения 10-й хромосомы человека. Данный файл необходимо проиндексировать с помощью команды:

samtools index -b -@ 10 correct_reads_chr10.bam correct_reads_chr10.bai

6. Подготовка выравнивания к поиску вариантов

a. Дублированные чтения были промаркерованы с помощью команды:

picard MarkDuplicates -I correct_reads_chr10.bam -M metrix.file.txt -O marked_dupl.bam

b. Далее к полученному в 6а файлу была применена следующая команда:

samtools flagstat marked_dupl.bam > 6b_flagstat.txt

В результате был получен файл 6b_flagstat.txt, в котором указано, что нашлось 463748 дублированных чтений.