| Crates.io | genepred |
| lib.rs | genepred |
| version | 0.0.8 |
| created_at | 2025-11-13 17:34:33.09656+00 |
| updated_at | 2026-01-20 14:24:26.039182+00 |
| description | port for the GenePred format in Rust |
| homepage | https://github.com/alejandrogzi/genepred |
| repository | https://github.com/alejandrogzi/genepred |
| max_upload_size | |
| id | 1931571 |
| size | 233,289 |
a port for the GenePred format in Rust
docs .
usage .
features .
examples
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.
Add this to your Cargo.toml:
[dependencies]
genepred = "0.0.8"
# Optional features
genepred = { version = "0.0.8", features = ["gzip", "zstd", "bz2", "mmap", "rayon"] }
// 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(())
}
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)