kseq
is a simple fasta/fastq (fastx) format parser library for Rust, its main function is to iterate over the records from fastx files (similar to kseq in C
). It uses shared buffer to read and store records, so the speed is very fast. It supports a plain or gz fastx file or io::stdin
, as well as a fofn (file-of-file-names) file, which contains multiple plain or gz fastx files (one per line).
Using kseq
is very simple. Users only need to call parse_path
to parse the path, and then use iter_record
method to get each record.
parse_path
This function takes a path (Option<String>
) as input, a path can be a fastx file, None
or -
for io::stdin
, or a fofn file. It return a Result
type:
Ok(T)
: An struct T
with the iter_record
method.Err(E)
: An error E
including can't open or read, wrong fastx format or invalid path or file errors.iter_record
This function can be called cyclically, it return an Option
type:
Some(Record)
: An struct Record
with methods:
head
: get sequence id/identifier (&str
)seq
: get sequence (&str
)des
: get sequence description/comment (&str
)sep
: get separator (&str
)qual
: get quality scores (&str
)len
: get sequence length (usize
)Note: call des
, sep
and qual
will return ""
if Record
does have these attributes. head
, seq
, des
, sep
and qual
use unsafe code str::from_utf8_unchecked
.
None
: Stream has reached EOF
.``` use std::env::args; use kseq::path::parse_path;
fn main(){
let path: Option