dict.rs 683 B

12345678910111213141516171819202122232425262728
  1. use std::fs;
  2. use csv::ReaderBuilder;
  3. use anyhow::{ Ok, Result};
  4. use log::info;
  5. pub fn read_dict(path: &str) -> Result<Vec<(String, u32)>> {
  6. info!("Parsing {}", path);
  7. let mut reader = ReaderBuilder::new()
  8. .delimiter(b'\t')
  9. .flexible(true)
  10. .has_headers(false)
  11. .from_reader(fs::File::open(path)?);
  12. let mut res = Vec::new();
  13. for line in reader.records() {
  14. let line = line.unwrap();
  15. if line.get(0).unwrap() == "@SQ" {
  16. res.push((
  17. line.get(1).unwrap().replace("SN:", ""),
  18. line.get(2).unwrap().replace("LN:", "").parse().unwrap(),
  19. ));
  20. }
  21. }
  22. Ok(res)
  23. }