fxread

Crates.iofxread
lib.rsfxread
version0.2.14
sourcesrc
created_at2022-07-14 19:38:52.647293
updated_at2024-10-17 18:18:50.887286
descriptionA barebones fastx reader for rust
homepage
repositoryhttps://github.com/noamteyssier/fxread
max_upload_size
id625860
size65,476
Noam Teyssier (noamteyssier)

documentation

https://docs.rs/fxread

README

fxread

MIT licensed actions status codecov

A barebones fastx reader for rust.

Summary

This crate attempts to be a faster and more lightweight alternative to bio-rs and provides a standardized interface to working with fasta and fastq formats. The goal of this crate is to be fast and flexible - it is about twice as fast as bio-rs on average but about half as fast than fastq for standard fastx files. The difference between the different crates is reduced heavily though once gzip files are included (see benchmark).

The speed up can be attributed to reducing the total number of vectors allocated for each record - but the limitation compared to fastq is that each record has ownership over its data and is allocated once. This creates extra overhead, but is very convenient as you can treat the reader directly as an iterator.

Usage

Some benefits of this interface is that each FastaReader and FastqReader share the FastxReader trait and act as iterators over Records.

initialize_reader can determine the fastq format from the path name

use fxread::initialize_reader;

let path = "example/sequences.fq";
let reader = initialize_reader(path).unwrap();
assert_eq!(reader.count(), 10);

initialize_reader can handle if the file is gzip or not without changing the downstream usage

use fxread::initialize_reader;

let path = "example/sequences.fq.gz";
let reader = initialize_reader(path).unwrap();
assert_eq!(reader.count(), 10);

Check out the API Documentation for usage

Commit count: 50

cargo fmt