Expand description
§genepred
A Rust port for reading genomic interval data in BED, GTF, and GFF formats,
representing all records as unified GenePred structures.
§Quick Start
[dependencies]
genepred = "0.0.4"
# Optional features
genepred = { version = "0.0.4", features = ["gzip", "zstd", "bz2", "mmap", "rayon"] }§Usage
ⓘ
// Enable both "rayon" and "mmap" features in Cargo.toml
use genepred::{Reader, Bed12, Gtf, Strand};
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 == Strand::Forward).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 (addsmemmap2dependency)rayon: Enable parallel processing (addsrayondependency)gzip: Enable gzip support (addsflate2dependency)zstd: Enable zstd support (addszstddependency)bz2: Enable bzip2 support (addsbzip2dependency)
Re-exports§
pub use genepred::ExtraValue;pub use genepred::Extras;pub use genepred::GenePred;pub use gxf::Gff;pub use gxf::Gtf;pub use reader::Reader;pub use reader::ReaderBuilder;pub use reader::ReaderMode;pub use reader::ReaderOptions;pub use reader::ReaderResult;pub use strand::Strand;pub use writer::Writer;pub use writer::WriterError;pub use writer::WriterOptions;pub use writer::WriterResult;pub use bed::*;