Struct noodles_cram::reader::Reader
source · [−]pub struct Reader<R> where
R: Read, { /* private fields */ }
Expand description
A CRAM reader.
The CRAM format is comprised of four main parts: 1) a file definition, 2) a file header, 3) a list of data containers, and 4) an end-of-file (EOF) container.
Examples
use noodles_cram as cram;
use noodles_fasta as fasta;
let repository = fasta::Repository::default();
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
reader.read_file_definition()?;
let header = reader.read_file_header()?.parse()?;
for result in reader.records(&repository, &header) {
let record = result?;
println!("{:?}", record);
}
Implementations
sourceimpl<R> Reader<R> where
R: Read,
impl<R> Reader<R> where
R: Read,
sourcepub fn new(reader: R) -> Self
pub fn new(reader: R) -> Self
Creates a CRAM reader.
Examples
use noodles_cram as cram;
let mut reader = File::open("sample.bam").map(cram::Reader::new)?;
sourcepub fn get_ref(&self) -> &R
pub fn get_ref(&self) -> &R
Returns a reference to the underlying reader.
Examples
use noodles_cram as cram;
let data = [];
let reader = cram::Reader::new(&data[..]);
assert!(reader.get_ref().is_empty());
sourcepub fn get_mut(&mut self) -> &mut R
pub fn get_mut(&mut self) -> &mut R
Returns a mutable reference to the underlying reader.
Examples
use noodles_cram as cram;
let data = [];
let mut reader = cram::Reader::new(&data[..]);
assert!(reader.get_mut().is_empty());
sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Unwraps and returns the underlying reader.
Examples
use noodles_cram as cram;
let data = [];
let reader = cram::Reader::new(&data[..]);
assert!(reader.into_inner().is_empty());
sourcepub fn read_file_definition(&mut self) -> Result<FileDefinition>
pub fn read_file_definition(&mut self) -> Result<FileDefinition>
Reads the CRAM file definition.
The CRAM magic number is also checked.
The position of the stream is expected to be at the start.
Examples
use noodles_cram as cram;
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
let file_definition = reader.read_file_definition()?;
sourcepub fn read_file_header(&mut self) -> Result<String>
pub fn read_file_header(&mut self) -> Result<String>
Reads the raw SAM header.
The position of the stream is expected to be at the CRAM header container, i.e., directly after the file definition.
This returns the raw SAM header as a String
. It can subsequently be parsed as a
noodles_sam::Header
.
Examples
use noodles_cram as cram;
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
reader.read_file_definition()?;
let header = reader.read_file_header()?;
sourcepub fn read_data_container(&mut self) -> Result<Option<DataContainer>>
pub fn read_data_container(&mut self) -> Result<Option<DataContainer>>
Reads a data container.
This returns None
if the container header is the EOF container header, which signals the
end of the stream.
Examples
use noodles_cram as cram;
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
reader.read_file_definition()?;
reader.read_file_header()?;
while let Some(container) = reader.read_data_container()? {
// ...
}
sourcepub fn records<'a>(
&'a mut self,
reference_sequence_repository: &'a Repository,
header: &'a Header
) -> Records<'a, R>ⓘNotable traits for Records<'a, R>impl<'a, R> Iterator for Records<'a, R> where
R: Read, type Item = Result<Record>;
pub fn records<'a>(
&'a mut self,
reference_sequence_repository: &'a Repository,
header: &'a Header
) -> Records<'a, R>ⓘNotable traits for Records<'a, R>impl<'a, R> Iterator for Records<'a, R> where
R: Read, type Item = Result<Record>;
R: Read, type Item = Result<Record>;
Returns a iterator over records starting from the current stream position.
The stream is expected to be at the start of a data container.
Examples
use noodles_cram as cram;
use noodles_fasta as fasta;
let repository = fasta::Repository::default();
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
reader.read_file_definition()?;
let header = reader.read_file_header()?.parse()?;
for result in reader.records(&repository, &header) {
let record = result?;
println!("{:?}", record);
}
sourceimpl<R> Reader<R> where
R: Read + Seek,
impl<R> Reader<R> where
R: Read + Seek,
sourcepub fn seek(&mut self, pos: SeekFrom) -> Result<u64>
pub fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seeks the underlying reader to the given position.
Positions typically come from the associated CRAM index file.
Examples
use std::io::SeekFrom;
use noodles_cram as cram;
let mut reader = File::open("sample.cram").map(cram::Reader::new)?;
reader.seek(SeekFrom::Start(17711))?;
Trait Implementations
sourceimpl<R> AlignmentReader for Reader<R> where
R: Read,
impl<R> AlignmentReader for Reader<R> where
R: Read,
sourcefn read_alignment_header(&mut self) -> Result<Header>
fn read_alignment_header(&mut self) -> Result<Header>
Reads a SAM header.
sourcefn alignment_records<'a>(
&'a mut self,
reference_sequence_repository: &'a Repository,
header: &'a Header
) -> Box<dyn Iterator<Item = Result<Box<dyn AlignmentRecord>>> + 'a>
fn alignment_records<'a>(
&'a mut self,
reference_sequence_repository: &'a Repository,
header: &'a Header
) -> Box<dyn Iterator<Item = Result<Box<dyn AlignmentRecord>>> + 'a>
Returns an iterator over records.
Auto Trait Implementations
impl<R> RefUnwindSafe for Reader<R> where
R: RefUnwindSafe,
impl<R> Send for Reader<R> where
R: Send,
impl<R> Sync for Reader<R> where
R: Sync,
impl<R> Unpin for Reader<R> where
R: Unpin,
impl<R> UnwindSafe for Reader<R> where
R: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more