Практикум 12. Анализ данных NGS: картирование чтений, подготовка к поиску вариантов
В ходе это практикума прочтения были картированы на референсную последовательность четвёртой хромосомы человека и подготовлены к поиску вариантов.
Картирование чтений на референсный геном
Полученные в предыдущем практикуме парные триммированные чтения были картированы на референс при помощи программы bwa mem. Использованная команда приведена ниже, логи её выполнения доступны здесь.
bwa mem -t 10 chr4.fna SRR10720416_1_paired.fastq.gz SRR10720416_2_paired.fastq.gz > mapping/reads_mapped.sam 2> mapping/bwa_mem_run.log
Здесь bwa mem - команда запуска программы, -t 10 - опция, указывающая использовать под вычисления 10 потоков, chr4.fna - название файла с референсным геномом (для работы также требуются файлы, полученные при индексации этого генома), SRR10720416_1_paired.fastq.gz и SRR10720416_2_paired.fastq.gz - прочтения, которые надо картировать, > mapping/reads_mapped.sam - вывод, перенаправленный в sam-файл.
Анализ sam-файла с выравниванием
Далее приведены первые несколько строк получившегося sam-файла.
@SQ SN:NC_000004.12 LN:190214555 @PG ID:bwa PN:bwa VN:0.7.17-r1188 CL:bwa mem -t 10 chr4.fna SRR10720416_1_paired.fastq.gz SRR10720416_2_paired.fastq.gz SRR10720416.144 77 * 0 0 * * 0 0 TGCGGAGAGTTTGAGATGTATAGGAAAGCGACGAGGATACCCCAGAGGCCTCACACATCCGCAGTCTGCTTC >((&3*%++3D@D@5AA8:?>=?A=86=;?8AE8CABACCDD5BD-'-036=:=:0&%1-=;666CAAA?@B AS:i:0 XS:i:0 SRR10720416.144 141 * 0 0 * * 0 0 NACCNNAANNNNCCTAATAAANNNTGGANTTCGGCAATCATGTATCAATANNGGTTCACAAGTTGTGAC #(*(##,0####.//66644)###),(*#(77777@C@@@C@CC@86668##1115544/58888@@@@ AS:i:0 XS:i:0 SRR10720416.146 77 * 0 0 * * 0 0 AGTCCTTCCTATACTTTGCTCCTCCAGTTCAGCCGGCAGGCTTATTGTACCATTGATAGGTTCATGAACTGCAT >'((>11;-0EBB?8A?&?ABB7B?7=7=B*CCCAGGDGGEEGGGDGD8DBB@D;D5@;D9BB@BEBEBDBB9B AS:i:0 XS:i:0 SRR10720416.146 141 * 0 0 * * 0 0 NACAAGAANNNNAAAAGAAAGNAAAGGANGTCTCCCAAAAGCTCTCTTTTGNACTTTGTTACTATCGAAG #(,'''&)####-*'11,..0#666+--#-66666C@@CC@C@C@C@CC4-#555777514@C@C@@@@@ AS:i:0 XS:i:0 SRR10720416.150 77 * 0 0 * * 0 0 GAAAATGCAAACGTCACGGAGAAGCTCACCCGTACAACATCCTGACGGCTCTGTTAACAGCCAAACAGAG ;%-&.-(-(.,01-(..*3)66>;4;5:>:)1*9->>;>>-<<=<3'%,19<>;=BB/BB@D@@@@CD@B AS:i:0 XS:i:0 SRR10720416.150 141 * 0 0 * * 0 0 NGCTCGAGANTTTCCTCAAAATAAGTTTTCTGACTTGTAACCAGAAGGAGGTTATCAGTTCAGTTTTTAAACA #(((%&(''#//--/98899@@444@@@C@44@C@@@@@CCC@C@@@@@@@@@@@CC@CCC@@C@@@@@@@C@ AS:i:0 XS:i:0 SRR10720416.151 77 * 0 0 * * 0 0 CTACCCAAAACAAGCAAACAAACAAAAAACAACACTAGATTTAGGAAGAAAACAAAGCAATGGTTCAAAATTCTG >&1(23-0-5DDDD>GG:DGDCDEDHHHAHDHH@HHHHHBFH>HDDDD>GDDDDDHFH@HDEB=DFEFFEBHBHF AS:i:0 XS:i:0 SRR10720416.151 141 * 0 0 * * 0 0 NACAAAGGGNCTACAGGCCCCAAGCAAGTGTGAAATCCTTTTTTCATAAAGGATAAGTACATGGTAAAGTTTCTG #/2--++/-#66666@@CCCCC@C@@@@@@77775<<<<<@@C44C@@@@@C@7C@@C@@@@@?@:<:<:@8@@@ AS:i:0 XS:i:0
Файл формата sam (Sequence Alignment Map) состоит из строк заголовка, начинающихся с «@», и тела файла, в котором есть 11 обязательных и произвольное количество дополнительных полей; записи содержат информацию о проанализированных чтениях. Ниже перечислены первые 12 полей, присутствующих в полученном файле.
• QNAME - имя прочтения
• FLAG - побитовая сумма флагов (характеризуют определённые свойства выравнивания)
• RNAME - имя референсной последовательности (*, если нет выравнивания)
• POS - координата в референсе, с которой начинается выравнивание (0, если выравнивания нет)
• MAPQ - качество картирования (0, если выравнивания нет)
• CIGAR - представление выравнивания как последовательности некоторого количества совпадений, несовпадений и гэпов (формат CIGAR) (*, если нет выравнивания)
• RNEXT - имя референса для следующего прочтения (*, если выравнивания нет)
• PNEXT - координата выравнивания следующего прочтения (0, если выравнивания нет)
• TLEN - длина выравнивания (0, если выравнивания нет)
• SEQ - последовательность прочтения
• QUAL - phred-score нуклеотидов в прочтении
• AS - вес выравнивания (0, если выравнивания нет)
Отмечу, что, кроме AS, в файле встречаются и другие дополнительные поля - NM, MD, MC, XC.
Данный sam-файл достаточно большой и весит 16 Гб.
Получение и индексирование bam-файла
Файл в формате sam был переведён в сортированный двоичный bam-файл с помощью команды:
samtools sort -o reads_mapped.bam reads_mapped.sam &> sort_run.log
Здесь samtools sort вызывает используемую программу, -o reads_mapped.bam задаёт имя выходного файла, reads_mapped.sam - файл на входе. Можно посмотреть лог выполнения (там почти ничего нет). Файл в формате bam весит уже 4.6 Гб (почти в 3.5 раза меньше, чем sam). Далее полученный файл был проиндексирован:
samtools index reads_mapped.bam &> index_run.log
Здесь samtools index - вызывемая программа, reads_mapped.bam - входной файл. В результате работы программы был создан файл reads_mapped.bam.bai (тоже бинарный). Лог-файл на этот раз оказался абсолютно пустым.
Анализ bam-файла
Поскольку просто прочитать бинарный файл нельзя, снова была применена программа samtools:
samtools flagstat reads_mapped.bam > flagsbam.txt 2> flagstat_run.log
Лог опять пуст. В полученном txt-файле содержалась некоторая информация из исходного bam-файла:
78023950 + 0 in total (QC-passed reads + QC-failed reads) 0 + 0 secondary 69192 + 0 supplementary 0 + 0 duplicates 12054258 + 0 mapped (15.45% : N/A) 77954758 + 0 paired in sequencing 38977379 + 0 read1 38977379 + 0 read2 9037372 + 0 properly paired (11.59% : N/A) 10392818 + 0 with itself and mate mapped 1592248 + 0 singletons (2.04% : N/A) 0 + 0 with mate mapped to a different chr 0 + 0 with mate mapped to a different chr (mapQ>=5)
Можно видеть, что картированными на референс оказались 15.45% прочтений, при этом правильно картированы в парах были 11.59% прочтений. Вероятно, это связано с тем, что часто прочтение может картироваться на несколько участков референса, а правильно картированным чтение считается, только если оно было картировано рядом с парным ему чтением и они направлены навстречу друг другу.
Получение картированных чтений
Поскольку обрабатываемые прочтения были получены в результате полноэкзомного секвенирования, а картировались они на единственную четвёртую хромосому, далее требуется отделить правильно картированные прочтения. Сначала с целью узнать название хромосомы была использована команда:
samtools faidx chr4.fna
В полученном файле chr4.fna.fai значился, судя по всему, RefSeq AC референсной хромосомы: NC_000004.12. Для получения прочтений, картированных на хромосому, использовалась команда:
samtools view -h -bS reads_mapped.bam NC_000004.12 > reads_mapped_chr4.bam
Чтобы получить читаемую информацию из bam-файла, была выполнена команда:
samtools flagstat reads_mapped_chr4.bam > flags_mapped_chr4.txt
В выходном файле можно видеть следующее:
13646506 + 0 in total (QC-passed reads + QC-failed reads) 0 + 0 secondary 69192 + 0 supplementary 0 + 0 duplicates 12054258 + 0 mapped (88.33% : N/A) 13577314 + 0 paired in sequencing 6788657 + 0 read1 6788657 + 0 read2 9037372 + 0 properly paired (66.56% : N/A) 10392818 + 0 with itself and mate mapped 1592248 + 0 singletons (11.73% : N/A) 0 + 0 with mate mapped to a different chr 0 + 0 with mate mapped to a different chr (mapQ>=5)
Теперь картированы 88.33% прочтений, корректно картированы в парах - 66.56%. Оба значения примерно в 5.7 раза выше, чем для картированных прочтений всего экзома (15.45% и 11.59% соответственно). Далее необходимо выделить корректно картированные прочтения; для этого была использована следующая команда:
samtools view -f 0x2 -bS reads_mapped_chr4.bam > correct_mapped_chr4.bam
Затем, как обычно, применён samtools flagstat:
samtools flagstat correct_mapped_chr4.bam > flags_correct_chr4.txt
Содержимое полученного файла:
9039503 + 0 in total (QC-passed reads + QC-failed reads) 0 + 0 secondary 2131 + 0 supplementary 0 + 0 duplicates 9039503 + 0 mapped (100.00% : N/A) 9037372 + 0 paired in sequencing 4518686 + 0 read1 4518686 + 0 read2 9037372 + 0 properly paired (100.00% : N/A) 9037372 + 0 with itself and mate mapped 0 + 0 singletons (0.00% : N/A) 0 + 0 with mate mapped to a different chr 0 + 0 with mate mapped to a different chr (mapQ>=5)
Можно видеть, что в файле correct_mapped_chr4.bam остались только правильно картированные прочтения (100% от всех прочтений), в отличие от reads_mapped_chr4.bam, где ещё присутствовали как некорректно картированные прочтения, так и не картированные вовсе.
Наконец, полученный bam-файл был проиндексирован:
samtools index correct_mapped_chr4.bam
Подготовка выравнивания к поиску вариантов
Для этого требовалось маркировать дублированные прочтения. Была использована команда:
picard MarkDuplicates -M metrix.file.txt -I correct_mapped_chr4.bam -O correct_markd.bam &> picard_run.log
Лог-файл доступен здесь.
Далее - flagstat:
samtools flagstat correct_markd.bam > flags_markd.txt
Содержимое flags_markd.txt:
9039503 + 0 in total (QC-passed reads + QC-failed reads) 0 + 0 secondary 2131 + 0 supplementary 495290 + 0 duplicates 9039503 + 0 mapped (100.00% : N/A) 9037372 + 0 paired in sequencing 4518686 + 0 read1 4518686 + 0 read2 9037372 + 0 properly paired (100.00% : N/A) 9037372 + 0 with itself and mate mapped 0 + 0 singletons (0.00% : N/A) 0 + 0 with mate mapped to a different chr 0 + 0 with mate mapped to a different chr (mapQ>=5)
По-видимому, было найдено 495 290 дублированных прочтений.