Bowtie 2

Fast and sensitive read alignment

Bowtie 2 is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. Bowtie 2 indexes the genome with an FM Index to keep its memory footprint small: for the human genome, its memory footprint is typically around 3.2 GB. Bowtie 2 supports gapped, local, and paired-end alignment modes. Open Source Software

Site Map

Latest Release

Bowtie2 v2.5.3 01/16/24 

Please cite: Langmead B, Salzberg S. Fast gapped-read alignment with Bowtie 2. Nature Methods. 2012, 9:357-359.

Links

Indexes

Publications

Contributors

  • Ben Langmead
  • Daehwan Kim
  • Rone Charles
  • Nae-Chyun Chen
  • Chris Wilks
  • Valentin Antonescu

Version 2.5.3 - Jan 16, 2024

bowtie2

  • Fixed an issue causing bowtie2's memory usage to increase over time.
  • Fixed an issue causing bowtie2 to crash when processing eempty FASTQ records.
  • Fixed an issue causing bowtie2 to erroneously treat -f and -F as mutually exclusive.

bowtie2-build

  • Add optional support for libsais to bowtie2-build for faster index building.
  • N.B. -- small indexes are capped at 2GB when using libsais as opposed to 4GB when using the default blockwise algorithm. See MANUAL for details.

Version 2.5.2 - Oct 13, 2023

bowtie2

  • Fixed an issue preventing bowtie2 from utilizing the specified number of CPU cores
  • Fixed an issue causing bowtie2 to segfault when reading compressed inputs on Windows
  • Fixed an issue causing bowtie2 to segfault while parsing interleaved reads
  • Overhauled the FASTQ parser with better tolerance for empty lines

Version 2.5.1 - Feb 17, 2023

bowtie2

  • Fixed an issue affecting bowtie2 alignment accuracy.
  • Updated the versions of the NCBI NGS and VDB libraries used by bowtie2.
  • Fixed a segmentation fault that would occur while aligning SRA data.
  • Fixed an issue preventing --un-mates from properly saving unaligned mates.

Version 2.5.0 - Oct 31, 2022

bowtie2

  • Overall improvements in the use of prefetch instructions. (contribution by Igor Sfiligoi)
  • Made input/output fully asynchronous by using a dedicated thread. (contribution by Igor Sfiligoi)
  • Added support for AVX2 256-bit instructions with can be enabled by setting the SSE_AXV2 environment variable at compile time. (contribution by Igor Sfiligoi)
  • Fixed an issue causing bowtie2 to crash when processing ZSTD files with high compression ratios.
  • Changed the way that unique alignments are counted in summary message to better match up with filters on SAM output

Version 2.4.5 - Jan 16, 2022

bowtie2

  • Fixed issues with bowtie2 BAM parser that would cause bowtie2 to crash when processing input that was encoded with tools other than samtools e.g. Picard.
  • Fixed an issue causing bowtie2 to drop certain optional fields when when aligning BAM reads with the --preserve-tags option.
  • Fixed an issue causing bowtie2 to produce mangled SAM output when specifying --sam-append-comment together with the --passthrough option.
  • Appended GO:query to SAM @HD entry to indicate that reads are grouped by query name, bump SAM version to 1.5 to indicate support for this change.

bowtie2-build

  • Implemented thread pool to address performance regressions introduced during the switch to C++11 threads.
  • Fixed an issue causing masked-sequence metadata to be omitted from index. This issue would subsequently result in sequence data, @SQ, being left out from alignment SAM header.
  • Included .tmp extension to index files currenlty being built. The extension is removed only upon successful build. This change seeks to address the assumption that bowtie2-build ran successfully without building the reverse indexes.
  • Fixed an issue causing bowtie2-build to sometimes incorrectly calculate input size. This issue would result in the wrong index type being chosen and only happened with GZip compressed files.

bowtie2-inspect

  • Added a new -o/--output option to save the output of bowtie2-inspect to a file instead of being dumped to standard output.

Version 2.4.4 - May 23, 2021

  • Fixed an issue that would sometimes cause deadlocks in bowtie2 when running multithreaded

Version 2.4.3 - May 13, 2021

  • Replaced TBB concurrency with C++ threads
  • Added native support for processing Zstd-compressed read files to >bowtie2
  • Added native support for processing Zstd-compressed reference-genome files to bowtie2-build
  • Fixed an issue causing bowtie2 to report incorrect alignments on big-endian machines
  • Fixed an issue causing bowtie2 to incorrectly process BAM files on big-endian machines
  • Fixed an issue causing bowtie2 to set an incorrect MAPQ when AS and XS are the maximum for read length
  • Add support for building on Apple M1 processors

