22.10.2021

SAMtools


SAMtools — это набор утилит для обработки коротких фрагментов секвенированной ДНК в форматах SAM или BAM. Автор SAMtools — китайский биоинформатик Хэн Ли, который является также автором спецификаций форматов SAM и BAM. В настоящее время ведущими разработчиками SAMtools являются Петр Данечек (чеш. Petr Daněček) и Джон Маршалл (англ. John Marshall).

Предпосылки создания

С появлением новых технологий секвенирования, таких как Illumina/Solexa, AB/SOLiD и Roche/454, было разработано множество новых инструментов выравнивания с целью реализовать эффективное картирование чтений на большие референсныепоследовательности, включая геном человека. Однако, эти инструменты генерируют выравнивания в разных форматах, что усложняет последующую обработку. Общий формат выравнивания, который поддерживает все типы последовательностей и инструменты для их выравнивания, создает четко определенный переход от выравнивания к последующему анализу, включающему поиск мутаций, генотипирование и сборку генома.

Формат Sequence Alignment/Map (SAM) предназначен для достижения этой цели. Он поддерживает одиночные и парные чтения, а также может комбинировать чтения разных типов, включая чтения цветового пространства AB/SOLiD. Этот формат предназначен для сведения в выравнивание наборов из 1011 или более пар оснований, что характерно для глубокого ресеквенирования одного человека.

SAMtools разработан специально для обработки выравниваний в формате SAM/BAM. Он может конвертировать из других форматов выравнивания, сортировать и объединять выравнивания, удалять дубликаты PCR, генерировать информацию по позициям в формате pileup, коллировать SNP и варианты коротких инделей, а также отображать выравнивания в текстовом средстве просмотра.

Принцип работы

SAMtools предназначен для работы с потоком данных. Каждая программа вызывается отдельной командой, принимает входной файл через стандартный поток ввода (stdin) и возвращает результат через стандартный поток вывода (stdout). Предупреждения и сообщения об ошибках выводятся в стандартный поток ошибок (stderr). Команды samtools могут быть скомбинированы в конвейеры с другими Unix-командами.

По умолчанию поток вывода направляется на экран. Так как он может быть громоздким и сложным, используется перенаправление вывода в файл (> и >>) или следующей команде в конвейере (|).

SAMtools также может открывать файлы BAM (но не SAM!) через FTP или HTTP.

SAMtools написан на C и может быть использован через API. Существуют обёртки для других языков программирования:

  • pysam для Python,
  • Bio-samtools для Ruby,
  • Bio-SamTools для Perl,
  • samtools для Haskell.

Стоит отметить, что существуют независимые программы для работы с форматами SAM и BAM, написанные на других языках:

  • BamTools для C++,
  • Picard для Java,
  • cl-sam для Common Lisp.

Форматы SAM, BAM и CRAM

Формат BAM (англ. Binary Alignment Map) представляет собой бинарный эквивалент SAM. BAM занимает меньше места и позволяет быстрее работать с информацией, чем SAM. Однако только файлы SAM доступны для чтения как текстовые файлы. SAMtools позволяет эффективно работать с форматом BAM и извлекать необходимую информацию в человекочитаемом формате.

Файлы формата CRAM являются ещё более эффективными с точки зрения занимаемого дискового пространства, чем файлы BAM. В CRAM-файл хранятся отличия прочтений от референсной последовательности, поэтому для работы с ним необходимо наличие файла с референсным геномом. Спецификация формата разработана в Европейском институте биоинформатики. SAMtools позволяет выполнять конвертацию между форматами SAM, BAM и CRAM.

Формат SAM (англ. Sequence Alignment Map) — это текстовый формат для хранения биологических последовательностей, выровненных по эталонной последовательности, также называемой референсной. Этот формат широко используется для хранения таких данных, как фрагменты нуклеотидных последовательностей (иначе называемых чтениями, прочтениями или ридами), полученные с помощью технологии секвенирования нового поколения. Чаще всего SAM получают в результате картирования прочтений из файла FASTQ на последовательность референсного генома. Формат поддерживает короткие и длинные чтения (до 128 Mbp) и может включать одно или несколько выравниваний. Одно выравнивание состоит из нескольких строк, каждая из которых — выравнивание одного фрагмента.

