name	kind	category	signature	returns	r_wrapper	description	examples
read_bcf	table	Readers	read_bcf(path, region := NULL, index_path := NULL, tidy_format := FALSE, additional_csq_column_types := NULL)	table	rduckhts_bcf	Read VCF and BCF variant data with typed INFO, FORMAT, typed CSQ/ANN/BCSQ subfields, optional tidy sample output, and optional bcftools-style CSQ type overrides.	SELECT CHROM, POS, REF, ALT FROM read_bcf('vcf_file.bcf') LIMIT 5;
read_bam	table	Readers	read_bam(path, standard_tags := FALSE, auxiliary_tags := FALSE, region := NULL, index_path := NULL, reference := NULL, sequence_encoding := 'string', quality_representation := 'string')	table	rduckhts_bam	Read SAM, BAM, and CRAM alignments with optional typed SAMtags and auxiliary tag maps. Use sequence_encoding := 'nt16' to return SEQ as UTINYINT[] and quality_representation := 'phred' to return QUAL as UTINYINT[] instead of VARCHAR.	SELECT QNAME, FLAG, RNAME, POS FROM read_bam('range.bam') LIMIT 5;
read_fasta	table	Readers	read_fasta(path, region := NULL, index_path := NULL, sequence_encoding := 'string')	table	rduckhts_fasta	Read FASTA records or indexed FASTA regions as sequence rows. Use sequence_encoding := 'nt16' to return SEQUENCE as UTINYINT[] (htslib nt16 4-bit codes) instead of VARCHAR.	SELECT NAME, length(SEQUENCE) FROM read_fasta('ce.fa');
read_bed	table	Readers	read_bed(path, region := NULL, index_path := NULL)	table	rduckhts_bed	Read BED3-BED12 interval files with canonical typed columns and optional tabix-backed region filtering.	"SELECT chrom, start, ""end"", name FROM read_bed('targets.bed') LIMIT 5;"
fasta_nuc	table	Readers	fasta_nuc(path, bed_path := NULL, bin_width := NULL, region := NULL, index_path := NULL, bed_index_path := NULL, include_seq := FALSE)	table	rduckhts_fasta_nuc	Compute bedtools nuc-style nucleotide composition for supplied BED intervals or generated fixed-width bins over a FASTA reference.	"SELECT chrom, start, ""end"", pct_gc FROM fasta_nuc('ce.fa', bin_width := 1000) LIMIT 5;"
read_fastq	table	Readers	read_fastq(path, interleaved := FALSE, mate_path := NULL, sequence_encoding := 'string', quality_representation := 'string', input_quality_encoding := 'phred33')	table	rduckhts_fastq	Read single-end, paired-end, or interleaved FASTQ files with optional legacy quality decoding. By default, FASTQ qualities are interpreted as modern Phred+33 input. Use sequence_encoding := 'nt16' to return SEQUENCE as UTINYINT[] and quality_representation := 'phred' to return QUALITY as UTINYINT[] instead of VARCHAR. input_quality_encoding accepts 'phred33', 'auto', 'phred64', or 'solexa64'.	SELECT NAME, MATE FROM read_fastq('r1.fq', mate_path := 'r2.fq') LIMIT 5;
detect_quality_encoding	table	Metadata	detect_quality_encoding(path, max_records := 10000)	table	rduckhts_detect_quality_encoding	Inspect a FASTQ file's observed quality ASCII range and report compatible legacy encodings with a heuristic guessed encoding.	SELECT * FROM detect_quality_encoding('reads.fq.gz');
read_gff	table	Readers	read_gff(path, header_names := NULL, header := FALSE, column_types := NULL, auto_detect := FALSE, attributes_map := FALSE, region := NULL, index_path := NULL)	table	rduckhts_gff	Read GFF annotations with optional parsed attribute maps and indexed region filtering.	"SELECT seqname, feature, start, ""end"" FROM read_gff('gff_file.gff.gz') LIMIT 5;"
read_gtf	table	Readers	read_gtf(path, header_names := NULL, header := FALSE, column_types := NULL, auto_detect := FALSE, attributes_map := FALSE, region := NULL, index_path := NULL)	table	rduckhts_gtf	Read GTF annotations with optional parsed attribute maps and indexed region filtering.	"SELECT seqname, feature, start, ""end"" FROM read_gtf('annotations.gtf.gz') LIMIT 5;"
read_tabix	table	Readers	read_tabix(path, header_names := NULL, header := FALSE, column_types := NULL, auto_detect := FALSE, region := NULL, index_path := NULL)	table	rduckhts_tabix	Read generic tabix-indexed text data with optional header handling and type inference.	SELECT * FROM read_tabix('meta_tabix.tsv.gz') LIMIT 5;
fasta_index	table	Readers	fasta_index(path, index_path := NULL)	table	rduckhts_fasta_index	Build a FASTA index (.fai) and return a single row with columns success (BOOLEAN) and index_path (VARCHAR).	SELECT * FROM fasta_index('ce.fa');
bgzip	table	Compression	bgzip(path, output_path := NULL, threads := 4, level := -1, keep := TRUE, overwrite := FALSE)	table	rduckhts_bgzip	Compress a plain file to BGZF and return the created output path and byte counts.	SELECT * FROM bgzip('regions.bed');
bgunzip	table	Compression	bgunzip(path, output_path := NULL, threads := 4, keep := TRUE, overwrite := FALSE)	table	rduckhts_bgunzip	Decompress a BGZF-compressed file and return the created output path and byte counts.	SELECT * FROM bgunzip('regions.bed.gz');
bam_index	table	Indexing	bam_index(path, index_path := NULL, min_shift := 0, threads := 4)	table	rduckhts_bam_index	Build a BAM or CRAM index and report the written index path and format.	SELECT * FROM bam_index('range.bam');
bcf_index	table	Indexing	bcf_index(path, index_path := NULL, min_shift := NULL, threads := 4)	table	rduckhts_bcf_index	Build a TBI or CSI index for a VCF or BCF file and report the written index path and format.	SELECT * FROM bcf_index('formatcols.vcf.gz');
tabix_index	table	Indexing	tabix_index(path, preset := 'vcf', index_path := NULL, min_shift := 0, threads := 4, seq_col := NULL, start_col := NULL, end_col := NULL, comment_char := NULL, skip_lines := NULL)	table	rduckhts_tabix_index	Build a tabix index for a BGZF-compressed text file using a preset or explicit coordinate columns.	SELECT * FROM tabix_index('gff_file.gff.gz', preset := 'gff');
read_hts_header	table	Metadata	read_hts_header(path, format := NULL, mode := NULL)	table	rduckhts_hts_header	Inspect HTS headers in parsed, raw, or combined form across supported formats.	SELECT record_type, id FROM read_hts_header('formatcols.vcf.gz') LIMIT 10;
read_hts_index	table	Metadata	read_hts_index(path, format := NULL, index_path := NULL)	table	rduckhts_hts_index	Inspect high-level HTS index metadata such as sequence names and mapped counts.	SELECT seqname, index_type FROM read_hts_index('vcf_file.bcf');
read_hts_index_spans	table	Metadata	read_hts_index_spans(path, format := NULL, index_path := NULL)	table	rduckhts_hts_index_spans	Expand index metadata into span and chunk rows suitable for low-level index inspection.	SELECT seqname, chunk_beg_vo, chunk_end_vo FROM read_hts_index_spans('vcf_file.bcf') LIMIT 5;
read_hts_index_raw	table_macro	Metadata	read_hts_index_raw(path, format := NULL, index_path := NULL)	table	rduckhts_hts_index_raw	Return the raw on-disk HTS index blob together with basic identifying metadata.	SELECT length(raw) FROM read_hts_index_raw('formatcols.vcf.gz');
bcftools_liftover	scalar	Variants	bcftools_liftover(chrom, pos, ref, alt, chain_path, dst_fasta_ref, src_fasta_ref, max_snp_gap, max_indel_inc, lift_mt, end_pos, no_left_align)	STRUCT	rduckhts_liftover	Row-oriented liftover kernel intended to mirror bcftools +liftover semantics as closely as possible while returning one STRUCT per input row with fields: src_chrom, src_pos, src_ref, src_alt, dest_chrom, dest_pos, dest_end, dest_ref, dest_alt, mapped, reverse_complemented, swap, reject_reason, and note. Set no_left_align := true to skip post-liftover left-alignment of lifted indels (mirrors --no-left-align in bcftools +liftover).	SELECT (bcftools_liftover(chrom, pos, ref, alt, 'hg19ToHg38.over.chain.gz', 'hg38.fa', 'hg19.fa', 1, 250, false, NULL::BIGINT, false)).dest_pos FROM variants;
duckdb_liftover	table_macro	Variants	duckdb_liftover(table_name, chrom_col, pos_col, ref_col := NULL, alt_col := NULL, chain_path := NULL, dst_fasta_ref := NULL, src_fasta_ref := NULL, max_snp_gap := 1, max_indel_inc := 250, lift_mt := false, end_pos_col := NULL, no_left_align := false)	table	rduckhts_liftover	DuckDB-specific wrapper over bcftools_liftover that takes either a table name or a derived-table expression plus column-name strings for chrom/pos/ref/alt and returns the lifted table. The no_left_align parameter mirrors --no-left-align in bcftools +liftover.	SELECT * FROM duckdb_liftover('variants', 'chrom', 'pos', ref_col := 'ref', alt_col := 'alt', chain_path := 'hg19ToHg38.over.chain.gz', dst_fasta_ref := 'hg38.fa'); || SELECT * FROM duckdb_liftover('(SELECT chrom, pos, ref, alt FROM variants) AS v', 'chrom', 'pos', ref_col := 'ref', alt_col := 'alt', chain_path := 'hg19ToHg38.over.chain.gz', dst_fasta_ref := 'hg38.fa');
bcftools_score	table	Variants	bcftools_score(bcf_path, summary_path, use := NULL, columns := 'PLINK', columns_file := NULL, q_score_thr := NULL, use_variant_id := FALSE, counts := FALSE, samples := NULL, force_samples := FALSE, regions := NULL, regions_file := NULL, regions_overlap := 1, targets := NULL, targets_file := NULL, targets_overlap := 0, apply_filters := NULL, include := NULL, exclude := NULL)	table	rduckhts_score	Compute polygenic scores from one genotype BCF/VCF and one summary-statistics file with bcftools +score-compatible GT/DS/HDS/AP/GP/AS dosage semantics, sample subsetting, and region/target/FILTER-string controls.	SELECT * FROM bcftools_score('cohort.bcf', 'gwas.tsv.gz', columns := 'PLINK') LIMIT 5;
bcftools_munge_row	scalar	Variants	bcftools_munge_row(chrom, pos, a1, a2, id, p, z, or, beta, n, n_cas, n_con, info, frq, se, lp, ac, neff, neffdiv2, het_i2, het_p, het_lp, dire, fasta_ref, iffy_tag := 'IFFY', mismatch_tag := 'REF_MISMATCH', ns := NULL, nc := NULL, ne := NULL)	STRUCT		Normalize one summary-statistics row into GWAS-VCF-style fields (chrom/pos/ref/alt/effect metrics), resolving REF/ALT orientation against a FASTA reference and applying swap-aware sign/frequency/count transforms. The output flag `alleles_swapped` means REF/ALT orientation was swapped to match the FASTA reference.	SELECT (bcftools_munge_row('chr1', 12345, 'A', 'G', 'rs1', 0.01, NULL, NULL, 0.12, 1000, NULL, NULL, NULL, 0.3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'ref.fa')).ref;
duckdb_munge	table_macro	Variants	duckdb_munge(table_name, preset := '', column_map := map([''], ['']), column_map_file := '', fasta_ref := NULL, iffy_tag := 'IFFY', mismatch_tag := 'REF_MISMATCH', ns := NULL, nc := NULL, ne := NULL)	table	rduckhts_munge	DuckDB macro wrapper over bcftools_munge_row that maps source columns (via preset or explicit map) and returns normalized GWAS-VCF-style rows with lean outputs and explicit `alleles_swapped` semantics. Output columns: chrom, pos, id, ref, alt, alleles_swapped, filter, ns, ez, nc, es, se, lp, af, ac, ne (16 columns). For METAL meta-analysis output with SI/I2/CQ/ED columns, use duckdb_munge_metal.	SELECT * FROM duckdb_munge('gwas_table', preset := 'PLINK', fasta_ref := 'ref.fa'); || SELECT * FROM duckdb_munge('(SELECT * FROM gwas_table) AS s', column_map := map(['CHR','BP','A1','A2','SNP'], ['chrom','pos','ea','nea','id']), fasta_ref := 'ref.fa');
duckdb_munge_metal	table_macro	Variants	duckdb_munge_metal(table_name, preset := '', column_map := map([''], ['']), column_map_file := '', fasta_ref := NULL, iffy_tag := 'IFFY', mismatch_tag := 'REF_MISMATCH', ns := NULL, nc := NULL, ne := NULL)	table	rduckhts_munge	Extended munge macro with METAL meta-analysis output columns. Same as duckdb_munge but additionally emits: si (imputation info, from INFO input), i2 (Cochran's I² heterogeneity, from HET_I2), cq (Cochran's Q -log10 p, from HET_LP or -log10(HET_P)), and ed (effect direction string, from DIRE; +/- flipped on allele swap). The R wrapper rduckhts_munge() auto-dispatches to this macro when metal keys (INFO, HET_I2, HET_P, HET_LP, DIRE) are present in the resolved column map.	SELECT * FROM duckdb_munge_metal('metal_results', preset := 'METAL', fasta_ref := 'ref.fa'); || SELECT * FROM duckdb_munge_metal('meta', column_map := map(['CHR','BP','A1','A2','SNP','HET_I2','DIRE'], ['chr','pos','ea','nea','snp','HetISq','Direction']), fasta_ref := 'ref.fa');
seq_revcomp	scalar	Sequence UDFs	seq_revcomp(sequence)	VARCHAR		Compute the reverse complement of a DNA sequence using A, C, G, T, and N bases.	SELECT seq_revcomp('ACGTN');
seq_canonical	scalar	Sequence UDFs	seq_canonical(sequence)	VARCHAR		Return the lexicographically smaller of a sequence and its reverse complement.	SELECT seq_canonical('ACGTN');
seq_hash_2bit	scalar	Sequence UDFs	seq_hash_2bit(sequence)	UBIGINT		Encode a short DNA sequence as a 2-bit unsigned integer hash.	SELECT seq_hash_2bit('ACGT');
seq_encode_4bit	scalar	Sequence UDFs	seq_encode_4bit(sequence)	UTINYINT[]		Encode an IUPAC DNA sequence as a list of 4-bit base codes, preserving ambiguity symbols including N.	SELECT seq_encode_4bit('ACGTRYSWKMBDHVN');
seq_decode_4bit	scalar	Sequence UDFs	seq_decode_4bit(codes)	VARCHAR		Decode a list of 4-bit IUPAC DNA base codes back into a sequence string.	SELECT seq_decode_4bit(seq_encode_4bit('ACGTRYSWKMBDHVN'));
seq_gc_content	scalar	Sequence UDFs	seq_gc_content(sequence)	DOUBLE		Compute GC fraction for a DNA sequence as a value between 0 and 1.	SELECT seq_gc_content('ACGT');
seq_kmers	table	Sequence UDFs	seq_kmers(sequence, k, canonical := FALSE)	table		Expand a sequence into positional k-mers with optional canonicalization.	SELECT * FROM seq_kmers('ACGT', 2);
sam_flag_bits	scalar	SAM Flag UDFs	sam_flag_bits(flag)	STRUCT		Decode a SAM flag into a struct of boolean bit fields using explicit SAM-oriented names such as `is_paired`, `is_proper_pair`, `is_next_segment_unmapped`, and `is_supplementary`.	SELECT (sam_flag_bits(99)).is_proper_pair;
sam_flag_has	scalar	SAM Flag UDFs	sam_flag_has(flag, mask)	BOOLEAN		Test whether any bits from the provided SAM flag mask are set in a flag value.	SELECT sam_flag_has(99, 2);
is_forward_aligned	scalar	SAM Flag UDFs	is_forward_aligned(flag)	BOOLEAN		Test whether a mapped segment is aligned to the forward strand. Returns `NULL` for unmapped segments because SAM flag `0x10` does not define genomic strand when `0x4` is set.	SELECT is_forward_aligned(0);
cigar_has_soft_clip	scalar	CIGAR Utils	cigar_has_soft_clip(cigar)	BOOLEAN		Test whether a CIGAR string contains any soft-clipped segment (`S`).	SELECT cigar_has_soft_clip('5S90M5S');
cigar_has_hard_clip	scalar	CIGAR Utils	cigar_has_hard_clip(cigar)	BOOLEAN		Test whether a CIGAR string contains any hard-clipped segment (`H`).	SELECT cigar_has_hard_clip('5H95M');
cigar_left_soft_clip	scalar	CIGAR Utils	cigar_left_soft_clip(cigar)	BIGINT		Return the left-end soft-clipped length from a CIGAR string, or zero if the alignment does not start with `S`.	SELECT cigar_left_soft_clip('5S90M5S');
cigar_right_soft_clip	scalar	CIGAR Utils	cigar_right_soft_clip(cigar)	BIGINT		Return the right-end soft-clipped length from a CIGAR string, or zero if the alignment does not end with `S`.	SELECT cigar_right_soft_clip('5S90M5S');
cigar_query_length	scalar	CIGAR Utils	cigar_query_length(cigar)	BIGINT		Return the query-consuming length from a CIGAR string, counting `M`, `I`, `S`, `=`, and `X`.	SELECT cigar_query_length('5S90M5I');
cigar_aligned_query_length	scalar	CIGAR Utils	cigar_aligned_query_length(cigar)	BIGINT		Return the aligned query length from a CIGAR string, counting `M`, `=`, and `X` but excluding clips and insertions.	SELECT cigar_aligned_query_length('5S90M5I');
cigar_reference_length	scalar	CIGAR Utils	cigar_reference_length(cigar)	BIGINT		Return the reference-consuming length from a CIGAR string, counting `M`, `D`, `N`, `=`, and `X`.	SELECT cigar_reference_length('90M5D');
cigar_has_op	scalar	CIGAR Utils	cigar_has_op(cigar, op)	BOOLEAN		Test whether a CIGAR string contains at least one instance of the requested operator.	SELECT cigar_has_op('5S90M5S', 'S');
is_paired	scalar	SAM Flag UDFs	is_paired(flag)	BOOLEAN		Test whether the SAM flag indicates that the template has multiple segments in sequencing (`0x1`).	SELECT is_paired(99);
is_proper_pair	scalar	SAM Flag UDFs	is_proper_pair(flag)	BOOLEAN		Test whether the SAM flag indicates that each segment is properly aligned according to the aligner (`0x2`).	SELECT is_proper_pair(99);
is_unmapped	scalar	SAM Flag UDFs	is_unmapped(flag)	BOOLEAN		Test whether the read itself is unmapped according to the SAM flag.	SELECT is_unmapped(4);
is_next_segment_unmapped	scalar	SAM Flag UDFs	is_next_segment_unmapped(flag)	BOOLEAN		Test whether the next segment in the template is flagged as unmapped (`0x8`).	SELECT is_next_segment_unmapped(9);
is_reverse_complemented	scalar	SAM Flag UDFs	is_reverse_complemented(flag)	BOOLEAN		Test whether `SEQ` is stored reverse complemented (`0x10`); for mapped reads this corresponds to reverse-strand alignment.	SELECT is_reverse_complemented(16);
is_next_segment_reverse_complemented	scalar	SAM Flag UDFs	is_next_segment_reverse_complemented(flag)	BOOLEAN		Test whether `SEQ` of the next segment in the template is stored reverse complemented (`0x20`).	SELECT is_next_segment_reverse_complemented(32);
is_first_segment	scalar	SAM Flag UDFs	is_first_segment(flag)	BOOLEAN		Test whether the read is marked as the first segment in the template.	SELECT is_first_segment(64);
is_last_segment	scalar	SAM Flag UDFs	is_last_segment(flag)	BOOLEAN		Test whether the read is marked as the last segment in the template.	SELECT is_last_segment(128);
is_secondary	scalar	SAM Flag UDFs	is_secondary(flag)	BOOLEAN		Test whether the alignment is marked as secondary.	SELECT is_secondary(256);
is_qc_fail	scalar	SAM Flag UDFs	is_qc_fail(flag)	BOOLEAN		Test whether the read failed vendor or pipeline quality checks.	SELECT is_qc_fail(512);
is_duplicate	scalar	SAM Flag UDFs	is_duplicate(flag)	BOOLEAN		Test whether the alignment is flagged as a duplicate.	SELECT is_duplicate(1024);
is_supplementary	scalar	SAM Flag UDFs	is_supplementary(flag)	BOOLEAN		Test whether the alignment is marked as supplementary.	SELECT is_supplementary(2048);
