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

В качестве референсной последовательности, на которую картировались исследуемые чтения, использовалась хромосома 8 H. sapiens.
Все причастные файлы находятся в рабочей директории /nfs/srv/databases/ngs/ stepan_puhov/pr11 в соответствующих поддиректориях. Для точности описания команд указывается, в каких директориях производился их запуск.


Подготовка референса

Для картирования ридов референсная последовательность индексируется.
Индекс последовательности - сжатый формат последовательности, по которому можно быстро проводить поиск подпоследовательностей.

Для индексирования референса была использована программа hisat2-build:
Команда: (в директории reference) hisat2-build chr8.fasta chr8
Вывод программы: 8 файлов вида сhr8.<file number>.ht2, вместе составляющие индекс референсной последовательности


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

Для оценки качества чтений была использована программа FastQC:
Команда: (в директории reads) fastqc --extract chr8.fastq
Вывод программы: страница с отчётом

Из первого раздела отчёта FastQC видно, что имеется всего 8367 чтений, из которых ни одно не помечено как "чтение плохого качества" и длина которых составляет от 34 nt до 100 nt, кодировка качества определена как Phred+33 (Sanger/Illumina 1.9).
Несмотря на большой размах длин, из раздела "Sequence length distribution" отчёта видно, что практически все чтения всё же имеют длину 100 nt, однако раздел выдаёт предупреждение (выдаётся, если не все чтения одной длины) из-за наличия чтений меньшей длины (видимо, в очень малом количестве):

В разделе "Per base sequence quality" отчёта представлена диаграмма типа boxplot распределения качества определения нуклеотида для каждой позиции в чтении: поскольку максимальная длина чтения − 100 nt, показано 100 позиций, для каждой позиции жёлтый прямоугольник представляет интерквартильный интервал качества, усы − квантиль уровня 0.1 и квантиль уровня 0.9, красная полоса − медиану качества, синяя линия − ожидаемое качество.
Видно, что большинство имеют хорошее или приемлимое качество на всём своём протяжении, хотя ближе к 3'-концу оно несколько ухудшается: вплоть до 78 nt в 90% случаев определение выбранного нуклеотида будет иметь хорошее качество (Q > 28) и, только начиная примерно с 97 nt, доля случаев, в которых выбранный нуклеотид определяется с плохим качеством (Q < 20), начинает превышать 10%:


Очистка чтений и повторный контроль их качества

Для очистки чтений с их 3'-конца были удалены все нуклеотиды, качество которых ниже 20, и после оставлены только чтения с длиной не менее 50 nt, была использована программа Trimmomatic:
Команда: (в директории reads) java -jar /nfs/srv/databases/ngs/suvorova/trimmomatic/ trimmomatic-0.30.jar SE -phred33 chr8.fastq chr8_trimmed.fastq TRAILING:20 MINLEN:50
Вывод программы: файл с очищенными чтениями chr8_trimmed.fastq и отчёт о работе, выданный в stder

Далее был проведён повторный контроль качества чтений программой FastQC:
Команда: (в директории reads) fastqc --extract chr8_trimmed.fastq
Вывод программы: страница с отчётом

Из отчёта Trimmomatic видно, что после триммирования осталось всего 8227 чтений, при этом было удалено 140 чтений (1.67%).
Из анализа FastQC видно, что теперь все чтения имеют длину от 50 nt до 100 nt, то есть, видимо, изначально существовали короткие чтения разной длины, в том числе и более 50 nt, в разделе "Sequence length distribution" теперь заметны чтения длиной от 90 nt:

В разделе "Per base sequence quality" можно видеть, что качество определения нуклеотидов улучшилось для всех позиций чтений, произошло это из-за удаления или триммирования коротких чтений, которые могли несколько ухудшать качество в начальных и средних позициях; теперь качество определения нуклеотидов хорошее практически во всех случаях для позиций до 97 nt, в остальных позициях качество хорошее чуть больше, чем в 75% случаев:

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


Картирование чтений и анализ выравнивания

Картирование триммированных чтений на индексированную референсную последовательность было осуществлено программой hisat2:
Команда: (в директории alignments) hisat2 --no-softclip --no-spliced-alignment --summary-file mapping_report.txt -x ../reference/chr8 -U ../reads/chr8_trimmed.fastq -S chr8.sam
Вывод программы: SAM-файл с картированными чтениями chr8.sam и отчёт картирования

Из отчёта картирования программы hisat2 видно, что из 8227 данных программе чтений 30 не картировались, а все остальные 8197 чтений картировались ровно 1 раз, таким образом было картировано 99.64% чтений.
Программа samtools flagstat (команда samtools flagstat chr8.sam) выдала отчёт, где все 8227 чтений и, соответственно, 8197 картированных чтений отмечены как прошедшие проверку качества. При быстром просмотре получившегося SAM-файла видно, что практически все чтения имеют mapping quality = 60 − очень высокое качество (вероятность ошибки в координате картирования равна 10-6). Можно заключить, что картирование имеет высокое качество.

Далее SAM-файл был переведён в индексированный отсортированный BAM-файл с помощью программ Samtools (все команды в директории alignments):

  1. Перевод в BAM-формат: samtools view -b -o chr8.bam chr8.sam
  2. Сортировка BAM-файла по координатам картирования: samtools sort chr8.bam chr8_sorted, выдача: chr8_sorted.bam
  3. Индексирование отсортированного BAM-файла: samtools index chr8_sorted.bam, выдача: chr8_sorted.bam.bai


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

Для поиска отличий картированных чтений от референса был создан файл формата bcf с помощью samtools mpileup:
Команда: (в директории polymorph) samtools mpileup -u -f ../reference/chr8.fasta -o chr8.bcf ../alignments/chr8_sorted.bam
Вывод программы: бинарный файл chr8.bcf с отличиями картированных чтений от референса

