pub struct Reader<const N: usize, R> { /* private fields */ }Expand description
A BED reader.
Implementations§
Source§impl<R, const N: usize> Reader<N, R>
impl<R, const N: usize> Reader<N, R>
Sourcepub fn get_ref(&self) -> &R
pub fn get_ref(&self) -> &R
Returns a reference to the underlying reader.
§Examples
use noodles_bed as bed;
let reader = bed::io::Reader::<3, _>::new(io::empty());
let _inner = reader.get_ref();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_bed as bed;
let mut reader = bed::io::Reader::<3, _>::new(io::empty());
let _inner = reader.get_mut();Sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Returns the underlying reader.
§Examples
use noodles_bed as bed;
let reader = bed::io::Reader::<3, _>::new(io::empty());
let _inner = reader.into_inner();Source§impl<const N: usize, R> Reader<N, R>where
R: BufRead,
impl<const N: usize, R> Reader<N, R>where
R: BufRead,
Sourcepub fn new(inner: R) -> Self
pub fn new(inner: R) -> Self
Creates a BED reader.
§Examples
use noodles_bed as bed;
let reader = bed::io::Reader::<3, _>::new(io::empty());Examples found in repository?
examples/bed_query.rs (line 32)
13fn main() -> Result<(), Box<dyn std::error::Error>> {
14 let mut args = env::args().skip(1);
15
16 let src = args.next().expect("missing src");
17 let region: Region = args.next().expect("missing region").parse()?;
18
19 let index_src = format!("{src}.tbi");
20 let index = tabix::fs::read(index_src)?;
21
22 let header = index.header().expect("missing tabix header");
23 let reference_sequence_id = header
24 .reference_sequence_names()
25 .get_index_of(region.name())
26 .expect("invalid reference sequence name");
27
28 let mut decoder = File::open(src).map(bgzf::io::Reader::new)?;
29 let chunks = index.query(reference_sequence_id, region.interval())?;
30 let query = csi::io::Query::new(&mut decoder, chunks);
31
32 let mut reader = bed::io::Reader::<3, _>::new(query);
33 let mut record = bed::Record::default();
34
35 let stdout = io::stdout().lock();
36 let mut writer = bed::io::Writer::<3, _>::new(stdout);
37
38 while reader.read_record(&mut record)? != 0 {
39 let start = record.feature_start()?;
40 let end = record.feature_end().expect("missing feature end")?;
41 let interval = (start..=end).into();
42
43 if !region.interval().intersects(interval) {
44 continue;
45 }
46
47 writer.write_record(&record)?;
48 }
49
50 Ok(())
51}Source§impl<R> Reader<3, R>where
R: BufRead,
impl<R> Reader<3, R>where
R: BufRead,
Sourcepub fn read_record(&mut self, record: &mut Record<3>) -> Result<usize>
pub fn read_record(&mut self, record: &mut Record<3>) -> Result<usize>
Reads a BED3+ record.
§Examples
use noodles_bed as bed;
let mut reader = bed::io::Reader::<3, _>::new(io::empty());
let mut record = bed::Record::default();
reader.read_record(&mut record)?;Examples found in repository?
examples/bed_count.rs (line 21)
11fn main() -> io::Result<()> {
12 let src = env::args().nth(1).expect("missing src");
13
14 let mut reader = File::open(src)
15 .map(BufReader::new)
16 .map(bed::io::Reader::<3, _>::new)?;
17
18 let mut record = bed::Record::default();
19 let mut n = 0;
20
21 while reader.read_record(&mut record)? != 0 {
22 n += 1;
23 }
24
25 println!("{n}");
26
27 Ok(())
28}More examples
examples/bed_view.rs (line 23)
11fn main() -> Result<(), Box<dyn std::error::Error>> {
12 let src = env::args().nth(1).expect("missing src");
13
14 let mut reader = File::open(src)
15 .map(BufReader::new)
16 .map(bed::io::Reader::<3, _>::new)?;
17
18 let stdout = io::stdout().lock();
19 let mut writer = bed::io::Writer::<3, _>::new(stdout);
20
21 let mut record = bed::Record::default();
22
23 while reader.read_record(&mut record)? != 0 {
24 writer.write_record(&record)?;
25 }
26
27 Ok(())
28}examples/bed_query.rs (line 38)
13fn main() -> Result<(), Box<dyn std::error::Error>> {
14 let mut args = env::args().skip(1);
15
16 let src = args.next().expect("missing src");
17 let region: Region = args.next().expect("missing region").parse()?;
18
19 let index_src = format!("{src}.tbi");
20 let index = tabix::fs::read(index_src)?;
21
22 let header = index.header().expect("missing tabix header");
23 let reference_sequence_id = header
24 .reference_sequence_names()
25 .get_index_of(region.name())
26 .expect("invalid reference sequence name");
27
28 let mut decoder = File::open(src).map(bgzf::io::Reader::new)?;
29 let chunks = index.query(reference_sequence_id, region.interval())?;
30 let query = csi::io::Query::new(&mut decoder, chunks);
31
32 let mut reader = bed::io::Reader::<3, _>::new(query);
33 let mut record = bed::Record::default();
34
35 let stdout = io::stdout().lock();
36 let mut writer = bed::io::Writer::<3, _>::new(stdout);
37
38 while reader.read_record(&mut record)? != 0 {
39 let start = record.feature_start()?;
40 let end = record.feature_end().expect("missing feature end")?;
41 let interval = (start..=end).into();
42
43 if !region.interval().intersects(interval) {
44 continue;
45 }
46
47 writer.write_record(&record)?;
48 }
49
50 Ok(())
51}Auto Trait Implementations§
impl<const N: usize, R> Freeze for Reader<N, R>where
R: Freeze,
impl<const N: usize, R> RefUnwindSafe for Reader<N, R>where
R: RefUnwindSafe,
impl<const N: usize, R> Send for Reader<N, R>where
R: Send,
impl<const N: usize, R> Sync for Reader<N, R>where
R: Sync,
impl<const N: usize, R> Unpin for Reader<N, R>where
R: Unpin,
impl<const N: usize, R> UnwindSafe for Reader<N, R>where
R: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more