Creates a DuckDB table from SAM, BAM, or CRAM files using the DuckHTS extension.
Usage
rduckhts_bam(
con,
table_name,
path,
region = NULL,
index_path = NULL,
reference = NULL,
standard_tags = FALSE,
auxiliary_tags = FALSE,
sequence_encoding = NULL,
quality_representation = NULL,
cigar_representation = NULL,
scan_mode = NULL,
decompression_threads = 2,
overwrite = FALSE
)Arguments
- con
A DuckDB connection with DuckHTS loaded
- table_name
Name for the created table
- path
Path to the SAM/BAM/CRAM file
- region
Optional genomic region (e.g., "chr1:1000-2000")
- index_path
Optional explicit path to index file (.bai/.csi/.crai)
- reference
Optional reference file path for CRAM files
Logical. If TRUE, include typed standard SAMtags columns. Default FALSE.
Logical. If TRUE, include AUXILIARY_TAGS map of non-standard tags. Default FALSE.
- sequence_encoding
Character. Sequence encoding for the SEQ column:
"string"(default) returns decoded bases asVARCHAR;"nt16"returns raw htslib nt16 4-bit codes asUTINYINT[].- quality_representation
Character. Quality representation for the QUAL column:
"string"(default) returns canonical Phred+33 text;"phred"returns raw Phred values asUTINYINT[].- cigar_representation
Character. CIGAR representation for the CIGAR column:
"string"(default) returns SAM text such as"36M";"binary"returns packed BAM operations asUINTEGER[]where each element is(len << 4) | op.- scan_mode
Optional scan mode. Use
"auto"(default extension behavior) or"sequential"to force full-file streaming instead of index-backed count/parallel scan paths. Sequential mode is incompatible withregion.- decompression_threads
Integer. Number of htslib decompression worker threads per file handle. Default
2. Use0to disable worker threads.- overwrite
Logical. If TRUE, overwrites existing table
Examples
library(DBI)
library(duckdb)
con <- rduckhts_connect()
bam_path <- system.file("extdata", "range.bam", package = "Rduckhts")
rduckhts_bam(con, "reads", bam_path, overwrite = TRUE)
dbGetQuery(con, "SELECT COUNT(*) FROM reads WHERE FLAG & 4 = 0")
#> count_star()
#> 1 112
dbDisconnect(con, shutdown = TRUE)