Файл формата bcf был переведён в файл формата vcf с помощью bcftools call:
Команда: (в директории polymorph) bcftools call -cv -o chr8.vcf chr8.bcf
Вывод программы: текстовый файл chr8.vcf с отличиями картированных чтений от референса

Из полученного vcf файла видно, что исследуемый образец несёт всего 100 полиморфизмов, из которых 5 инделей и 95 snp.
Описание 3 из этих полиморфизмов:

Полиморфизм 1Полиморфизм 2Полиморфизм 3
Координата2745478527464081116424270
Тип полиморфизмаделецияsnpинсерция
Последовательность в референсеTAATGAACA
Последовательность в чтенияхTAATAC
Глубина покрытия в этом месте51728
Качество чтений в этом месте58.4663111.00857.456


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

Среднее значениеМинимальное значениеПервый квартильМедианаВторой квартильМаксимальное значение
Качество чтений66.056373.016187.7999311.34290113.37025225.00900
Глубина покрытия14.8711216.25134


Аннотация snp

Для аннотации snp файл формата bcf, содержащий отличия картированных чтений от референса, был переведён в формат vcf без учёта инделей с помощью bcftools call:
Команда: (в директории polymorph) bcftools call -cv -V indels -o chr8_snp.vcf chr8.bcf
Вывод программы: файл chr8_snp.vcf, содержащий только однонуклеотидные замены

Далее полученный vcf файл с snp был переведён в формат, подходящий для программы аннотации ANNOVAR, с помощью convert2annovar.pl:
Команда: (в директории polymorph) convert2annovar.pl -format vcf4 chr8_snp.vcf -outfile snp.avinput
Вывод программы: файл snp.avinput, пригодный для работы программы аннотации


Однонуклеотидные полиморфизмы из файла snp.avinput были аннотированы по 5 базам данных с помощью annotate_variation.pl:

  • Аннотация, основанная на генной разметке, по базе refgene:
    annotate_variation.pl -dbtype refGene -buildver hg19 -out refgene/snp_refgene snp.avinput /nfs/srv/databases/annovar/humandb.old

  • Аннотация, основанная на фильтрации, по базе dbsnp:
    annotate_variation.pl -filter -dbtype snp138 -buildver hg19 -out dbsnp/snp_dbsnp snp.avinput /nfs/srv/databases/annovar/humandb.old

  • Аннотация, основанная на фильтрации, по базе 1000 genomes:
    annotate_variation.pl -filter -dbtype 1000g2014oct_all -buildver hg19 -out 1000genomes/snp_1000genomes snp.avinput /nfs/srv/databases/annovar/humandb.old

  • Аннотация, основаная на разметке регионов генома, по базе GWAS:
    annotate_variation.pl -regionanno -dbtype gwasCatalog -buildver hg19 -out gwas/snp_gwas snp.avinput /nfs/srv/databases/annovar/humandb.old

  • Аннотация, основанная на фильтрации, по базе Clinvar:
    annotate_variation.pl -filter -dbtype clinvar_20150629 -buildver hg19 -out clinvar/snp_clinvar snp.avinput /nfs/srv/databases/annovar/humandb.old


Из аннотации по базе refgene можно сделать следующие выводы:

  • База данных refgene вообще делит snp на 9 категорий: intergenic, intronic, exonic, UTR5, UTR3, ncRNA, splicing, upstream и downstream.
    snp исследуемого образца попали в только 4 категорий:

    КатегорияКоличество snp
    intergenic17
    intronic60
    exonic5
    UTR313
  • snp исследуемого образца попали в следующие 3 гена:

    Название генаКоличество snp
    CLU10
    HNF4G22
    TRPS146
  • snp исследуемого образца привели к следующим заменам в экзонах и белках (всего 5 замен в экзонах и 2 замены в белках):

    Координата на хромосомеГенЗамена в экзонеЗамена в белке
    27462481CLU
    (ген на комплементарной цепи по отношению к последовательности референса)
    T → Cсинонимичная
    (сохраняется His)
    76452313HNF4GG → ASer → Gln
    76468228HNF4GG → Aсинонимичная
    (сохраняется Leu)
    76468282HNF4GG → AMet → Ile
    116631902TRPS1
    (ген на комплементарной цепи по отношению к последовательности референса)
    G → Tсинонимичная
    (имеется 3 варианта сплайсинга, во всех случаях сохраняется Pro)

Из аннотации по базе dbsnp видно, что 77 snp исследуемого образца имеют rs.


Из аннотации по базе 1000 genomes можно сделать выводы о частоте найденных полиморфизмов. Некоторые полиморфизмы имели заявленную частоту равную 1, что кажется бессмысленным, для остальных были подсчитаны характеристики распределения:

Среднее значениеМинимальное значениеНижний квартильМедианаВерхний квартильМаксимальное значение
0.407220.004990.054810.513370.615410.79712

В целом, можно видеть большинство snp найденных достаточно распостранены в популяции; отдельно было подсчитано, что редких snp (частота < 0.005) было найдено всего 3.


Аннотация по базе GWAS показывает, что из 95 snp исследуемого образца 4 snp несут клиническое значение: 2 snp в интронах гена CLU ассоциированы с повышенным риском болезни Альцгеймера, 1 snp в 3'-UTR гена HNG4G влияет на уровнь мочевой кислоты и 1 snp в интроне гена TRPS1 ассоциирован с уровнем холестерола, связанного с липопротеинами высокой плотности.


Аннотация фильтрацией по базе Clinvar не даёт никаких результатов − все 95 snp не прошли критерии фильтрации.


Главная страница


© Степан Пухов

2019