BOWTIE2(1)

✨ NAME ✨

bowtie2 β€” literally just a wrapper for bowtie2-align-*, bestie πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so. Bowtie 2 version 2.5.5, made by Ben Langmead (langmea@cs.jhu.edu, www.cs.jhu.edu/~langmea). Iconic. Periodt. πŸ‘‘


🌸 USAGE 🌸

bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> |
--interleaved <i> | -b <bam>} [-S <sam>]

Here's the whole cast of characters, no cap:

  • <bt2-idx> β€” the index filename prefix (minus the trailing .X.bt2). ⚠️ NOTE: Bowtie 1 and Bowtie 2 indexes are not compatible, so don't even try it, they're not the same girlies.
  • <m1> β€” files with the #1 mates, paired with whatever's in <m2>. Can be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).
  • <m2> β€” files with the #2 mates, paired with whatever's in <m1>. Also can be gzip'ed (.gz) or bzip2'ed (.bz2).
  • <r> β€” files with unpaired reads. You guessed it: gzip'ed (.gz) or bzip2'ed (.bz2) is fine. 🫢
  • <i> β€” files with interleaved paired-end FASTQ/FASTA reads. Could be gzip'ed (.gz) or bzip2'ed (.bz2), obviously. ✨
  • <bam> β€” files are unaligned BAM sorted by read name.
  • <sam> β€” the file for SAM output (default: stdout).
Also, <m1>, <m2> and <r> can be comma-separated lists (no whitespace!! like, zero) and you can specify them many times. E.g. '-U file1.fq,file2.fq -U file3.fq'. 🌈

πŸ‘‘ OPTIONS πŸ‘‘

