INNER CODE UNIT · Rust
read_fastq_impl
abdenlab/oxbow · r-oxbow/src/rust/src/lib.rs:35
fn read_fastq_impl(path: &str, fields: Option<Vec<String>>) -> Vec<u8> {
let compressed = path.ends_with(".gz");
let reader = std::fs::File::open(path)
.map(|f| BufReader::with_capacity(BUFFER_SIZE_BYTES, f))
.unwrap();
let scanner = FastqScanner::new(resolve_r_fields(fields)).unwrap();
let ipc = if compressed {
let gz_reader = std::io::BufReader::new(MultiGzDecoder::new(reader));
let fmt_reader = noodles::fastq::io::Reader::new(gz_reader);
let batches = scanner.scan(fmt_reader, None, None, None).unwrap();
batches_to_ipc(batches)
} else {
let fmt_reader = noodles::fastq::io::Reader::new(reader);
let batches = scanner.scan(fmt_reader, None, None, None).unwrap();
batches_to_ipc(batches)
};