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

Задание 1

Дано:

1. Чтения экзома, картирующиеся на участок хромосомы человека (chr3.fastq)

2. Хромосома человеческого генома (chr3.fasta)

Анализ качества чтений

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

fastqc chr3.fastq

В результате был получен архив (chr3_fastqc.zip), содержащий html-файл (chr3_fastqc.html), который, собственно, и представляет отчет.

В отчете содержится множество информации и графиков. График "Per base quality" приведен на рис.1.

Рис. 1. Качетво чтений до очистки (FastQC)


По оси OX - позиция нуклеоитда в риде (от 1 до 100), по оси OY - параметр качества. Чем выше показатель качества, тем меньше вероятность ошибки. Например, для значения параметра качества 30 вероятность ошибки равна 0,001(точность 99,9%). Желтые прмоугольники на графике отражают интерквантильный размах(разница между верхней и нижней квартилями), отходящие от них "усы" отражают размах между 10-й и 90-й процентилями. Кроме того, синяя линия отражает медиану, красная - среднее значение. Все поле графика разделено на 3 части (зеленого, желтого и красного цветов), по которому можно легко оценить качество рида.

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


Очистка чтений

С помощью программы Trimmomatic с конца каждого чтения быи отрезаны нуклеотиды с качеством ниже 20. Причем после данной процедуры были отсавлены только чтения длиной не меньше 50 нуклеотидов.

java -jar /usr/share/java/trimmomatic.jar SE -phred33 chr3.fastq outfile.fastq TRAILING:20 MINLEN:50

Функция TRAILING отрезает с конца рида нуклеотиды с качеством ниже заданного (в данном случае - ниже 20), а MINLEN задает минисальную длину рида, который необходимо оставить.

На рис.2 приведен график качества чтений после очистки.

Рис. 2.Качетво чтений после очистки (FastQC)

До очистки было 20932 последовательности и их длины лежали в диапазоне 30-100. После очистки осталось 20570 последовательностей с длинами 50-100.


Еще один график, содержащийся в отчете FastQC представлен на рис. 3 и 4. Он отражает распределение среднего качества среди чтений.

Рис. 3.Среднее качество среди чтений до очистки (FastQC)

Анализируя рис. 3 можно заключить, что до очистки большая часть ридов имеет качество >30. Однако имеются и риды, качество которых ниже 20. Их довольно мало, однако они все же есть. Но уже после очистки ридов с качеством ниже 20 уже нет, и это можно увидеть на рис. 4. Также можно заметить, что и после очистки большинство ридов имеет качество >30.

Рис. 4.Среднее качество среди чтений после очистки (FastQC)



Картирование чтений

С помощью программы BWA были откартированы очищенные чтения. BWA имеет 3 алгоритма: BWA-backtrack, BWA-SW и BWA-MEM. BWA-MEM - самый новый, рекомендован для картирования последовательностей с высоким качеством, благодаря чему работает более быстро и точно.

Сначала референсная последовательность была проиндексирована:

bwa index chr3.fasta

Далее было построено выравнивание прочтений и референса в формате .sam:

bwa mem chr3.fasta outfile.fastq > align.sam

Анализ выравнивания

Полученное выравнивание было проанализировано с помощью пакета samtools.

Сначала выравнивание чтений с референсом было переведено в бинарный формат .bam:

samtools view -b -o align.bam align.sam

Потом выравнивание чтений с референсом (получившийся после картирования .bam файл) было отсортировано по координате в референсе начала чтения:

samtools sort -T/tmp/align_sorted -o align_sorted.bam align.bam

После этого отсортированный .bam файл был проиндексирован и с помощью команды samtools idxstats было выяснено, сколько чтений откартировалось на геном:

samtools index align_sorted.bam
samtools idxstats align_sorted.bam

Оказалось, что 20569 чтений откартировалось на хромосому, Число чтений, не картированных на хромосому: 1.


С помощью команжы depth была вычислено покрытие для каждого из нуклеотидов (depth.txt):

  samtools depth   align_sorted.bam > depth.txt
  