Version 2.4.2 - Oct 5, 2020

  • Fixed an issue that would cause the bowtie2 wrapper script to throw an error when using wrapper-specific arguments.
  • Added new --sam-append-comment flag that appends comment from FASTA/Q read to corresponding SAM record.
  • Fixed an issue that would cause qupto, -u, to overflow when there are >= 232 query sequences (PR #312).
  • Fixed an issue that would cause bowtie2-build script to incorrectly process reference files.

Version 2.4.1 - Feb 28, 2020

  • Fixed an issue that would cause the bowtie2 wrapper script to incorrectly process certain arguments

Version 2.4.0 - Feb 25, 2020

  • Fixed an issue in -b <bam> input mode where one might prematurely close the read file pointer causing “Bad file descriptor” in other threads
  • Fixed an issue that could cause bowtie2 to crash in --no-1mm-upfront mode
  • Modified bowtie2-build to better handle of flags and positional parameters
  • Migrated all python scripts to python3
  • Added support for wildcards in input files to bowtie2, e.g. bowtie2 -x index -q *.fq as opposed to bowtie2 -x index -q 1.fq,2.fq,3.fq...
  • Fixed an issue causing bowtie2 to incorrectly process read names with slash mates plus extra characters (see #265)
  • Clarified support for overriding presets with more specific options e.g bowtie2 -x index --local --very-fast-local --L22 -q reads.fq will set the seed length to 22, overriding the 25 set by --very-fast-local
  • Modified SAM output for -k/-a so that supplementary alignments get assigned a MAPQ of 255
  • Fixed an issue that would sometimes cause bowtie2-build to not generate reverse index files
  • Added preliminary support for ppc64le architectures with the help of SIMDE project (see #271)
  • Fixed an issue causing bowtie2 to incorrectly calculate the MAPQ when --mp was specified in combination with --ignore-quals

1000-Genomes major-allele SNP references -- April 26, 2019

  • For each base where the typical reference has the non-majority allele (according to the 1000 Genomes Project, we substituted in the majority allele instead
  • Links for indexes added to sidebar, as are links for the edited FASTA files
  • We made versions both for GRCh38 primary assembly and hg19 assembly
  • See how we created them
  • Only SNPs (single-base substitutions) are considered for now; indels are future work
  • Because only SNPs are considered, coordinates (e.g. gene annotations) are the same as for typical GRCh38 and hg19 assemblies. Most downstream tools are unaffected as long as major-allele-edited FASTAs are used wherever genome sequences are required.

Version 2.3.5.1 - April 16, 2019

  • Added official support for BAM input files
  • Added official support for CMake build system
  • Added changes to Makefile for creating Reproducible builds (via #210)
  • Fix an issue whereby building on aarch64 would require patching sed commands (via #243)
  • Fix an issue whereby bowtie2 would incorrectly throw an error while processing --interleaved input

Version 2.3.5 - March 16, 2019

Check out the Bowtie 2 UI, currently in beta, a shiny, frontend to the Bowtie2 command line.

  • Added support for obtaining input reads directly from the Sequence Read Archive, via NCBI’s NGS language bindings. This is activated via the --sra-acc option. This implementation is based on Daehwan Kim’s in HISAT2. Supports both unpaired and paired-end inputs.
  • Bowtie 2 now compiles on ARM architectures (via #216)
  • --interleaved can now be combined with FASTA inputs (worked only with FASTQ before)
  • Fixed issue whereby large indexes were not successfully found in the $BOWTIE2_INDEXES directory
  • Fixed input from FIFOs (e.g. via process substitution) to distinguish gzip-compressed versus uncompressed input
  • Fixed issue whereby arguments containing bz2 lz4 were misinterpretted as files
  • Fixed several compiler warnings
  • Fixed issue whereby both ends of a paired-end read could have negative TLEN if they exactly coincided
  • Fixed issue whereby bowtie2-build would hang on end-of-file (via #228)
  • Fixed issue whereby wrapper script would sometimes create zombie processes (via #51)
  • Fixed issue whereby bowtie2-build and bowtie2-inspect wrappers would fail on some versions of Python/PyPy
  • Replaced old, unhelpful README.md in the project with a version that includes badges, links and some highlights from the manual
  • Note: BAM input support and CMake build support both remain experimental, but we expect to finalize them in the next release

Version 2.3.4.3 - September 17, 2018

  • Fixed an issue causing bowtie2-build and bowtie2-inspect to output incomplete help text.
  • Fixed an issue causing bowtie2-align to crash.
  • Fixed an issue preventing bowtie2 from processing paired and/or unpaired FASTQ reads together with interleaved FASTQ reads.

Version 2.3.4.2 - August 07, 2018

  • Fixed issue causing bowtie2 to fail in --fast-local mode.
  • Fixed issue causing --soft-clipped-unmapped-tlen to be a positional argument.
  • New option --trim-to N causes bowtie2 to trim reads longer than N bases to exactly N bases. Can trim from either 3' or 5' end, e.g. --trim-to 5:30 trims reads to 30 bases, truncating at the 5' end.
  • Updated "Building from source" manual section with additional instructions on installing TBB.
  • Several other updates to manual, including new mentions of Bioconda and Biocontainers.
  • Fixed an issue preventing bowtie2 from processing more than one pattern source when running single threaded.
  • Fixed an issue causing bowtie2 and bowtie2-inspect to crash if the index contains a gap-only segment.
  • Added experimental BAM input mode -b. Works only with unpaired input reads and BAM files that are sorted by read name (samtools sort -n). BAM input mode also supports the following options:
  •     --preserve-sam-tags: Preserve any optional fields present in BAM record
  •     --align-paired-reads: Paired-end mode for BAM files
  • Add experimental CMake support

Thread-scaling paper appears - July 19, 2018