diff --git a/src/cli/closest.rs b/src/cli/closest.rs index cbb2cb3..c5aa639 100644 --- a/src/cli/closest.rs +++ b/src/cli/closest.rs @@ -1,7 +1,6 @@ +use super::{outputs::Output, overlap_predicates::WrapStrandedness, DualInput}; use clap::Parser; -use super::{outputs::Output, DualInput}; - /// Finds the closest interval in a secondary BED file for all intervals in a primary BED file #[derive(Parser, Debug)] #[clap(next_help_heading = "Global options")] @@ -27,7 +26,11 @@ pub struct ClosestParams { #[clap(short = 'd', long, conflicts_with = "upstream")] pub downstream: bool, + /// Strand-specificity of closest intervals + #[clap(short, long, default_value = "i")] + pub strandedness: WrapStrandedness, + /// Specify that the input files are already presorted - #[clap(short, long)] + #[clap(short = 'S', long)] pub sorted: bool, } diff --git a/src/commands/closest.rs b/src/commands/closest.rs index 1947cc2..dacd6c3 100644 --- a/src/commands/closest.rs +++ b/src/commands/closest.rs @@ -51,13 +51,14 @@ where Renamer: Rename<'a, Ia, Na> + Rename<'a, Ib, Nb>, { sort_pairs(&mut a_set, &mut b_set, params.sorted); + let method = params.strandedness.into(); let pairs_iter = a_set .iter() .map(|query| { let target = match params.into() { - ClosestType::Both => b_set.closest(query), - ClosestType::Upstream => b_set.closest_upstream(query), - ClosestType::Downstream => b_set.closest_downstream(query), + ClosestType::Both => b_set.closest(query, method), + ClosestType::Upstream => b_set.closest_upstream(query, method), + ClosestType::Downstream => b_set.closest_downstream(query, method), } .expect("Could not build closest index"); (query, target)