polars-bio 是基于 Polars、Apache Arrow 与 Apache DataFusion 构建的高性能 Python 库,面向基因组区间运算与生物信息文件 I/O。它提供以 DataFrame 为中心的 API,用于区间算术(overlap、nearest、merge、coverage、complement、subtract、cluster、count_overlaps)以及常见生物信息格式的读写,包括 BED、VCF、VCF Zarr、BAM、CRAM、GFF、GTF、FASTA、FASTQ、SAM 和 Hi-C pairs。资料称其在真实基因组基准上比 bioframe 快 6-38 倍。
主要能力包括:8 种核心区间操作;通过 scan_、sink_ 与 DataFusion 流式执行实现超内存数据处理;支持 S3、GCS、Azure 云存储与 GZIP、BGZF 压缩,并支持谓词下推;提供函数式与方法链式两种 API;通过 DataFusion SQL 引擎运行 SQL 查询;可从 BAM/CRAM 计算逐碱基深度(pileup),支持 CIGAR 感知与质量过滤。
用法方面,安装需 Python 3.11–3.14,命令为 uv pip install "polars-bio==0.31.0",pandas 兼容版本为 uv pip install "polars-bio[pandas]==0.31.0"。区间操作默认返回 LazyFrame,可用 .collect() 或 output_type="polars.DataFrame"。函数式写法如 pb.overlap(df1, df2);方法链式需在 LazyFrame 上使用 .pb 访问器,如 df1.lazy().pb.overlap(df2);DataFrame 上的 .pb 仅提供写操作。列默认命名为 chrom、start、end,可用 cols1/cols2 自定义。坐标默认 1-based,可通过 pb.set_option("datafusion.bio.coordinate_system_zero_based", True) 切换,BED 读取时自动转换。
适用场景包括基因组区间分析、生信格式转换、大基因组流式处理、SQL 查询基因组数据、从 bioframe 迁移、从 BAM/CRAM 计算读深。限制与注意事项:位置为 32 位整数,坐标上限约 21 亿;read_bam/scan_bam 需要 .bai 索引;CRAM 需用 read_cram/scan_cram/register_cram 并提供 reference_path;DataFusion 并行默认仅 1 个分区,需通过 datafusion.execution.target_partitions 开启;两输入操作的 probe-build 顺序会影响结果列与性能,建议第一个参数传较大 DataFrame。价格、授权等资料暂未提供。