[−][src]Module bio::io::fastq
Structs and trait to read and write files in FASTQ format.
Example
Read
In this example, we parse a fastq file from stdin and compute some statistics
use std::io; use bio::io::fastq; let mut reader = fastq::Reader::new(io::stdin()); let mut nb_reads = 0; let mut nb_bases = 0; for result in reader.records() { let record = result.expect("Error during fastq record parsing"); nb_reads += 1; nb_bases += record.seq().len(); } println!("Number of reads: {}", nb_reads); println!("Number of bases: {}", nb_bases);
We can also use a while
loop to iterate over records
use std::io; use bio::io::fastq; let mut records = fastq::Reader::new(io::stdin()).records(); let mut nb_reads = 0; let mut nb_bases = 0; while let Some(Ok(record)) = records.next() { nb_reads += 1; nb_bases += record.seq().len(); } println!("Number of reads: {}", nb_reads); println!("Number of bases: {}", nb_bases);
Write
In this example we generate 10 random sequences with length 100 and write them to stdout.
use std::io; use bio::io::fastq; let mut seed = 42; let nucleotides = [b'A', b'C', b'G', b'T']; let mut writer = fastq::Writer::new(io::stdout()); for _ in 0..10 { let seq = (0..100).map(|_| { seed = ((seed ^ seed << 13) ^ seed >> 7) ^ seed << 17; // don't use this random generator nucleotides[seed % 4] }).collect::<Vec<u8>>(); let qual = (0..100).map(|_| b'!').collect::<Vec<u8>>(); writer.write("random", None, seq.as_slice(), qual.as_slice()); }
Read and Write
In this example we filter reads from stdin on mean quality (Phred + 33) and write them to stdout
use std::io; use bio::io::fastq; use bio::io::fastq::FastqRead; let mut reader = fastq::Reader::new(io::stdin()); let mut writer = fastq::Writer::new(io::stdout()); let mut record = fastq::Record::new(); while let Ok(()) = reader.read(&mut record) { if record.is_empty() { let check = record.check(); break; } let mut sum_qual = record.qual().iter().sum::<u8>() as f64; if (sum_qual / record.seq().len() as f64 - 33.0) > 30.0 { writer.write_record(&record); } }
Structs
Reader | A FastQ reader. |
Record | A FastQ record. |
Records | An iterator over the records of a FastQ file. |
Writer | A FastQ writer. |
Traits
FastqRead | Trait for FastQ readers. |