Формат 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
|
статус каждой записи (связана с другой записью, не связана с какой-либо другой записью, статут неопределен)
|
Комментариев нет:
Отправить комментарий