SAMtools | |
---|---|
Тип | Биоинформатика |
Автор | Хенг Ли |
Разработчик | John Marshall, Petr Danecek и др. [1] |
Написана на | Си[2] |
Операционная система | UNIX |
Языки интерфейса | C |
Первый выпуск | 2009 |
Последняя версия | 1.8 (2015-02-02) |
Читаемые форматы файлов | Sequence Alignment/Map[d][3], FASTA (формат)[3] и Variant Call Format[d][3] |
Создаваемые форматы файлов | Sequence Alignment/Map[d] |
Лицензия | MIT |
Сайт | htslib.org |
SAMtools — это набор утилит для обработки коротких фрагментов секвенированной ДНК в форматах SAM или BAM. Автор SAMtools — китайский биоинформатик Хенг Ли, который является также автором спецификаций форматов SAM и BAM. В настоящее время ведущими разработчиками SAMtools являются Petr Danecek[4] и John Marshall[5].
В текстовом файле формата SAM представлена информация о выравнивании фрагментов ДНК (которые также называются прочтениями или ридами) на некоторую последовательность (которая также называется референсной). Чаще всего SAM получают в результате картирования прочтений из файла FASTQ на последовательность референсного генома. Одно выравнивание состоит из нескольких строк, каждая из которых — выравнивание одного сегмента. Строка включает 11 обязательных полей, содержащих такую информацию, как позиция и качество выравнивания, направление прочтения, указание на парное прочтение и др. Кроме того, возможно указание ряда необязательных полей в виде тэг: тип: значение.
SAM-файл также может содержать заголовок в начале файла. В нём приводится общая информация о файле, в том числе использованная для выравнивания программа и указание на то, отсортирован ли файл. Строки заголовка начинаются со знака «@».
Формат BAM представляет собой бинарный эквивалент SAM. BAM занимает меньше места и позволяет быстрее работать с информацией, чем SAM. Однако только файлы SAM доступны для чтения как текстовые файлы. Samtools позволяет эффективно работать с форматом BAM и извлекать необходимую информацию в человекочитаемом формате.
Формат CRAM являются ещё более эффективными с точки зрения занимаемого дискового пространства, чем файлы BAM. В CRAM-файле хранятся отличия прочтений от референсной последовательности, поэтому для работы с ним необходимо наличие файла с референсным геномом. Спецификация[6] формата разработана в Европейском институте биоинформатики. Samtools позволяет выполнять конвертацию между форматами SAM, BAM и CRAM.
Спецификацию[7] формата SAM можно найти в репозитории SAMtools[8]. Ниже рассмотрено выравнивание парных ридов в формате SAM и описание полей.
r001 99 ref 7 30 8M2I4M1D3M = 37 39 TTAGATAAAGGATACTG * r001 147 ref 37 30 9M = 7 -39 CAGCGGCAT * NM:i:1
Номер поля | Название поля | Комментарий |
---|---|---|
1 | Название рида | Одинаковые названия даются ридам, прочитанным по одной матрице, например парным ридам. |
2 | Флаг | Представляет собой комбинацию нескольких бинарных флагов, обозначающих парность, картированность и т. д. Так, флаг 99 (в шестнадцатеричной системе — 0x63) является комбинацией битов 0x1, 0x2, 0x20 и 0x40, что в совокупности даёт следующую информацию о прочтении: это первый рид из пары, для каждого рида пары есть выравнивание, пара данного рида — в обратной ориентации. |
3 | Название референса | Название референса должно присутствовать в одной из строк заголовка, начинающихся с @SQ, если такие строки в файле присутствуют. |
4 | Самая левая позиция выравнивания | Позиция в референсе, которой соответствует начало прочтения. Позиции в референсе нумеруются с 1. Для некартированного рида значение этого поля, как правило, равно нулю. (Спецификация формата, однако, допускает отличное от нуля значение для некартированного рида, что может быть полезным, например, при сортировке ридов по координате.) |
5 | MAPQ | По определению, значение MAPQ равно −10 log10 P, округлённому до целого числа, где P есть вероятность того, что выравнивание неверно. Так, если MAPQ = 30, то P = 0,001. |
6 | CIGAR | Описание выравнивания, в записи которого используется набор операций (совпадение, инсерция и др.). Например, строка 8M2I4M1D3M означает: 8 совпадений с референсом, 2 инсерции, 4 совпадения, 1 делеция, 3 совпадения. |
7 | Название референса пары | Название референса для пары должно присутствовать в одной из строк заголовка, начинающихся с @SQ, если такие строки в файле присутствуют. Если референс пары совпадает с референсом данного рида, то значение поля равно =, а при отсутствии информации о референсе пары — * (например, прочтение может быть одиночным). |
8 | Начало выравнивания пары | Позиция в референсе, которой соответствует начало пары. Аналогично четвёртому полю. |
9 | Расстояние между крайними точками выравнивания | Максимальное расстояние по референсу. При этом в случае парного выравнивания это значение положительное для левого (по референсу) рида и отрицательное для правого. Для одиночных прочтений значение равно нулю. |
10 | Последовательность рида | Регистр букв не имеет значения. |
11 | Качество | Может записываться в формате Phred+33. Если информация отсутствует, то указывается знак *. |
Опциональные поля должны соответствовать формату двухбуквенный тэг: тип: значение. Например, NH:i:1
указывает число выравниваний в файле для данного прочтения как целочисленную величину, равную единице. Некоторые другие распространённые теги:
10A5^AC6’
означает 10 совпадений с референсом → A в референсе, отличное от нуклеотида в соответствующей позиции прочтения → 5 совпадений → делеция (отсутствие в прочтении) двух нуклеотидов — AC → 6 совпадений;Опциональные поля, теги которых начинаются с X, Y или Z, зарезервированы для использования различными программами и непосредственно пользователями.
SAMtools предназначен для работы с потоком данных. Каждая программа вызывается отдельной командой, принимает входной файл через стандартный поток ввода (stdin) и возвращает результат через стандартный поток вывода (stdout). Предупреждения и сообщения об ошибках выводятся в стандартный поток ошибок (stderr). Команды samtools могут быть скобинированы в конвейеры с другими Unix-командами.[9]
По умолчанию поток вывода направляется на экран. Так как он может быть громоздким и сложным, используется перенаправление вывода в файл (> и >>) или следующей команде в конвейере (|).
SAMtools также может открывать BAM-файлы через FTP или HTTP.
Некоторые команды поддерживают многопоточность.
Для многих команд важно явное указание референсных последовательностей в заголовке файла (поле @SQ). Кроме того, большинство команд samtools работают только с сортированными файлами и выдают ошибку при вызове с несортированным файлом.
SAMtools написан на C и может быть использован через API. Существуют обёртки для других языков программирования:
Стоит отметить, что существуют независимые программы для работы с форматами SAM и BAM, написанные на других языках:
Вызов команд осуществляется в виде «samtools название_команды». Далее указываются опции вызова и необходимые файлы (если файл не был передан через конвейер).
samtools view sample.bam > sample.sam
samtools view -bS sample.sam > sample.bam
samtools view -bT ref.fa sample.sam > sample.bam
samtools view -C -T ref.fa sample.bam > sample.cram
samtools view sample_sorted.bam chr1:10-13
samtools view -h -b sample_sorted.bam chr1:10-13 > tiny_sorted.bam
samtools faidx ref.fa
samtools view -bt ref.fa.fai sample.sam > sample.bam
samtools tview sample_sorted.bam ref.fasta
samtools sort -T /tmp/sample_sorted -o sample_sorted.bam aln.bam
samtools sort unsorted_in.bam sorted_out
samtools index sorted.bam
samtools merge out.bam in1.bam in2.bam in3.bam
samtools idxstats sorted.bam
samtools mpileup -gf ref.fasta -r chr3:1,000-2,000 in1.bam in2.bam
samtools rmdup -s sorted.bam sorted_nodup.bam
samtools fixmate in.namesorted.sam out.bam
samtools flags PAIRED,UNMAP,MUNMAP
samtools bam2fq input.bam > output.fastq
Преобразование SAM в отсортированный BAM:
samtools view -bS sample.sam | samtools sort - file_sorted
Извлечение только картированных прочтений:
samtools view -h -F 4 -b sample.bam > sample_only_mapped.bam
Извлечь только первые картирования из пар можно с помощью фильтрации по соответствующему флагу:
samtools view -h -f 0x0040 sample.bam > sample_first_pair.sam
Случайное семплирование файла, или выбор случайных прочтений, можно произвести с помощью параметра -s команды view. Параметр имеет формат числа с плавающей точкой, причём до точки указывается зерно генератора случайных чисел, а после точки — доля прочтений исходного файла, определяющая объём результата:
samtools view -s 0.5 -b sample.bam > random_half_of_file.bam
Подсчет всех прочтений:
samtools idxstats in.bam | awk '{s+=$3+$4} END {print s}'
Подсчет только картированных прочтений:
samtools idxstats in.bam | awk '{s+=$3} END {print s}'
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .