1. Картирование чтений на референсный геном
В данном практикуме необходимо было провести картирование почищенных геномов. Картируем только парные, так как из прошлого практикума стало понятно, что в непарных просто отвратительное качество. Используемая команда:
bwa men -t 10 chr8.fna /mnt/scratch/NGS/vitbuev/bwa/chr8.fna /mnt/scratch/NGS/vitbuev/dna_reads/dna_f_p.fastq.gz /mnt/scratch/NGS/vitbuev/dna_reads/dna_r_p.fastq.gz > dna.sam 2> dna.txt
(log)
Для исполнения команды я задействовал 10 ядер, в команде указан референсный файл и 2 последовательности. Выход был перенаправлен в файл dna.sam, также был создан лог-файл с ошибками.
2. Анализ sam файла с выравниванием
Формат SAM (англ. Sequence Alignment Map) — это текстовый формат для хранения биологических последовательностей, выровненных по эталонной последовательности, также называемой референсной.
SAM-файл может содержать заголовок, строки которого всегда начинаются с символа «@», за которым следует один из двухбуквенных кодов типа заголовка. В заголовке каждая строка разделена символом табуляции, и, кроме строк @CO, каждое поле данных соответствует формату тэг: значение, где тэг представляет собой двухсимвольную строку, которая определяет формат и содержимое значения.
Разделы выравнивания содержат 11 обязательных полей и некоторое количество дополнительных. При помощи команды head
были просмотрены первые 10 строк файла dna.sam
(ссылка)
@SQ SN:NC_000008.11 LN:145138636 @PG ID:bwa PN:bwa VN:0.7.17-r1188 CL:bwa mem -t 10 ../bwa/chr8.fna ../12pr/dna_f_p.fastq.gz ../12pr/dna_r_p.fastq.gz SRR10720414.1 77 * 0 0 * * 0 0 GAAGAAATCTGATGGTGNNNNNNANNNTCCANNNNNTGACNNNNNNNNNTCCAGTCAGATTGCTCAGGACCATCA FHIIIHDIIIIIIGI8@######1###5>>8#####3<7;#########7>?776IIIDFHIIHIIIIIHIIDIH AS:i:0 XS:i:0 SRR10720414.1 141 * 0 0 * * 0 0 CAAAATCATGTCTACATAAAAAATNNNNCATTTAGTTGCTAGAGAACCCTAAAAGATGTGTTCAT HDGFHHHGHHHHHHHHHHHH1100####<4>><5;HHHHHGGGFFGGGGGDGDGGDDGBGFHHHH AS:i:0 XS:i:0 SRR10720414.2 77 * 0 0 * * 0 0 TTTGCAGTGTTTCCCNANNNNNNNNNNTGCCNNNNNATCANNNNNNNNNATCTTCTGCCTTTTCTTTCNTTCATT IIIDIIIIIIDDDEE#?##########6>?8#####<75;#########<<:<;;IIIGIFFHHI>>=#BAA?AB AS:i:0 XS:i:0 SRR10720414.2 141 * 0 0 * * 0 0 AATGTTTTCCCTTAGCCAATGCCCNNNNATAAGTGAACTTACCTTGGTCTTTGCTGACTCCTCCC HIHIIIHIIIIHIIGIIIHI=@B@####<99:469HIIIIGHIHIHGEIHIDDIIFFIFHHFGGI AS:i:0 XS:i:0 SRR10720414.3 77 * 0 0 * * 0 0 CATGTTTTTACTCATAANNNNNNGNNNACAGNNNNNGAAANNNNNNNNNCGAATCCTCCACCGTCCCTTGCAATT IIIIIIIIIHIIIII>>######:###:<:<#####<7;<#########699799IIGGHHGIDIGHEGIIGEEG AS:i:0 XS:i:0 SRR10720414.3 141 * 0 0 * * 0 0 TTCCTCTAAATAAGGGAGATCTGTNNNNTTTTCTTCTTTTTGCTTAACTTCTTCAGACTTGTTGA IIIIIIIIIHIFIIIIHHII@=>9####:>>>8::IIIIIIHIIIFIIIIIIIHHIHIIIGHIHE AS:i:0 XS:i:0 SRR10720414.5 83 NC_000008.11 118928912 48 75M = 118928795 -192 TATTTCGCTCTGGGGTTCCTACGGAANNNNNNNNNCAATNNNNNACCTNNNCNNNNNNTCGTTTCCCAGCAGATG GGCGGGEGGGDIHIBIIBII666966#########6693#####,8>6###:######:BIIHHIIDIHIIIIHI NM:i:24 MD:Z:22A3A0A0T0A0C0C0A0A0G4T0T0A0G0T4T0C0T1C0T0C0A0A0A17 MC:Z:65M AS:i:24 XS:i:0 SRR10720414.5 163 NC_000008.11 118928795 60 65M = 118928912 192 CATTTCCTTTCTGAGTTAGCAGGANNNNAAAGACACTGCAATTTGTGTGTTTTCTACAGGGTGCT IHIIIIIIIIIIIIIIIIGI@@@;####<>84:GHII<>CEEEHICHEIIDIAIIGHID=GAD NM:i:4 MD:Z:24G0A0C0C37 MC:Z:75M AS:i:57 XS:i:20
Номер | Поле | Описание |
---|---|---|
1 | QNAME | Название рида (парным будет присвоено одинаковое) |
2 | FLAG | Представляет собой комбинацию нескольких бинарных флагов, обозначающих парность, картированность и т. д. |
3 | RNAME | Название референса |
4 | POS | Один минус самая левая позиция выравнивания |
5 | MAPQ | Качество маппинга. MAPQ = −10 log10P, где P - вероятность того, что выравнивание неверно |
6 | CIGAR | Описание выравнивания, в записи которого используется набор операций (совпадение, инсерция и др.) |
7 | RNEXT | Название референса пары |
8 | PNEXT | Позиция в референсе, которой соответствует начало пары. Аналогично четвёртому полю. |
9 | TLEN | Расстояние между крайними точками выравнивания |
10 | SEQ | Последовательность рида |
11 | QUAL | Качество в кодировке ASCII по шкале Phred+33 |
12 | TAGs | Специальные тэги, предназначенные для хранения информации о прочтении или выравнивании |
Используя команду ls -sh
, я узнал, что файл весит 16 Гб
3. Получение и индексирование bam файла
Чтобы не анализировать огромный SAM файл, я анализировал его бинарный эквивалент, так как он занимает меньше места и позволяет быстрее работать с информацией. Но он всё же бинарный, а значит прочитать его невозможно. Samtools позволяет эффективно работать с форматом BAM и извлекать необходимую информацию в человекочитаемом формате.
Итого, при помощи команды samtools sort -O bam -@ 10 dna.sam -o dna.bam
был получен bam файл.
-O bam отвечает за формат выходного файла, а -o - за файл выхода. Чтобы не ждать очень долго, количество ядер было задано "@", что существенно ускорило процесс. Файл весит 4.6 Гб.
Чтобы далее работать с bam файлом, надо его проиндексировать. Команда: samtools index -b -@ 10 dna.bam dna.bai
, где -b отвечает за формат файла.
4. Анализ bam файла
Как я уже упоминал, файл бинарен, а значит просто так его не проанализировать. Команда: samtools flagstat -@ 10 dna.bam > dna_binary.txt
(файл)
В файле находится 11.7% картированных чтений (правда не все из них картированы нормально, хорошо только 8.78%). Корректно откартировались чтения из одной пары, так как они должны картироваться недалеко друг от друга и должны быть направлены друг к другу. Число маленькое, но мы же картируем полногеномное секвенирование, картированное на одну из хромосом.
5. Получение картированных чтений
Чтобы получить чтения, картированные только на 8 хромосому, необходимо сначала проиндексировать файл: samtools faidx chr9.fna -o chr8.fai
.
Из файла .fai я узнал, что имя хромосомы - NC_000008.11.
Далее используем команды:
samtools view -h dna.bam NC_000008.11 > chr8.sam
samtools view -bS chr8.sam > chr8.bam
samtools flagstat -@ 10 dna.chr9.bam > chr8.txt
(файл)
Теперь имеем 87.12% картированных чтений, 65.65% корректно картированы. Видим, что процент картированых чтений сильно вырос, хоть и не получили 100%. Скорее всего, здесь дело в работе samtools.
Теперь получим только правильно картированые чтения при помощи команды samtools view -@ 10 -f 0x2 -bS chr8.bam > chr8_fixed.bam
, а затем посмотрим статистику samtools flagstat -@ 10 chr8_fixed.bam > chr8_fixed.txt
.
Как и ожидалось, получили 100% корректно картированных чтений, значит всё сделали правильно.
Как и в прошлый раз, осталось только проиндексировать файл samtools index -b -@ 10 chr8_fixed.bam chr8_fixed.bai
.
6. Подготовка выравнивания к поиску вариантов
picard MarkDuplicates -M metrix.txt -I chr8_fixed.bam -O markdup.bam
- маркировка дублированых чтений
samtools flagstat -@ 10 markdup.bam > markdup.txt
(файл). Всего 603736 дублированых чтений.
Далее идёт практикум 13. В нём необходимо было получить, отфильтровать и минимально исследовать варианты, а также поработать с покрытием.
1. Получение вариантов
При помощи bcftools: bcftools mpileup --threads 10 -f /mnt/scratch/NGS/vitbuev/bwa/chr8.fna /mnt/scratch/NGS/vitbuev/12pr/markdup.bam | bcftools call -mv -o chr8.vcf
был получен файл с вариантами. Mpileup
создаёт файл с расширение .vcf, в котором находятся частоты встречаемости вариантов во множественном выравнивании. -threads
как обычно задаёт количество ядер, -f
задаёт индексированный референс хромомосомы, а затем передаём всё на выход команде call
, которая и производит собственно вызов вариантов (эта команда заменяет старую view caller
и вроде даже уступает ей по функционалу), где m - multiallelic-caller, v - даёт нам на вывод только варианты, ну и o - собственно выход.
При помощи знакомой команды head -40
были рассмотрены первые 40 строчек файла.
##fileformat=VCFv4.2 ##FILTER=На месте прочерков стоят ещё строки INFO, но, раз на страничке это не отображается, то я их убрал. VCF формат предназначен для записи вариантов последовательностей. Сначала идут данные о файле, а затем таблица с вариантами, в которой представлено имя нашей хромосомы, ID варианта, референсный нуклеотид (если имеется), список аллельных вариантов и другое.##bcftoolsVersion=1.9+htslib-1.9 ##bcftoolsCommand=mpileup --threads 10 -f /mnt/scratch/NGS/vitbuev/bwa/chr8.fna /mnt/scratch/NGS/vitbuev/12pr/markdup.bam ##reference=file:///mnt/scratch/NGS/vitbuev/bwa/chr8.fna ##contig= ##ALT= ##INFO= --- ##FORMAT= ##FORMAT= --- ##INFO= ##bcftools_callVersion=1.9+htslib-1.9 ##bcftools_callCommand=call -mv -o chr8.vcf; Date=Mon Dec 21 20:53:29 2020 #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT /mnt/scratch/NGS/vitbuev/12pr/markdup.bam NC_000008.11 60089 . A AC 15.2883 . INDEL;IDV=2;IMF=0.666667;DP=3;VDB=0.131948;SGB=-0.453602;MQSB=1;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=0,1,1,1;MQ=50 GT:PL 0/1:48,0,25 NC_000008.11 60111 . A G 47.6405 . DP=4;VDB=0.5;SGB=-0.453602;RPB=1;MQB=1;MQSB=1;BQB=1;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=0,1,1,1;MQ=50 GT:PL 0/1:81,0,29 NC_000008.11 60119 . T G 47.721 . DP=5;VDB=0.52;SGB=-0.453602;RPB=1;MQB=1;MQSB=1;BQB=1;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=0,1,1,1;MQ=50 GT:PL 0/1:81,0,31 NC_000008.11 60129 . G A 25.3564 . DP=5;VDB=0.64;SGB=-0.453602;RPB=0.666667;MQB=1;MQSB=1;BQB=0.666667;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=1,2,0,2;MQ=41 GT:PL 0/1:58,0,80 NC_000008.11 60181 . G A 13.6078 . DP=3;VDB=0.28;SGB=-0.453602;MQSB=1;MQ0F=0;AC=2;AN=2;DP4=0,0,1,1;MQ=33 GT:PL 1/1:43,6,0 NC_000008.11 60323 . C G 55 . DP=7;VDB=0.703527;SGB=-0.556411;RPB=0.810265;MQB=0.607698;MQSB=1;BQB=0.810265;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=2,1,4,0;MQ=50 GT:PL 0/1:88,0,91 NC_000008.11 60345 . A G 136 . DP=11;VDB=0.311141;SGB=-0.616816;RPB=0.783809;MQB=0.727822;MQSB=0.523791;BQB=0.503877;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=1,3,4,2;MQ=53 GT:PL 0/1:169,0,106 NC_000008.11 60371 . C T 9.80985 . DP=13;VDB=0.154358;SGB=-0.511536;RPB=0.382304;MQB=0.857404;MQSB=0.506703;BQB=0.485672;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=4,5,1,2;MQ=54 GT:PL 0/1:44,0,211 NC_000008.11 60408 . G A 105 . DP=9;VDB=0.551573;SGB=-0.616816;RPB=0.346719;MQB=0.346719;MQSB=0.89338;BQB=0.924584;MQ0F=0.111111;ICB=1;HOB=0.5;AC=1;AN=2;DP4=1,2,3,3;MQ=45 GT:PL 0/1:138,0,85 NC_000008.11 60422 . C T 158 . DP=8;VDB=0.410943;SGB=-0.636426;MQSB=1.01283;MQ0F=0.125;AC=2;AN=2;DP4=0,0,4,3;MQ=41 GT:PL 1/1:188,21,0 NC_000008.11 60460 . A G 24.316 . DP=9;VDB=0.220755;SGB=-0.511536;RPB=0.28717;MQB=0.28717;MQSB=0.5;BQB=0.28717;MQ0F=0;ICB=1;HOB=0.5;AC=1;AN=2;DP4=1,2,1,2;MQ=39 GT:PL 0/1:57,0,83
При помощи команды bcftools stats chr8.vcf > chr8_stats.txt
была получена статистика (файл).
Получили 342714 вариантов, из которых 336648 - однонуклеотидные замены, а 6066 - индели.
2. Фильтрация вариантов
Проведём фильтрацию по качеству больше 30 и по покрытию больше 50. Команда bcftools filter -i'%QUAL>30 && DP>50' chr8.vcf >chr8_filtered.vcf
, а затем посмотрим статистику
bcftools stats chr8_filtered.vcf > chr8_filtered_stats.txt
(файл). "Выжили" только 19758 вариантов, из которых 19512 - SNP, а 246 - индели.
3. Изучение покрытия
Теперь посмотрим на участки генома покрытые нашими чтениями хотя бы 1 раз. Команда: bedtools genomecov -bg -ibam ../12pr/markdup.bam > genomecov.bed
, где параметр -bg
отвечает за выход файла в формате BedGraph. В конечном файле есть таблица из 4 колонок, в которой присутсвуют название хромосомы (референса), начало и конец варианта и покрытие.
Теперь отфильтруем файл при помощи awk
: awk '$4 > 50' genomecov.bed >genomecov_50.bed
. В данном файле 1121075 срок.
Найдём варианты, попавшие в хорошо покрытые участки: bedtools intersect -a chr8_filtered.vcf -b genomecov.bed > final.txt
. (файл) В данном файле всего 20406 строк.