Struct seq_io::fasta::Reader[][src]

pub struct Reader<R: Read, P = DoubleUntil8M> { /* fields omitted */ }

Parser for FASTA files.

Methods

impl<R> Reader<R, DoubleUntil8M> where
    R: Read
[src]

Creates a new reader with the default buffer size of 64 KiB

Example:

use seq_io::fasta::{Reader,Record};
let fasta = b">id\nSEQUENCE";

let mut reader = Reader::new(&fasta[..]);
let record = reader.next().unwrap().unwrap();
assert_eq!(record.id(), Ok("id"))

Creates a new reader with a given buffer capacity

impl Reader<File, DoubleUntil8M>
[src]

Creates a reader from a file path.

Example:

use seq_io::fasta::Reader;

let mut reader = Reader::from_path("seqs.fasta").unwrap();

// (... do something with the reader)

impl<R, P> Reader<R, P> where
    R: Read,
    P: BufPolicy
[src]

Returns a reader with the given buffer policy applied

Returns the BufPolicy of the reader

Searches the next FASTA record and returns a RefRecord that borrows its data from the underlying buffer of this reader.

Example:

use seq_io::fasta::{Reader,Record};

let mut reader = Reader::from_path("seqs.fasta").unwrap();

while let Some(record) = reader.next() {
    let record = record.unwrap();
    println!("{}", record.id().unwrap());
}

Updates a RecordSet with new data. The contents of the internal buffer are just copied over to the record set and the positions of all records are found. Old data will be erased. Returns None if the input reached its end.

Returns the current position (useful with seek()). If next() or proceed() have not yet been called, None will be returned.

Example

use seq_io::fasta::{Reader,Position};

let fasta = b">id1
ACGT
>id2
TGCA";

let mut reader = Reader::new(&fasta[..]);

// skip one record
reader.next().unwrap();
// second position
reader.next().unwrap();

assert_eq!(reader.position(), Some(&Position::new(3, 10)));

Important traits for RecordsIter<'a, R, P>

Returns a borrowed iterator over all FASTA records. The records are owned (OwnedRecord), this is therefore slower than using Reader::next().

Example

use seq_io::fasta::{Reader,OwnedRecord};

let fasta = b">id1
ACGT
>id2
TGCA";

let mut reader = Reader::new(&fasta[..]);

let records: Result<Vec<_>, _> = reader
    .records()
    .collect();

assert_eq!(records.unwrap(),
    vec![
        OwnedRecord {head: b"id1".to_vec(), seq: b"ACGT".to_vec()},
        OwnedRecord {head: b"id2".to_vec(), seq: b"TGCA".to_vec()}
    ]
);

Important traits for RecordsIntoIter<R, P>

Returns an iterator over all FASTA records like Reader::records(), but with the difference that it owns the underlying reader.

impl<R, P> Reader<R, P> where
    R: Read + Seek,
    P: BufPolicy
[src]

Seeks to a specified position. Keeps the underyling buffer if the seek position is found within it, otherwise it has to be discarded. If an error was returned before, seeking to that position will return the same error. The same is not always true with None. If there is no newline character at the end of the file, the last record will be returned instead of None. Returns an iterator over all FASTA records like Reader::records(), but with the difference that it owns the underlying reader.

Example

use seq_io::fasta::{Reader,Position,OwnedRecord};
use std::io::Cursor;

let fasta = b">id1
ACGT
>id2
TGCA";

let mut cursor = Cursor::new(&fasta[..]);
let mut reader = Reader::new(cursor);

// read the first record and get its position
let record1 = reader.next().unwrap().unwrap().to_owned_record();
let pos1 = reader.position().unwrap().to_owned();

// read the second record
reader.next().unwrap().unwrap();

// now seek to position of first record
reader.seek(&pos1);
assert_eq!(reader.next().unwrap().unwrap().to_owned_record(), record1);

Trait Implementations

impl<R, P> Reader for Reader<R, P> where
    R: Read,
    P: BufPolicy + Send
[src]

Auto Trait Implementations

impl<R, P> Send for Reader<R, P> where
    P: Send,
    R: Send

impl<R, P> Sync for Reader<R, P> where
    P: Sync,
    R: Sync