pub struct Reader<R> { /* private fields */ }
Expand description
A GTF reader.
Implementations§
Source§impl<R> Reader<R>
impl<R> Reader<R>
Sourcepub fn get_ref(&self) -> &R
pub fn get_ref(&self) -> &R
Returns a reference to the underlying reader.
§Examples
use noodles_gtf as gtf;
let reader = gtf::io::Reader::new(io::empty());
let _ = 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_gtf as gtf;
let mut reader = gtf::io::Reader::new(io::empty());
let _ = reader.get_mut();
Sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Unwraps and returns the underlying reader.
§Examples
use noodles_gtf as gtf;
let reader = gtf::io::Reader::new(io::empty());
let _ = reader.into_inner();
Source§impl<R> Reader<R>where
R: BufRead,
impl<R> Reader<R>where
R: BufRead,
Sourcepub fn new(inner: R) -> Self
pub fn new(inner: R) -> Self
Creates a GTF reader.
§Examples
use noodles_gtf as gtf;
let data = [];
let reader = gtf::io::Reader::new(&data[..]);
Sourcepub fn read_line(&mut self, line: &mut Line) -> Result<usize>
pub fn read_line(&mut self, line: &mut Line) -> Result<usize>
Reads a GTF line.
§Examples
use noodles_gtf as gtf;
let src = b"##format: gtf\nsq0\tNOODLES\tgene\t8\t13\t.\t+\t.\tid 0;\n";
let mut reader = gtf::io::Reader::new(&src[..]);
let mut line = gtf::Line::default();
reader.read_line(&mut line)?;
assert_eq!(line.kind(), gtf::line::Kind::Comment);
reader.read_line(&mut line)?;
assert_eq!(line.kind(), gtf::line::Kind::Record);
assert_eq!(reader.read_line(&mut line)?, 0);
Examples found in repository?
examples/gtf_count.rs (line 23)
13fn main() -> io::Result<()> {
14 let src = env::args().nth(1).expect("missing src");
15
16 let mut reader = File::open(src)
17 .map(BufReader::new)
18 .map(gtf::io::Reader::new)?;
19
20 let mut line = gtf::Line::default();
21 let mut n = 0;
22
23 while reader.read_line(&mut line)? != 0 {
24 if line.as_record().is_some() {
25 n += 1;
26 }
27 }
28
29 println!("{n}");
30
31 Ok(())
32}
More examples
examples/gtf_view.rs (line 25)
13fn main() -> io::Result<()> {
14 let src = env::args().nth(1).expect("missing src");
15
16 let mut reader = File::open(src)
17 .map(BufReader::new)
18 .map(gtf::io::Reader::new)?;
19
20 let stdout = io::stdout().lock();
21 let mut writer = gtf::io::Writer::new(BufWriter::new(stdout));
22
23 let mut line = gtf::Line::default();
24
25 while reader.read_line(&mut line)? != 0 {
26 if let Some(result) = line.as_record() {
27 let record = result?;
28 writer.write_feature_record(&record)?;
29 }
30 }
31
32 Ok(())
33}
Sourcepub fn lines(&mut self) -> impl Iterator<Item = Result<Line>> + '_
pub fn lines(&mut self) -> impl Iterator<Item = Result<Line>> + '_
Returns an iterator over lines starting from the current stream position.
§Examples
use noodles_gtf as gtf;
let src = b"##format: gtf\nsq0\tNOODLES\tgene\t8\t13\t.\t+\t.\tid 0;\n";
let mut reader = gtf::io::Reader::new(&src[..]);
let mut lines = reader.lines();
let line = lines.next().transpose()?;
assert_eq!(line.map(|l| l.kind()), Some(gtf::line::Kind::Comment));
let line = lines.next().transpose()?;
assert_eq!(line.map(|l| l.kind()), Some(gtf::line::Kind::Record));
assert!(lines.next().is_none());
Sourcepub fn line_bufs(&mut self) -> impl Iterator<Item = Result<LineBuf>> + '_
pub fn line_bufs(&mut self) -> impl Iterator<Item = Result<LineBuf>> + '_
Returns an iterator over line buffers starting from the current stream position.
§Examples
use bstr::BString;
use noodles_gtf as gtf;
let data = b"##format: gtf
sq0\tNOODLES\tgene\t8\t13\t.\t+\t.\tgene_id \"g0\"; transcript_id \"t0\";
";
let mut reader = gtf::io::Reader::new(&data[..]);
let mut lines = reader.line_bufs();
let line = lines.next().transpose()?;
assert_eq!(line, Some(gtf::LineBuf::Comment(BString::from("#format: gtf"))));
let line = lines.next().transpose()?;
assert!(matches!(line, Some(gtf::LineBuf::Record(_))));
assert!(lines.next().is_none());
Sourcepub fn record_bufs(&mut self) -> impl Iterator<Item = Result<RecordBuf>> + '_
pub fn record_bufs(&mut self) -> impl Iterator<Item = Result<RecordBuf>> + '_
Returns an iterator over record buffers starting from the current stream position.
§Examples
use noodles_core::Position;
use noodles_gtf as gtf;
let src = b"##format: gtf
sq0\tNOODLES\tgene\t8\t13\t.\t+\t.\tgene_id \"g0\"; transcript_id \"t0\";
";
let mut reader = gtf::io::Reader::new(&src[..]);
let mut record_bufs = reader.record_bufs();
let record = record_bufs.next().transpose()?;
assert_eq!(record.map(|r| r.start()), Position::new(8));
// ...
assert!(record_bufs.next().is_none());
Source§impl<R> Reader<Reader<R>>
impl<R> Reader<Reader<R>>
Sourcepub fn query<'r, I>(
&'r mut self,
index: &I,
region: &'r Region,
) -> Result<impl Iterator<Item = Result<RecordBuf>> + 'r>where
I: BinningIndex,
pub fn query<'r, I>(
&'r mut self,
index: &I,
region: &'r Region,
) -> Result<impl Iterator<Item = Result<RecordBuf>> + 'r>where
I: BinningIndex,
Returns an iterator over records that intersects the given region.
Examples found in repository?
examples/gtf_query.rs (line 25)
13fn main() -> Result<(), Box<dyn std::error::Error>> {
14 let mut args = env::args().skip(1);
15 let src = args.next().expect("missing src");
16 let region = args.next().expect("missing region").parse()?;
17
18 let index_src = format!("{src}.csi");
19 let index = csi::fs::read(index_src)?;
20
21 let mut reader = File::open(src)
22 .map(bgzf::io::Reader::new)
23 .map(gtf::io::Reader::new)?;
24
25 let query = reader.query(&index, ®ion)?;
26
27 let stdout = io::stdout().lock();
28 let mut writer = gtf::io::Writer::new(stdout);
29
30 for result in query {
31 let record = result?;
32 writer.write_record(&record)?;
33 }
34
35 Ok(())
36}
Auto Trait Implementations§
impl<R> Freeze for Reader<R>where
R: Freeze,
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§
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