BioSkills bio-read-alignment-bowtie2-alignment

Align short reads using Bowtie2 with local or end-to-end modes. Supports gapped alignment. Use when aligning ChIP-seq, ATAC-seq, or when flexible alignment modes are needed.

install
source · Clone the upstream repo
git clone https://github.com/GPTomics/bioSkills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/GPTomics/bioSkills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/read-alignment/bowtie2-alignment" ~/.claude/skills/gptomics-bioskills-bio-read-alignment-bowtie2-alignment && rm -rf "$T"
manifest: read-alignment/bowtie2-alignment/SKILL.md
source content

Version Compatibility

Reference examples tested with: samtools 1.19+

Before using code patterns, verify installed versions match. If versions differ:

  • CLI:
    <tool> --version
    then
    <tool> --help
    to confirm flags

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.

Bowtie2 Alignment

"Align DNA reads with Bowtie2" → Map short reads to a reference genome using Bowtie2's end-to-end or local alignment modes.

  • CLI:
    bowtie2 -x index -1 R1.fq -2 R2.fq | samtools sort -o aligned.bam

Build Index

# Build index from reference FASTA
bowtie2-build reference.fa reference_index

# With threads (faster)
bowtie2-build --threads 8 reference.fa reference_index

# Creates: reference_index.1.bt2, .2.bt2, .3.bt2, .4.bt2, .rev.1.bt2, .rev.2.bt2

Basic Alignment

# Paired-end reads
bowtie2 -p 8 -x reference_index -1 reads_1.fq.gz -2 reads_2.fq.gz -S aligned.sam

# Single-end reads
bowtie2 -p 8 -x reference_index -U reads.fq.gz -S aligned.sam

# Direct to sorted BAM
bowtie2 -p 8 -x reference_index -1 r1.fq.gz -2 r2.fq.gz | \
    samtools sort -@ 4 -o aligned.sorted.bam -

Alignment Modes

# End-to-end mode (default) - align entire read
bowtie2 --end-to-end -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Local mode - soft-clip ends for better alignment
bowtie2 --local -x index -1 r1.fq -2 r2.fq -S aligned.sam

Sensitivity Presets

# Very fast (less sensitive)
bowtie2 --very-fast -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Fast
bowtie2 --fast -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Sensitive (default)
bowtie2 --sensitive -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Very sensitive (slower but more accurate)
bowtie2 --very-sensitive -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Local mode equivalents
bowtie2 --very-sensitive-local -x index -1 r1.fq -2 r2.fq -S aligned.sam

ChIP-seq Alignment

# Typical ChIP-seq settings
bowtie2 -p 8 \
    --very-sensitive \
    --no-mixed \
    --no-discordant \
    -x index -1 chip_1.fq.gz -2 chip_2.fq.gz | \
    samtools view -bS -q 30 -F 4 - | \
    samtools sort -o chip.sorted.bam -

ATAC-seq Alignment

# ATAC-seq with size selection
bowtie2 -p 8 \
    --very-sensitive \
    -X 2000 \                    # Max fragment length
    --no-mixed \
    --no-discordant \
    -x index -1 atac_1.fq.gz -2 atac_2.fq.gz | \
    samtools view -bS -q 30 - | \
    samtools sort -o atac.sorted.bam -

Fragment Size Options

# Set expected insert size range
bowtie2 -p 8 \
    -I 100 \     # Minimum fragment length
    -X 500 \     # Maximum fragment length
    -x index -1 r1.fq -2 r2.fq -S aligned.sam

Read Group and Output Options

# Add read group
bowtie2 -p 8 \
    --rg-id sample1 \
    --rg SM:sample1 \
    --rg PL:ILLUMINA \
    --rg LB:lib1 \
    -x index -1 r1.fq -2 r2.fq -S aligned.sam

Multi-mapping Reads

# Report up to k alignments per read
bowtie2 -k 5 -x index -1 r1.fq -2 r2.fq -S aligned.sam

# Report all alignments
bowtie2 -a -x index -1 r1.fq -2 r2.fq -S aligned.sam

Output Unmapped Reads

# Write unmapped reads to separate files
bowtie2 -p 8 \
    --un-conc-gz unmapped_%.fq.gz \
    -x index -1 r1.fq.gz -2 r2.fq.gz -S aligned.sam

Key Parameters

ParameterDefaultDescription
-p1Number of threads
-x-Index basename
-1/-2-Paired-end reads
-U-Single-end reads
-I0Min fragment length
-X500Max fragment length
-k1Report up to k alignments
--no-mixedoffSuppress unpaired alignments
--no-discordantoffSuppress discordant alignments

Alignment Statistics

# Bowtie2 prints alignment summary to stderr
bowtie2 -p 8 -x index -1 r1.fq -2 r2.fq -S aligned.sam 2> alignment_stats.txt

Example output:

1000000 reads; of these:
  1000000 (100.00%) were paired; of these:
    50000 (5.00%) aligned concordantly 0 times
    900000 (90.00%) aligned concordantly exactly 1 time
    50000 (5.00%) aligned concordantly >1 times
95.00% overall alignment rate

Related Skills

  • read-qc/fastp-workflow - Preprocess reads before alignment
  • alignment-files/alignment-sorting - Post-alignment processing
  • chip-seq/peak-calling - ChIP-seq analysis
  • atac-seq/atac-peak-calling - ATAC-seq analysis