diff --git a/src/alignment_parser.rs b/src/alignment_parser.rs index 5fb3962..d140ec6 100644 --- a/src/alignment_parser.rs +++ b/src/alignment_parser.rs @@ -9,6 +9,8 @@ use std::path::Path; use swapvec::SwapVec; use tracing::{error, info}; +const KNOWN_MAPPERS: [&str; 2] = ["minimap2", "bramble"]; + pub fn read_and_verify_header( reader: &mut bam::io::Reader, aln_file: &Path, @@ -52,24 +54,28 @@ pub fn read_and_verify_header( ); } - let mut saw_minimap2 = false; + let mut matched_prog = None; let mut progs = vec![]; // explicitly check that alignment was done with a supported - // aligner (right now, just minimap2). + // aligner (right now, minimap2 and bramble). for (prog, _pmap) in header.programs().roots() { - if prog == "minimap2" { - saw_minimap2 = true; + if KNOWN_MAPPERS.iter().any(|known| prog == *known) { + matched_prog = Some(prog); break; } else { progs.push(prog); } } assert!( - saw_minimap2, - "Currently, only minimap2 is supported as an aligner. The bam file listed {:?}.", + matched_prog.is_some(), + "Currently supported aligners are [{}]. The bam file listed {:?}.", + KNOWN_MAPPERS.join(", "), progs ); - info!("saw minimap2 as a program in the header; proceeding."); + info!( + "saw supported mapper {} as a program in the header; proceeding.", + matched_prog.unwrap() + ); Ok(header) }