pub mod bam;
pub mod casava;
pub mod fast5;
pub mod fastq;
pub mod group;
pub use bam::open_sequence_file;
pub use group::SequenceFileGroup;
#[derive(Debug, Clone)]
pub struct Sequence {
pub id: String,
pub sequence: Vec<u8>,
pub quality: Vec<u8>,
pub is_filtered: bool,
pub colorspace: Option<Vec<u8>>,
}
impl Sequence {
pub fn new(id: String, mut sequence: Vec<u8>, quality: Vec<u8>) -> Self {
sequence.make_ascii_uppercase();
Self {
id,
sequence,
quality,
is_filtered: false,
colorspace: None,
}
}
pub fn len(&self) -> usize {
self.sequence.len()
}
pub fn is_empty(&self) -> bool {
self.sequence.is_empty()
}
}
pub trait SequenceFile: Send {
fn next(&mut self) -> Option<std::io::Result<Sequence>>;
fn name(&self) -> &str;
fn is_colorspace(&self) -> bool;
fn percent_complete(&self) -> f64;
}