hyper_gen/
fastx_reader.rs

1use std::fs::File;
2use std::io::{BufRead, BufReader};
3use std::path::PathBuf;
4
5// Read merged sequences from a genome file into single u8 vector
6pub fn read_merge_seq(file_name: &PathBuf) -> Vec<u8> {
7    let mut fna_seqs = Vec::<u8>::new();
8
9    let file = File::open(file_name).unwrap();
10    let mut reader = BufReader::new(file);
11
12    let mut buf = String::new();
13    while reader.read_line(&mut buf).unwrap() > 0 {
14        if !buf.starts_with('>') {
15            if buf.ends_with('\n') {
16                buf.pop(); // remove \n character
17            }
18            if buf.ends_with('\r') {
19                buf.pop();
20            }
21            fna_seqs.extend_from_slice(buf.as_bytes());
22        } else {
23            fna_seqs.push(b'N');
24        }
25        buf.clear();
26    }
27
28    fna_seqs
29}