genepred

Crates.iogenepred
lib.rsgenepred
version0.0.8
created_at2025-11-13 17:34:33.09656+00
updated_at2026-01-20 14:24:26.039182+00
descriptionport for the GenePred format in Rust
homepagehttps://github.com/alejandrogzi/genepred
repositoryhttps://github.com/alejandrogzi/genepred
max_upload_size
id1931571
size233,289
Alejandro Gonzales-Irribarren (alejandrogzi)

documentation

README

genepred

Version Badge Crates.io Version GitHub License Crates.io Total Downloads

a port for the GenePred format in Rust

docs . usage . features . examples

Overview

This library provides a port to read genomic interval data in BED, GTF, and GFF (+ gz/zst/bz2) formats, representing them all as GenePred records.

Quick Start

Add this to your Cargo.toml:

[dependencies]
genepred = "0.0.8"

# Optional features
genepred = { version = "0.0.8", features = ["gzip", "zstd", "bz2", "mmap", "rayon"] }

Usage

// Enable both "rayon" and "mmap" features in Cargo.toml
use genepred::{Reader, Bed12, Gtf};
use rayon::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Parallel processing of BED files, includes .gz/.zst/.bz2 files
    let bed_reader = Reader::<Bed12>::from_mmap("data/large.bed")?;

    if let Ok(records) = bed_reader.par_records() {
        let count = records
            .filter_map(Result::ok)
            .filter(|r| r.strand.map(|s| s.is_plus()).unwrap_or(false))
            .count();
        println!("Found {} records on plus strand", count);
    }

    // Parallel processing of GTF files, includes .gz/.zst/.bz2 files
    let gtf_reader = Reader::<Gtf>::from_mmap("data/annotations.gtf")?;

    if let Ok(records) = gtf_reader.par_records() {
        let total_exons: usize = records
            .filter_map(Result::ok)
            .map(|r| r.exon_count())
            .sum();
        println!("Total exons: {}", total_exons);
    }

    Ok(())
}

Features

  • mmap: Enable memory-mapped file support (adds memmap2 dependency)
  • rayon: Enable parallel processing (adds rayon dependency)
  • gzip: Enable gzip support (adds flate2 dependency)
  • zstd: Enable zstd support (adds zstd dependency)
  • bz2: Enable bzip2 support (adds bzip2 dependency)
Commit count: 55

cargo fmt