Rsamtools
Dependencies & Environment
Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.
- Version: 2.28.0 · Bioconductor: 3.23 · R: ≥ 4.6
- Depends: Seqinfo, GenomicRanges, Biostrings
- Imports: BiocGenerics, S4Vectors, IRanges, XVector, bitops, BiocParallel
- System requirements: GNU make
- Install:
BiocManager::install("Rsamtools")
When to Use
- Low-level Alignment Import: Importing and parsing BAM files directly into R lists or
DataFrame objects using scanBam.
- Targeted Read Extraction: Extracting specific genomic coordinates and alignment fields (e.g., read sequence, strand, position) using
ScanBamParam.
- BAM File Management: Managing collections of BAM files and their metadata programmatically using
BamViews.
- Coverage Calculation: Calculating read coverage over specific genomic ranges using
coverage on imported BAM data.
When NOT to Use
- For high-level representation of gapped alignments, use
GenomicAlignments (specifically readGAlignments) because Rsamtools provides lower-level list-based outputs.
- For iterating through BAM files in parallel, use
GenomicFiles because it implements higher-level strategies for file iteration.
- For whole-genome manipulation and DNA sequence operations, use
Biostrings or BSgenome instead.
Data Requirements
- Input Format: BAM files (e.g.,
.bam) and their corresponding index files (.bai).
- Genomic Coordinates: Specified as
GRanges objects for targeted queries.
Key Parameters
- file: Path to the BAM file to be parsed by
scanBam.
- param: A
ScanBamParam object determining which genomic coordinates and components to input.
- which: A
GRanges object specifying the genomic ranges to extract.
- what: A character vector (e.g.,
c("rname", "pos", "qwidth")) specifying which BAM record fields to retrieve.
- flag: A filter created by
scanBamFlag (e.g., isUnmappedQuery=FALSE) to restrict reads.
- bamRanges: A
GRanges object defining the genomic rows for a BamViews instance.
Best Practices
- Always ensure a
.bai index file is available locally when querying specific ranges with the which argument.
- Restrict imported fields using the
what argument in ScanBamParam to minimize memory consumption.
- Process large BAM files in chunks (e.g., by chromosome) using summary functions to avoid memory exhaustion.
- Use
BamViews to marshal references to multiple BAM files without loading them immediately into memory.
Common Pitfalls
- Querying by range without an index: Fails because providing a
which argument to ScanBamParam requires a BAM index. Fix: Ensure the .bai file exists or create one using indexBam.
- "EOF marker is absent" warning: Occurs with some BAM files. Fix: This message can safely be ignored as noted in the vignette.
- Chromosome naming mismatches: Ensembl vs UCSC naming (e.g., "chr1" vs "1") causes empty queries. Fix: Use
seqlevels<- to map between naming schemes before querying.
Alternatives
- GenomicAlignments: Provides a more useful, higher-level representation of BAM files in R (e.g.,
GAlignments objects).
- GenomicFiles: Useful for iterating through BAM and other files, including in parallel.
- ShortRead: Better suited for I/O and quality assessment of ungapped short read alignments.
Citations
- Morgan M, Pagès H, Obenchain V, Hayden N. Rsamtools: Binary alignment (BAM), FASTA, variant call (BCF), and tabix file import. Bioconductor.
References
Run this on BioMate
This skill is the knowledge layer — when, why, and how to use rsamtools. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.
▶ Open rsamtools on BioMate →
1---2name: bioconductor-rsamtools3description: This package provides an interface to the 'samtools', 'bcftools', and 'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed tab-delimited (tabix) files.4---56# Rsamtools78## Dependencies & Environment910> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.1112- **Version:** 2.28.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.613- **Depends:** Seqinfo, GenomicRanges, Biostrings14- **Imports:** BiocGenerics, S4Vectors, IRanges, XVector, bitops, BiocParallel15- **System requirements:** GNU make16- **Install:** `BiocManager::install("Rsamtools")`1718## When to Use19- **Low-level Alignment Import**: Importing and parsing BAM files directly into R lists or `DataFrame` objects using `scanBam`.20- **Targeted Read Extraction**: Extracting specific genomic coordinates and alignment fields (e.g., read sequence, strand, position) using `ScanBamParam`.21- **BAM File Management**: Managing collections of BAM files and their metadata programmatically using `BamViews`.22- **Coverage Calculation**: Calculating read coverage over specific genomic ranges using `coverage` on imported BAM data.2324## When NOT to Use25- For high-level representation of gapped alignments, use `GenomicAlignments` (specifically `readGAlignments`) because `Rsamtools` provides lower-level list-based outputs.26- For iterating through BAM files in parallel, use `GenomicFiles` because it implements higher-level strategies for file iteration.27- For whole-genome manipulation and DNA sequence operations, use `Biostrings` or `BSgenome` instead.2829## Data Requirements30- **Input Format**: BAM files (e.g., `.bam`) and their corresponding index files (`.bai`).31- **Genomic Coordinates**: Specified as `GRanges` objects for targeted queries.3233## Key Parameters34- **file**: Path to the BAM file to be parsed by `scanBam`.35- **param**: A `ScanBamParam` object determining which genomic coordinates and components to input.36- **which**: A `GRanges` object specifying the genomic ranges to extract.37- **what**: A character vector (e.g., `c("rname", "pos", "qwidth")`) specifying which BAM record fields to retrieve.38- **flag**: A filter created by `scanBamFlag` (e.g., `isUnmappedQuery=FALSE`) to restrict reads.39- **bamRanges**: A `GRanges` object defining the genomic rows for a `BamViews` instance.4041## Best Practices42- Always ensure a `.bai` index file is available locally when querying specific ranges with the `which` argument.43- Restrict imported fields using the `what` argument in `ScanBamParam` to minimize memory consumption.44- Process large BAM files in chunks (e.g., by chromosome) using summary functions to avoid memory exhaustion.45- Use `BamViews` to marshal references to multiple BAM files without loading them immediately into memory.4647## Common Pitfalls48- **Querying by range without an index**: Fails because providing a `which` argument to `ScanBamParam` requires a BAM index. *Fix*: Ensure the `.bai` file exists or create one using `indexBam`.49- **"EOF marker is absent" warning**: Occurs with some BAM files. *Fix*: This message can safely be ignored as noted in the vignette.50- **Chromosome naming mismatches**: Ensembl vs UCSC naming (e.g., "chr1" vs "1") causes empty queries. *Fix*: Use `seqlevels<-` to map between naming schemes before querying.5152## Alternatives53- **GenomicAlignments**: Provides a more useful, higher-level representation of BAM files in R (e.g., `GAlignments` objects).54- **GenomicFiles**: Useful for iterating through BAM and other files, including in parallel.55- **ShortRead**: Better suited for I/O and quality assessment of ungapped short read alignments.5657## Citations58- Morgan M, Pagès H, Obenchain V, Hayden N. Rsamtools: Binary alignment (BAM), FASTA, variant call (BCF), and tabix file import. Bioconductor.5960## References61- Homepage: https://bioconductor.org/packages/Rsamtools62- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/Rsamtools/inst/doc/Rsamtools-Overview.pdf6364<!-- biomate-cta -->65---6667## Run this on BioMate6869This skill is the **knowledge layer** — when, why, and how to use `rsamtools`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=rsamtools)** — free to start.7071▶ **[Open `rsamtools` on BioMate →](https://www.biomate.ai?ref=kb&pkg=rsamtools)**