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

Поиск вариантов

Задание 1: Получение вариантов

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

$ bcftools mpileup -f ../bwa/chr3.fna ../cartir/aln-se.mark.dupl.bam | bcftools call -mv -o vars.vcf

Внутри полученный vcf-файл выглядит таким образом:

Inner_vcf-file.png

Первые несколько строк начинаются с символа "#" и несут служебную информацию, объясняя версию программы, показывая использованную команду, приводя расшифорвки для используемых в теле файла сокращений. Само тело файла представляет из себя таблицу, в которой приведена различная информация о разного рода заменах в нашей сборке по сравнению с референсом.

Далее проанализируем полученный нами vcf-файл:

$ bcftools stats vars.vcf > vars.vcf.stats

Задание 2: Фильтрация вариантов

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

$ bcftools filter -i'%QUAL>30 && DP>50' vars.vcf > vars_filtered.vcf

В нашей ситуации мы отфильтровали наши варианты по качеству (QUAL) и по количеству чтений, которые наш вариант покрывают (DP).

Проанализируем получившийся файл с отфильтрованными вариантами:

$ bcftools stats vars_filtered.vcf > vars_filtered.vcf.stats

Как мы можем заметить, количество вариантов что в общем, что в частных случаях SNP и инделей, уменьшилось, причём почти в 20 раз, и при этом доли SNP и инделей в общем количестве вариантов также изменились: доля SNP стала больше, а доля инделей - меньше. Уменьшение количества вариантов довольно чётко говорит нам о том, что фильтрация прошла успешно, так как большая часть вариантов (93.93%) отсеялась по нашим довольно жёстким критериям.

Задание 3: Изучение покрытия

У нас есть небольшая проблема - мы не знаем нашего таргета. Исходя из этого, поступим следующим образом: найдем покрытые участки, отберем участки с хорошим покрытием и такие участки [с хорошим покрытием] и будем считать таргетом, а после проанализируем их.

Сначала найдём в принципе покрытые участки. Воспользуемся для этого инструментами bedtools:

$ bedtools genomecov -ibam ../cartir/aln-se.mark.dupl.bam -bg > aln-se_cov.bed

Внутри полученный файл aln-se_cov.bed устроен таким образом:

Inner_bedgraph.png

То есть, у нас каждая строчка представлена так: имя хромосомы, координаты полученного после разбиения участка (через табулятор, 2 штуки: первая и последняя) и покрытие (кол-во ридов, которые покрывают этот участок) этого участка (как я понял, каждого нуклеотида в участке).

Далее я отберу такие участки генома, которые покрыты более 50 раз:

$ awk '{if($4 > 50) {print $1"\t"$2"\t"$3"\t"$4}}' aln-se_cov.bed > aln-se_cov50.bed

Посчитаю количество строк в получившемся файле:

$ wc -l aln-se_cov50.bed
1624352 aln-se_cov50.bed

И попробую найти варианты, которые попали в хорошо покрытые участки:

$ bedtools intersect -a vars_filtered.vcf -b aln-se_cov50.bed > vars_cov50.vcf

Отлично, получилось! Варианты, находящиеся на участках с прекрасным покрытием найдены! =)