Команда bwa mem сама по себе не создаёт файл на диске — результат выравнивания она пишет в стандартный поток вывода (stdout), и без перенаправления весь SAM-текст просто промелькнёт в терминале и пропадёт. Именно поэтому запрос «bwa to s(am)» чаще всего означает одну из двух задач: либо перенаправить вывод BWA в SAM-файл, либо сразу сконвертировать его в компактный BAM через samtools.

Ниже разберём оба сценария: получение текстового SAM, конвертацию в бинарный BAM, сортировку по координатам и индексацию. Все команды приведены для Linux/macOS-окружения, где BWA и samtools установлены через пакетный менеджер или bioconda.

Что такое SAM и зачем нужен BAM

SAM (Sequence Alignment/Map) — текстовый формат хранения выравниваний прочтений на референсный геном. Каждая строка описывает одно прочтение: его имя, флаги, позицию на референсе, строку CIGAR, последовательность и качество оснований. Файл легко просмотреть обычным less или head, что удобно для отладки.

BAM — бинарная, сжатая версия того же SAM. Он занимает заметно меньше места и поддерживает быстрый произвольный доступ после сортировки и индексации. Практически все downstream-инструменты (вызыватели вариантов, IGV, Picard) работают именно с отсортированным и проиндексированным BAM.

  • 📄 SAM — человекочитаемый текст, подходит для проверки и отладки.
  • 📦 BAM — бинарный формат, стандарт для хранения и анализа.
  • 🔍 BAI/CSI — индексные файлы для быстрого доступа к регионам BAM.

Подготовка: индексация референса

Перед любым выравниванием референсный геном нужно проиндексировать самим BWA — без индекса bwa mem завершится с ошибкой о невозможности найти индексные файлы. Индексация выполняется один раз для каждого референса:

bwa index reference.fa

В результате рядом с файлом референса появятся служебные файлы с расширениями вроде .amb, .ann, .bwt, .pac, .sa. Их не нужно трогать и перемещать отдельно от FASTA-файла — BWA ищет индекс по пути к референсу.

⚠️ Внимание: индексирование крупных геномов (например, человеческого) требует заметного объёма оперативной памяти и времени. Убедитесь, что на машине достаточно RAM, иначе процесс может быть прерван системой.

Получение SAM-файла из bwa mem

Самый прямой способ получить SAM — перенаправить вывод через оператор >. Для парных прочтений команда выглядит так:

bwa mem reference.fa reads_R1.fastq.gz reads_R2.fastq.gz > alignment.sam

Здесь reference.fa — проиндексированный референс, далее идут файлы прочтений (для одиночных прочтений указывается один файл). Результат — готовый alignment.sam, который можно открыть текстовым редактором или просмотреть командой head alignment.sam: в начале файла идут строки заголовка, начинающиеся с символа @.

Для ускорения работы стоит задать число потоков параметром -t, например -t 8. Количество потоков не должно превышать число доступных ядер процессора.

☑️ Проверка перед запуском bwa mem

Референс проиндексирован (bwa index)Файлы прочтений существуют и не пустыеУказано разумное число потоков -tВывод перенаправлен в файл или в пайпДостаточно свободного места на дискеВыполнено: 0 / 5