понедельник, 13 июня 2016 г.

Парадигма картирования seed-and-vote: итоговые файлы в формате BAM.

Формат BAM (акроним от англ. Binary Alignment/Map) является бинарной (двоичной) версией формата SAM, описанного в разделе “Парадигма картирования seed-and-vote: итоговые файлы в формате SAM”. Именно в таком формате, как правило, и сохраняются результаты картирования ридов, так как данный формат имеет ряд преимуществ.
Во-первых, поскольку BAM файлы бинарны, то их чтение, загрузка в оперативную память и обработка происходят значительно быстрее, чем файлов в формате SAM, являющихся, фактически, текстовыми.
Во-вторых, при записи BAM файлов используется сжатие BGZF, что позволяет существенно экономить дисковое пространство. Так, SAM файл, сгенерированный при картировании 90 млн. ридов, занимает около 25,5 Гб дискового пространства, а его бинарная версия после сжатия BGZF около 5,5 Гб. BGZF формат является расширением стандартного GZIP формата сжатия файлов. Файл в формате BGZF состоит из серии каскадных блоков данных. Каждый блок данных имеет размер не более 64 Кб, он организован в соответствии с v.4.3 формата GZIP и содержит дополнительное поле, через которое возможет рандомный доступ к такому блоку.
В-третьих, разработано ряд эффективных алгоритмов индексации BAM файлов. Перед индексацией все строки раздела “Картирование” BAM файла сортируются по названию референс-последовательности и крайней левой координате рида в этой последовательности. Далее эти строки разбиваются по группам или бинам (англ. bins). Каждый бин представляет собой один непрерывный регион референс-последовательности, который либо совершенно не перекрывается с иными регионами, либо целиком входит в состав другого региона. Информация о бинах и картированиях, которые с ними ассоциированы, записывается в отдельном файле формата BAI. Если BAM файл индексирован, то отпадает необходимость загружать в оперативную память компьютера весь массив данных, хранящихся в файле, в поисках ридов, картированных по интересующей нас области генома. В этом случае сначала будет идти обращение к файлу BAI, поиск там необходимого бина (или бинов, если целевая область генома перекрыта несколькими бинами) и извлечение из него значений QNAME. Далее по значениям QNAME будет вестись поиск и извлечение нужной информации уже из BAM файла, что полностью допускается форматом сжатия BGZF. Таким образом, благодаря BGZF сжатию BAM файлы получаются компактными, а благодаря индексации и опции рандомного доступа к отдельным блокам из таких файлов могут быть извлечены только необходимые массивы данных без загрузки всего файла.
В-четвертых, разработано ряд готовых к использованию и свободно распространяемых программ, позволяющих проводить парсинг (разбор) BAM файлов. Для формата SAM готовые решения также существуют, но они существенно ограничены по своим возможностям. Так, для просмотра BAM файла и извлечения из него нужных полей можно воспользоваться специализированной функцией scanBAM() из R/Bioconductor библиотеки Rsamtools. Что бы сделать то же самое с файлом SAM, можно воспользоваться базовой R функцией scan(), но она не является специализированной и вся дальнейшая работа с данными усложняется по сравнению с функцией scanBAM().
Как уже обсуждалось в разделе “Парадигма картирования seed-and-vote: глобальное картирование RNA-seq ридов” функция subjunc, используемая одноименным элайнером для проведения глобального картирования ридов, имеет аргумент output_format. Этот аргумент задает формат файла, в котором будут записаны картированные риды. Аргумент может принимать два значения – BAM (по умолчанию) и SAM. Если по какой-то причине изначально был выбран формат SAM, а для последующего анализа нужен формат BAM, то нет никакой необходимости в повторном картировании ридов, так как эти форматы легко конвертируются друг в друга. Одним из самых простых и эффективных способов такой конвертации является использование функций asBam() и asSam() из R/Bioconductor библиотеки Rsamtools. Ниже представлен простейший код для проведения таких конвертаций.

rm(list ls())
setwd("/media/gvv/NGS_Illumina_MiSeq/Files_BAM")
library(Rsamtools)
asBam(file = "SRR1145838.sam", destination = "SRR1145838", overwrite = FALSE, indexDestination = TRUE)
asSam(file = "SRR1145838.bam", destination = "SRR1145838", overwrite = TRUE)

У этих функций максимум четыре аргумента.
q file – название файла, формат которого должен быть конвертирован (с указанием пути и папки, где находится такой файл, если эта папка не является рабочей).
q destination – название конечного файла (и путь к нему, если он не находится в рабочей папке), без указания на его расширение.
q overwrite – логический аргумент, позволяющий перезаписать конечный файл. Если файл с названием, указанным с помощью аргумента destination, существует, а аргументу overwrite присвоено значение FALSE, то будет возвращена ошибка
Error in .local(file, destination, ...):
  'destination' exists, 'overwrite' is FALSE
  destination: SRR1145838.sam
q indexDestination – логический аргумент, позволяющий одновременно с конвертацией создавать файл с индексами. Этот файл будет иметь тоже название, что и основной файл, но с расширением .bai. Аргумент есть только у функции asBam().
Конверсия SAM файла в BAM сопровождается переименованием полей в соответствии с ниже представленной таблицей:

BAM спецификация
SAM спецификация
qname
QNAME
flag
FLAG
rname
RNAME
strand
цепь, по которой картирован рид
pos
POS
qwidth
длина рида, которая рассчитывается из соответствующего значения поля CIGAR
mapq
MAPQ
cigar
CIGAR
mrnm
RNEXT
mpos
PNEXT
isize
TLEN
seq
SEQ; если рид картирован по минус цепи, то в BAM файл записывается его обратная комплементарная последовательность
qual
QUAL
groupid
целочисленный вектор уникальных идентификаторов групп записей
mate_status
статус каждой записи (связана с другой записью, не связана с какой-либо другой записью, статут неопределен)


Комментариев нет:

Отправить комментарий