SAM-файл может содержать заголовок, строки которого всегда начинаются с символа «@», за которым следует один из двухбуквенных кодов типа заголовка. В заголовке каждая строка разделена символом табуляции, и, кроме строк @CO, каждое поле данных соответствует формату тэг: значение, где тэг представляет собой двухсимвольную строку, которая определяет формат и содержимое значения. Ниже кратко описаны типы заголовка, которые могут быть использованы в файле.

Под заголовком находится раздел выравнивания. Он имеет 11 обязательных полей, содержащих такую информацию, как позиция и качество выравнивания, направление прочтения, указание на парное прочтение и др. Кроме того, возможно указание ряда опциональных полей в виде тэг: тип: значение.

Спецификацию формата SAM можно найти в репозитории SAMtools или в официальной документации формата. Ниже рассмотрена часть выравнивания в формате SAM с описанием полей.

r001 99 ref 7 30 8M2I4M1D3M = 37 39 TTAGATAAAGGATACTG * r001 147 ref 37 30 9M = 7 -39 CAGCGGCAT * NM:i:1

Поле флаг представляет собой комбинацию нескольких бинарных флагов. Если чтение имеет пару, то по этой комбинации можно однозначно восстановить флаг спаренного с ним чтения и, как следствие, сведения о нем. Полный список флагов со значениями представлен в таблице ниже.

Таким образом, наиболее часто встречающиеся флаги группируются по главным значениям:

  • одно из чтений в паре некартировано: 73, 133, 89, 121, 165, 181, 101, 117, 153, 185, 69, 137;
  • оба чтения некартированы: 77, 141;
  • чтения картированы в пределах размера вставки и в правильной ориентации: 99, 147, 83, 163;
  • чтения картированы в пределах размера вставки, но в неправильной ориентации: 67, 131, 115, 179;
  • чтения картированы однозначно, но с неверным размером вставки: 81 , 161 , 97 , 145 , 65 , 129 , 113 , 177.

Опциональные поля должны соответствовать формату двухбуквенный тэг: тип: значение. Например, NH:i:1 указывает число выравниваний в файле для данного прочтения как целочисленную величину, равную единице. Некоторые другие распространённые теги:

  • AS — вес (score) выравнивания, рассчитанный программой-картировщиком;
  • NM — редакционное расстояние от прочтения до референса;
  • MD — строка с информацией о невыровненных позициях; например, 10A5^AC6’ означает 10 совпадений с референсом → A в референсе, отличное от нуклеотида в соответствующей позиции прочтения → 5 совпадений → делеция (отсутствие в прочтении) двух нуклеотидов — AC → 6 совпадений;
  • CC — название референса для «следующего» выравнивания («хита») — для случая неуникального выравнивания;
  • CP — координата крайней левой позиции для «следующего» выравнивания («хита»);
  • HI — индекс выравнивания («хита») для данного прочтения.

Опциональные поля, тэги которых начинаются с X, Y или Z, зарезервированы для использования различными программами и непосредственно пользователями. Часто эти поля генерируются с помощью BWAtools, и наиболее часто встречающиеся такие тэги можно посмотреть в спецификации BWAtools, а также в спецификации дополнительных полей формата SAM.

Команды SAMtools

Вызов команд осуществляется в виде «samtools название_команды». Далее указываются опции вызова и необходимые файлы (если файл не был передан через конвейер). В качестве примера можно привести команду, конвертирующую файл формата SAM в формат BAM: samtools view -bS sample.sam > sample.bam, где view является командой, -bS — опциями, а sample.sam и sample.bam задают файлы в соответствующих форматах.

Список команд SAMtools представлен ниже.






Яндекс.Метрика