Учебный сайт Левина Ильи, 3-й семестр

Картирование подготовленных данных на геном

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

Для выполнения этого задания я использовал программу bwa mem:

$ bwa mem -t 12 ../bwa/chr3.fna ../dnaseqreads/SRR10720412_1_paired.fq.gz ../dnaseqreads/SRR10720412_2_paired.fq.gz 
> aln-se.sam 2> aln-se.log

Задание 2: Анализ sam-файла с выравниванием

Внутри sam-файл выглядит так:

Inner_sam-file.png

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

Таблица 1. Информация о первых 11-ти столбцах sam-файла
Номер столбца Название столбца Описание
1 QNAME Уникальное имя рида. Если вместо уникального имени рида мы обнаруживаем символ "*", то это значит, что рид есть, но информация о нём недоступна
2 FLAG Некая комбинация побитовых (если можно так сказать) меток/"флагов" (на самом деле, вообще не понятно, что это), выраженная в одном числе
3 RNAME Имя референсного генома, на который мы все риды картировали. Если вместо имени референса мы здесь увидим символ "*", то это значит, что данный рид не закартировался
4 POS Номер самого левого нуклеотида в выравнивании рида с референсом, где нуклеотид №1 - первый нуклеотид референса. Если на этой позиции стоит 0, то это значит, что рид не закартировался
5 MAPQ Качество картирования чтения на референс
6 CIGAR Отчёт о выравнивании рида с референсом в специальной кодировке. Пример: запись в формате CIGAR "2S5M2D2M" стоит расшифровывать так: 2S - два несовпадения, 5M - 5 совпадений, 2D - 2 делеции, 2M - 2 совпадения, и всё это расположено последовательно, друг за другом
7 RNEXT Референсное название самого левого выравнивания последовательности следующего рида образца с референсом, причём если у нас рид последний, то следующим для него станет первый рид. Если оно у нас "*", то информация недоступна. Если оно у нас "=", то RNEXT совпадает с RNAME
8 PNEXT Позиция самого левого выравнивания последовательности следующего рида с референсом. Если в этом поле стоит "0", то информация недоступна
9 TLEN Длина образца. Если в этом поле стоит "0", то информация об длине недоступна
10 SEQ Собственно последовательности рида. Если в этом поле стоит "*", то последовательность рида не сохранилась. А если в этом поле стоит "=", то это значит, что у нас рид полностью совпал с референсом
11 QUAL Строка качества каритрования рида на геном (Phred+33)

Размер sam-файла составляет 16 Gb.

Задание 3: получение и индексирование bam-файла

Для начала я перевёл наш sam-файл в формат .bam (для уменьшения веса файла и для ускорения работы программ с ним) и отсортировал картированные чтения по координатам картирования. Сделал я это с помощью данной команды:

$ samtools sort -@ 12 -o aln-se.bam aln-se.sam 2> samtoolsort.log

Вес получившегося bam-файла равен 4.7 Gb, что в 3.4 раза меньше, чем вес аналогичного sam-файла.

Далее bam-файл надо проиндексировать для последующего анализа. Сделал я это с помощью приведённой ниже команды:

$ samtools index -@ 12 aln-se.bam

Задание 4: Анализ bam-файла

Сейчас нам нужно провести статистический анализ отсортированных и проиндексированных картированных чтений. Сделаем мы это с помощью следующей команды:

$ samtools flagstat -@ 12 aln-se.bam > aln-se.flagstat

Собственно, что мы получили в результате:

Выше приведённые проценты отличаются из-за того, что у нас чтения могут закартироваться на геном несколько раз, и тогда может выйти так, что некоторые чтения одной пары могут находиться далеко друг от друга и в самых разных направлениях, что и делает их "некорректно" каритрованными.

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

Для начала нам стоит выяснить название нашей хромосомы. Сделаю я это с помощью следующей команды:

$ samtools faidx chr3.fna

После выполнения этой команды я заглянул в получившийся файл chr3.fna.fai и нашёл там название хромосомы: NC_000003.12.

Следующим шагом надо получить чтения, картированные только на мою хромосому. Сначала я, собственно, выделю нужные мне чтения:

$ samtools view -h aln-se.bam NC_000003.12 > aln-se.chr3.sam

Как мы могли заметить, выходной файл получается в формате .sam, а нам нужен .bam. Конвертируем:

$ samtools view -b aln-se.chr3.sam > aln-se.chr3.bam

Вот мы и получили чтения, картированные только на нашу хромосому. Теперь посмотрим статистику:

$ samtools flagstat -@ 12 aln-se.chr3.bam > aln-se.chr3.flagstat

Как мы можем заметить, наша операция по экстрагированию нужных нам чтений сработала, так как проценты картированных и "корректно" картированных чтений увеличились: вместо 12.04% картированных чтений мы имеем 88.39%, а "корректно" картированных чтений - 68.87% вместо 10.72%.

Далее получим только "корректно" картированные пары чтений:

$ samtools view -@ 12 -f 0x2 -bS aln-se.chr3.bam > aln-se.chr3.corr.bam

И посмотрим статистику файла aln-se.chr3.corr.bam:

$ samtools flagstat -@ 12 aln-se.chr3.corr.bam > aln-se.chr3.corr.flagstat

Собственно, у нас вместо 88.39% картированных чтений и 68.87% "корректно" картированных чтений по 100% и того, и того, что говорит нам о том, что мы получили файл, где абсолютно все чтения картировались на нашу хромосому, причём правильно, "корректно". Собственно, этого мы и добивались, это прекрасно :)

Осталось полученные прекрасные чтения проиндексировать для будущих программ:

$ samtools index -@ 12 aln-se.chr3.corr.bam

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

Промаркируем дублированные чтения:

$ picard MarkDuplicates -M metrix.file.txt -I aln-se.chr3.corr.bam -O aln-se.mark.dupl.bam 2> markdupl.log

Посмотрим статистику полученного файла с промаркированными дубликатами:

$ samtools flagstat -@ 12 aln-se.mark.dupl.bam > aln-se.mark.dupl.flagstat

Как мы можем видеть с помощью samtools flagstat, у нас среди картированных чтений оказалось 550356 дубликатов.