(defaults are in parentheses, so you always know what you're getting)

πŸ’– Input

  • -q β€” query input files are FASTQ .fq/.fastq (default)
  • --tab5 β€” query input files are TAB5 .tab5
  • --tab6 β€” query input files are TAB6 .tab6
  • --qseq β€” query input files are in Illumina's qseq format
  • -f β€” query input files are (multi-)FASTA .fa/.mfa
  • -r β€” query input files are raw one-sequence-per-line
  • -F k:<int>,i:<int> β€” query input files are continuous FASTA where reads are substrings (k-mers) extracted from the FASTA file and aligned at offsets 1, 1+i, 1+2i ... end of reference
  • -c β€” <m1>, <m2>, <r> are sequences themselves, not files
  • -s/--skip <int> β€” skip the first <int> reads/pairs in the input (none)
  • -u/--upto <int> β€” stop after first <int> reads/pairs (no limit)
  • -5/--trim5 <int> β€” trim <int> bases from 5'/left end of reads (0)
  • -3/--trim3 <int> β€” trim <int> bases from 3'/right end of reads (0)
  • --trim-to [3:|5:]<int> β€” trim reads exceeding <int> bases from either 3' or 5' end. If the read end is not specified then it defaults to 3 (0)
  • --phred33 β€” qualities are Phred+33 (default)
  • --phred64 β€” qualities are Phred+64
  • --int-quals β€” qualities encoded as space-delimited integers

πŸŽ€ Presets

Same as:

For --end-to-end:

  • --very-fast β€” -D 5 -R 1 -N 0 -L 22 -i S,0,2.50
  • --fast β€” -D 10 -R 2 -N 0 -L 22 -i S,0,2.50
  • --sensitive β€” -D 15 -R 2 -N 0 -L 22 -i S,1,1.15 (default)
  • --very-sensitive β€” -D 20 -R 3 -N 0 -L 20 -i S,1,0.50

For --local:

  • --very-fast-local β€” -D 5 -R 1 -N 0 -L 25 -i S,1,2.00
  • --fast-local β€” -D 10 -R 2 -N 0 -L 22 -i S,1,1.75
  • --sensitive-local β€” -D 15 -R 2 -N 0 -L 20 -i S,1,0.75 (default)
  • --very-sensitive-local β€” -D 20 -R 3 -N 0 -L 20 -i S,1,0.50

🌈 Alignment

  • -N <int> β€” max # mismatches in seed alignment; can be 0 or 1 (0)
  • -L <int> β€” length of seed substrings; must be >3, <32 (22)
  • -i <func> β€” interval between seed substrings w/r/t read len (S,1,1.15)
  • --n-ceil <func> β€” func for max # non-A/C/G/Ts permitted in aln (L,0,0.15)
  • --dpad <int> β€” include <int> extra ref chars on sides of DP table (15)
  • --gbar <int> β€” disallow gaps within <int> nucs of read extremes (4)
  • --ignore-quals β€” treat all quality values as 30 on Phred scale (off)
  • --nofw β€” do not align forward (original) version of read (off)
  • --norc β€” do not align reverse-complement version of read (off)
  • --no-1mm-upfront β€” do not allow 1 mismatch alignments before attempting to scan for the optimal seeded alignments
  • --end-to-end β€” entire read must align; no clipping (on)

OR

  • --local β€” local alignment; ends might be soft clipped (off)

πŸ’œ Scoring

  • --ma <int> β€” match bonus (0 for --end-to-end, 2 for --local)
  • --mp <int> β€” max penalty for mismatch; lower qual = lower penalty (6)
  • --np <int> β€” penalty for non-A/C/G/Ts in read/ref (1)
  • --rdg <int>,<int> β€” read gap open, extend penalties (5,3)
  • --rfg <int>,<int> β€” reference gap open, extend penalties (5,3)
  • --score-min <func> β€” min acceptable alignment score w/r/t read length (G,20,8 for local, L,-0.6,-0.6 for end-to-end)

πŸ“ Reporting

  • (default) β€” look for multiple alignments, report best, with MAPQ

OR

  • -k <int> β€” report up to <int> alns per read; MAPQ not meaningful

OR

  • -a/--all β€” report all alignments; very slow without -l, MAPQ not meaningful

πŸ”₯ Effort

  • -l/--lowseeds <n> β€” ignore any low quality seeds with ranges over threshold (0=no cut, if percentage, mili or nano, relative to idx size)
  • -D <int> β€” give up extending after <int> failed extends in a row (15)
  • -R <int> β€” for reads w/ repetitive seeds, try <int> sets of seeds (2)
  • -d/--deterministic-seeds β€” Consider all seeds in order (no subsampling, best with -a)

🫢 Paired-end

  • -I/--minins <int> β€” minimum fragment length (0)
  • -X/--maxins <int> β€” maximum fragment length (500)
  • --fr/--rf/--ff β€” -1, -2 mates align fw/rev, rev/fw, fw/fw (--fr)
  • --no-mixed β€” suppress unpaired alignments for paired reads
  • --no-discordant β€” suppress discordant alignments for paired reads
  • --dovetail β€” concordant when mates extend past each other
  • --no-contain β€” not concordant when one mate alignment contains other
  • --no-overlap β€” not concordant when mates overlap at all

🧚 BAM

  • --align-paired-reads β€” Bowtie2 will, by default, attempt to align unpaired BAM reads. Use this option to align paired-end reads instead.
  • --preserve-tags β€” Preserve tags from the original BAM record by appending them to the end of the corresponding SAM output.

⭐ Output

  • -t/--time β€” print wall-clock time taken by search phases
  • --un <path> β€” write unpaired reads that didn't align to <path>
  • --al <path> β€” write unpaired reads that aligned at least once to <path>
  • --un-conc <path> β€” write pairs that didn't align concordantly to <path>
  • --al-conc <path> β€” write pairs that aligned concordantly at least once to <path>
Note, bestie: for --un, --al, --un-conc, or --al-conc, add '-gz' to the option name, e.g. --un-gz <path>, to gzip compress output, or add '-bz2' to bzip2 compress output. πŸŽ€
  • --quiet β€” print nothing to stderr except serious errors
  • --met-file <path> β€” send metrics to file at <path> (off)
  • --met-stderr β€” send metrics to stderr (off)
  • --met <int> β€” report internal counters & metrics every <int> secs (1)
  • --no-unal β€” suppress SAM records for unaligned reads
  • --no-head β€” suppress header lines, i.e. lines starting with @
  • --no-sq β€” suppress @SQ header lines
  • --rg-id <text> β€” set read group id, reflected in @RG line and RG:Z: opt field
  • --rg <text> β€” add <text> ("lab:value") to @RG line of SAM header. Note: @RG line only printed when --rg-id is set.
  • --omit-sec-seq β€” put '*' in SEQ and QUAL fields for secondary alignments.
  • --sam-no-qname-trunc β€” Suppress standard behavior of truncating readname at first whitespace at the expense of generating non-standard SAM.
  • --xeq β€” Use '='/'X', instead of 'M,' to specify matches/mismatches in SAM record.
  • --soft-clipped-unmapped-tlen β€” Exclude soft-clipped bases when reporting TLEN.
  • --sam-append-comment β€” Append FASTA/FASTQ comment to SAM record.
  • --sam-opt-config <config> β€” Use <config>, example '-MD,YP,-AS', to toggle SAM Optional fields.

πŸ¦‹ Performance

  • -p/--threads <int> β€” number of alignment threads to launch (1)
  • --reorder β€” force SAM output order to match order of input reads
  • --mm β€” use memory-mapped I/O for index; many 'bowtie's can share

🌸 Other

  • --qc-filter β€” filter out reads that are bad according to QSEQ filter
  • --seed <int> β€” seed for random number generator (0)
  • --non-deterministic β€” seed rand. gen. arbitrarily instead of using read attributes
  • --version β€” print version information and quit
  • -h/--help β€” print this usage message

That's the whole thing, and honestly? Ate. πŸ’…

So this little love letter to your terminal is bowtie2 2.5.5, dated February 2026, and it lives in the BOWTIE2(1) section of your manual. Go forth and align, bestie 🫢✨🧬

πŸ“¦ where this page comes from