kalarislabs/research-agent-skills/polars-bio
Claude Code and agent skill by kalarislabs/research-agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Python library polars-bio for genomic interval operations and bioinformatics file I/O on Polars DataFrames, built on Arrow and DataFusion. Covers overlap, nearest, merge, cluster, coverage, complement, subtract, count_overlaps, per-base pileup depth, and read/scan/write of BED, VCF, BAM, CRAM, SAM, GFF/GTF, FASTA, FASTQ, plus SQL queries over those files. Use when intersecting or merging genomic intervals in Polars. Use when reading or streaming large BED, VCF, or BAM files, including from S3, GCS, or Azure. Use when computing read depth from BAM or CRAM. Use when running SQL on genomic files. Use when migrating bioframe code to a faster alternative. Not for pandas-only workflows that do not use Polars or DataFusion.
Install
npx vskill@latest install kalarislabs/research-agent-skills/polars-bioSKILL.md
polars-bio
Overview
polars-bio is a high-performance Python library for genomic interval operations and bioinformatics file I/O, built on Polars, Apache Arrow, and Apache DataFusion. It provides a familiar DataFrame-centric API for interval arithmetic (overlap, nearest, merge, coverage, complement, subtract) and reading/writing common bioinformatics formats (BED, VCF, BAM, CRAM, GFF/GTF, FASTA, FASTQ).
Key value propositions:
- 6-38x faster than bioframe on real-world genomic benchmarks
- Streaming/out-of-core support for large genomes via DataFusion
- Cloud-native file I/O (S3, GCS, Azure) with predicate pushdown
- Two API styles: functional (
pb.overlap(df1, df2)) and method-chaining (df1.lazy().pb.overlap(df2)) - SQL interface for genomic data via DataFusion SQL engine
When to Use This Skill
Use this skill when:
- Performing genomic interval operations (overlap, nearest, merge, coverage, complement, subtract)
- Reading/writing bioinformatics file formats (BED, VCF, BAM, CRAM, GFF/GTF, FASTA, FASTQ)
- Processing large genomic datasets that don't fit in memory (streaming mode)
- Running SQL queries on genomic data files
- Migrating from bioframe to a faster alternative
- Computing read depth/pileup from BAM/CRAM files
- Working with Polars DataFrames containing genomic intervals
Quick Start
Installation
Requires Python 3.11–3.14 (see PyPI).
For pandas compatibility (pandas ≥3.0):
Basic Overlap Example
Reading a BED File
Core Capabilities
1. Genomic Interval Operations
polars-bio provides 8 core interval operations for genomic range arithmetic. All operations accept Polars DataFrames with chrom, start, end columns (configurable). All operations return a LazyFrame by default (use output_type="polars.DataFrame" for eager results).
Operations:
overlap/count_overlaps- Find or count overlapping intervals between two sets (overlap_output="left"returns df1-only hits since 0.30.0)nearest- Find nearest intervals (with configurablek,overlap,distanceparams)merge- Merge overlapping/bookended intervals within a setcluster- Assign cluster IDs to overlapping intervalscoverage- Compute per-interval coverage counts (two-input operation)complement- Find gaps between intervals within a genomesubtract- Remove portions of intervals that overlap another set
Example:
Reference: See references/interval_operations.md for detailed documentation on all operations, parameters, output schemas, and performance considerations.
2. Bioinformatics File I/O
Read and write common bioinformatics formats with read_*, scan_*, write_*, and sink_* functions. Supports cloud storage (S3, GCS, Azure) and compression (GZIP, BGZF).
Supported formats:
- BED - Genomic intervals (
read_bed,scan_bed,write_*via generic) - VCF - Genetic variants (
read_vcf,scan_vcf,write_vcf,sink_vcf) - VCF Zarr - Analysis-ready Zarr stores (
read_vcf_zarr,scan_vcf_zarr; local directory paths) - BAM - Aligned reads (
read_bam,scan_bam,write_bam,sink_bam) - CRAM - Compressed alignments (
read_cram,scan_cram,write_cram,sink_cram) - GFF - Gene annotations (
read_gff,scan_gff) - GTF - Gene annotations (
read_gtf,scan_gtf) - FASTA - Reference sequences (
read_fasta,scan_fasta,write_fasta,sink_fasta) - FASTQ - Sequencing reads (
read_fastq,scan_fastq,write_fastq,sink_fastq) - SAM - Text alignments (
read_sam,scan_sam,write_sam,sink_sam) - Hi-C pairs - Chromatin contacts (
read_pairs,scan_pairs)
Example:
Reference: See references/file_io.md for per-format column schemas, parameters, cloud storage options, and compression support.
3. SQL Data Processing
Register bioinformatics files as tables and query them using DataFusion SQL. Combines the power of SQL with polars-bio's genomic-aware readers.
Reference: See references/sql_processing.md for register functions, SQL syntax, and examples.
4. Pileup Operations
Compute per-base read depth from BAM/CRAM files with CIGAR-aware depth calculation.
Reference: See references/pileup_operations.md for parameters and integration patterns.
Key Concepts
Coordinate Systems
polars-bio defaults to 1-based coordinates (genomic convention). This can be changed globally:
I/O functions also accept use_zero_based to set coordinate metadata on the resulting DataFrame:
Important: BED files are always 0-based half-open in the file format. polars-bio handles the conversion automatically when reading BED files. Coordinate metadata is attached to DataFrames by I/O functions and propagated through operations.
Two API Styles
Functional API - standalone functions, explicit inputs:
Method-chaining API - via .pb accessor on LazyFrames (not DataFrames):
Important: The .pb accessor for interval operations is only available on LazyFrame. On DataFrame, .pb provides write operations only (write_bam, write_vcf, etc.).
Method-chaining enables fluent pipelines:
Probe-Build Architecture
For two-input operations (overlap, nearest, count_overlaps, coverage), polars-bio uses a probe-build join strategy:
- The first DataFrame is the probe (iterated over)
- The second DataFrame is the build (indexed for lookup)
For best performance, pass the larger DataFrame as the first argument (probe) and the smaller one as the second (build).
Column Conventions
By default, polars-bio expects columns named chrom, start, end. Custom column names can be specified via lists:
Return Types and Collecting Results
All interval operations and pb.sql() return a LazyFrame by default. Use .collect() to materialize results, or pass output_type="polars.DataFrame" for eager evaluation:
Streaming and Out-of-Core Processing
For datasets larger than available RAM, use scan_* functions and streaming execution:
DataFusion streaming is enabled by default for interval operations, processing data in batches without loading the full dataset into memory.
Common Pitfalls
- `.pb` accessor on DataFrame vs LazyFrame: Interval operations (overlap, merge, etc.) are only on
LazyFrame.pb.DataFrame.pbonly has write methods. Use.lazy()to convert before chaining interval ops.
- LazyFrame returns: All interval operations and
pb.sql()returnLazyFrameby default. Don't forget.collect()or useoutput_type="polars.DataFrame".
- Column name mismatches: polars-bio expects
chrom,start,endby default. Usecols1/cols2parameters (as lists) if your columns have different names.
- Coordinate system metadata: Interval operations read coordinate metadata from I/O functions or DataFrame
config_meta. For manually built DataFrames, setdf.config_meta.set(coordinate_system_zero_based=True)(0-based) orFalse(1-based). If metadata is missing, polars-bio falls back to the globaldatafusion.bio.coordinate_system_zero_basedsetting (with a warning). Setpb.set_option("datafusion.bio.coordinate_system_check", True)to raiseMissingCoordinateSystemErrorinstead. Mismatched systems between inputs raiseCoordinateSystemMismatchError.
- Probe-build order matters: For overlap, nearest, and coverage, the first DataFrame is probed against the second. Swapping arguments changes which intervals appear in the left vs right output columns, and can affect performance.
- INT32 position limit: Genomic positions are stored as 32-bit integers, limiting coordinates to ~2.1 billion. This is sufficient for all known genomes but may be an issue with custom coordinate spaces.
- BAM index requirements:
read_bamandscan_bamrequire a.baiindex file alongside the BAM. Create one withsamtools indexif missing.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/polars-bio/SKILL.md
Popularity
- Repository stars
- 4
- 7-day trend score
- 13
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kalarislabs/research-agent-skills/polars-bio)