Далее из этого списка был выбран один из нуклеотидов (его координата - 52721621, покрытие - 280) и с помощью геномного браузера NCBI для данной хромосомы (сборка генома hg19 был найден экзон, в котором находится этот нуклеотид. Координаты экзона: 52721518-52721631.

После этого были получены покрытия нуклеотидов этого экзона(depth_exon.txt):

  samtools depth -r chr3:52721518-52721631 align_sorted.bam  > depth_exon.txt
   

Среднее покрытие нуклеотидов данного экзона составило 218,2105.


Поиск SNP и инделей

Сначала был создан файл с полиморфизмами в формате .bcf:

 samtools mpileup -uf chr3.fasta align_sorted.bam > snp.bcf

Далее с помощью пакета bcftools был создан файл со списком отличий между референсом и чтениями в формате .vcf:

	bcftools call -cv snp.bcf > snp.vcf

В нем всего содержалось 235 полиморфизмов, из которых 18 инделей и 217 замен.

Координата Тип полиморфизма В референсе В чтениях Глубина покрытия Качество чтений
41939781 Замена G A 37 167.009
41996275 Замена A G 47 225.009
41923743 Делеция caaaa caa 5 129.467
Таблица 1. Описание полиморизмов из файла snp.vcf

У двух замен из табл.1 достаточно высокие показатели покрытия и качества, в отличие от делеции, покрытие которой составляет 5.


Аннотация SNP

Для анноттации SNP использовалась программа annovar. Поиск проводился по следующим базам данных: refgene, dbsnp, 1000 genomes, GWAS, Clinvar.

Программа annovar использует файлы в формате .avinput, поэтому сначала файл .vcf (только с snp, индели были удалены) был переведен в соответствующий формат:

perl /nfs/srv/databases/annovar/convert2annovar.pl -format vcf4 snp_only.vcf -outfile snp.avinput

После выполнения этой команды в файл snp.avinput было записано 217 SNP, из которых 121 транзиция и 96 трансверсий.

Далее полученные snp были проаннотированы с использованием различных баз данных:

perl /nfs/srv/databases/annovar/annotate_variation.pl -geneanno -dbtype refGene -buildver hg19 
snp.avinput -outfile snp_refgene /nfs/srv/databases/annovar/humandb/

perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype snp138 -buildver hg19 
snp.avinput -outfile snp_snp138 /nfs/srv/databases/annovar/humandb/

perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype 1000g2014oct_all -buildver hg19
 snp.avinput -outfile snp_1000g2014oct /nfs/srv/databases/annovar/humandb/

perl /nfs/srv/databases/annovar/annotate_variation.pl -regionanno -dbtype gwasCatalog -buildver hg19 
snp.avinput -outfile snp_gwas /nfs/srv/databases/annovar/humandb/

perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype clinvar_20150629 -buildver hg19 
snp.avinput -outfile snp_clinvar /nfs/srv/databases/annovar/humandb/


1. RefGene

После применения соответствующей команды было получены следующие файлы: snp_refgene.log (содержит информацию о процессе выполнения аннотации), snp_refgene.variant_function (содержит описание SNP), snp_refgene.exonic_variant_function (содержит описание SNP, попавших в экзоны). В файле, содержащем описание всех SNP имеется разделение SNP на несколько групп: входящие в интроны, экзоны, UTR5 и UTR3 области. Количество SNP, попавших в каждую из групп приведено в табл. 2.

Категория Количество SNP
exonic 13
intronic 198
UTR3 4
UTR5 2
Таблица 2.Категории SNP по базе данных RefSeq

Из всех SNP, 10 попало в ген ULK4, 3 - в ген FNDC3B.

2. dbSNP

В результате выполнения соответствующей команды было снова получено 3 файла: snp_snp138.log(содержит информацию о процессе выполнения аннотации), snp_snp138.hg19_snp138_dropped (содержит информацию об SNЗ, имеющих идентификатор в базе данных однонуклеотидных полиморфизмов - rs), snp_snp138.hg19_snp138_filtered (содержит SNP, не имеющих идентификаторов rs).

Таким образом было выяснено, что 178 SNP имеют rs идентиикатор, а 39 - не имеют.

3. 1000 genomes

Было получено 3 файла: snp_1000g_2014oct.log, snp_1000g_2014oct.hg19_ALL.sites.2014_10_dropped, snp_1000g_2014oct.hg19_ALL.sites.2014_10_filtered. Оказалось, что в этой базе аннотировано 175 SNP, а оставшиеся 42 SNP не аннотированы.

4. Gwas

Было получено 2 файла: snp_gwas.log, snp_gwas.hg19_gwasCatalog. Во втором файле содержалось 4 SNP, а так же признаки, с которыми они связаны: рост, артериальное давление, уровень адипонектина.

5. Clinvar

Было получено 3 файла: snp_clinvar.log, snp_clinvar.hg19_clinvar_20150629_dropped, snp_clinvar.hg19_clinvar_20150629_filtered. Оказалось, что все SNP попали в последний файл, то есть ни один из SNP не был аннотирован в этой базе данных.


Сводная таблица со аннотациями SNP по всем базам данных: snp.xlsx.


Ниже представлена сводная таблица со всеми командами, которые были использованы при выполнении данного задания.

Команда Пояснение
fastqc chr3.fastq Анализ качества чтений
java -jar /usr/share/java/trimmomatic.jar SE -phred33 chr3.fastq outfile.fastq TRAILING:20 MINLEN:50 Очистка чтений
bwa index chr3.fasta Индексирование референсной последовательности
bwa mem chr3.fasta outfile.fastq > align.sam Выравнивание очищенных чтений с проиндексированной референсной последовательностью
samtools view -b -o align.bam align.sam Перевод выравнивания в бинарный формат
samtools sort -T/tmp/align_sorted -o align_sorted.bam align.bam Сортировка выравнивания по координате начала чтения в референсной последовательности
samtools index align_sorted.bam Индексирование отсортированного файла
samtools idxstats align_sorted.bam Подсчет чтений, откартировавшихся на геном
samtools depth align_sorted.bam > depth.txt Вычисление покрытия для каждого из нуклеотидов
samtools depth -r chr3:52721518-52721631 align_sorted.bam > depth_exon.txt Получение покрытия для нуклеотидов одного из экзонов
samtools mpileup -uf chr3.fasta align_sorted.bam > snp.bcf Создание файла с полиморфизмами
bcftools call -cv snp.bcf > snp.vcf Создание файла с отличиями между референсом и чтениями
perl /nfs/srv/databases/annovar/convert2annovar.pl -format vcf4 snp_only.vcf -outfile snp.avinput Создание файла для annovar из .vcf файла
perl /nfs/srv/databases/annovar/annotate_variation.pl -geneanno -dbtype refGene -buildver hg19 snp.avinput -outfile snp_refgene /nfs/srv/databases/annovar/humandb/ Аннотация по базе данных RefGene
perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype snp138 -buildver hg19 snp.avinput -outfile snp_snp138 /nfs/srv/databases/annovar/humandb/ Аннотация по базе данных dbsnp
perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype 1000g2014oct_all -buildver hg19 snp.avinput -outfile snp_1000g2014oct /nfs/srv/databases/annovar/humandb/ Аннотация по базе данных 1000 genomes
perl /nfs/srv/databases/annovar/annotate_variation.pl -regionanno -dbtype gwasCatalog -buildver hg19 snp.avinput -outfile snp_gwas /nfs/srv/databases/annovar/humandb/ Аннотация по базе данных GWAS
perl /nfs/srv/databases/annovar/annotate_variation.pl -filter -dbtype clinvar_20150629 -buildver hg19 snp.avinput -outfile snp_clinvar /nfs/srv/databases/annovar/humandb/ Аннотация по базе данных Clinvar
Таблица 3.Команды, использованные при выполнении задания

© Васильева Елена, 2015