Skip to content

Commit

Permalink
optionally force global biwfa alignment of mappings
Browse files Browse the repository at this point in the history
  • Loading branch information
ekg committed Jun 1, 2024
1 parent 35194d8 commit cc89be6
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/align/include/align_parameters.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ struct Parameters {
//wflambda
uint16_t wflambda_segment_length; //segment length for wflambda

bool force_biwfa_alignment; //force biwfa alignment

int wfa_mismatch_score;
int wfa_gap_opening_score;
int wfa_gap_extension_score;
Expand Down
1 change: 1 addition & 0 deletions src/align/include/computeAlignments.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,7 @@ namespace align
wflign::wavefront::WFlign* wflign = new wflign::wavefront::WFlign(
param.wflambda_segment_length,
param.min_identity,
param.force_biwfa_alignment,
param.wfa_mismatch_score,
param.wfa_gap_opening_score,
param.wfa_gap_extension_score,
Expand Down
5 changes: 4 additions & 1 deletion src/common/wflign/src/wflign.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ void clean_up_sketches(std::vector<std::vector<rkmh::hash_t>*> &sketches) {
WFlign::WFlign(
const uint16_t segment_length,
const float min_identity,
const bool force_biwfa_alignment,
const int wfa_mismatch_score,
const int wfa_gap_opening_score,
const int wfa_gap_extension_score,
Expand All @@ -66,6 +67,8 @@ WFlign::WFlign(
this->segment_length = segment_length;
this->min_identity = min_identity;

this->force_biwfa_alignment = force_biwfa_alignment;

this->wfa_mismatch_score = wfa_mismatch_score;
this->wfa_gap_opening_score = wfa_gap_opening_score;
this->wfa_gap_extension_score = wfa_gap_extension_score;
Expand Down Expand Up @@ -436,7 +439,7 @@ void WFlign::wflign_affine_wavefront(
#ifdef WFA_PNG_TSV_TIMING
const auto start_time = std::chrono::steady_clock::now();
#endif
if (
if (force_biwfa_alignment ||
(query_length <= segment_length * 8 || target_length <= segment_length * 8) ||
(mashmap_estimated_identity >= 0.99
&& query_length <= MAX_LEN_FOR_STANDARD_WFA && target_length <= MAX_LEN_FOR_STANDARD_WFA)
Expand Down
2 changes: 2 additions & 0 deletions src/common/wflign/src/wflign.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,12 @@ namespace wflign {
bool emit_md_tag;
bool paf_format_else_sam;
bool no_seq_in_sam;
bool force_biwfa_alignment;
// Setup
WFlign(
const uint16_t segment_length,
const float min_identity,
const bool force_biwfa_alignment,
const int wfa_mismatch_score,
const int wfa_gap_opening_score,
const int wfa_gap_extension_score,
Expand Down
2 changes: 2 additions & 0 deletions src/interface/parse_args.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ void parse_args(int argc,

args::Group alignment_opts(parser, "[ Alignment Options ]");
args::ValueFlag<std::string> align_input_paf(alignment_opts, "FILE", "derive precise alignments for this input PAF", {'i', "input-paf"});
args::Flag force_biwfa_alignment(alignment_opts, "force-biwfa", "force alignment with biWFA for all sequence pairs", {'I', "force-biwfa"});
args::Flag invert_filtering(alignment_opts, "A", "if an input PAF is specified, remove alignments with gap-compressed identity below --map-pct-id x 0.8, else keep all alignments "
"[default: if an input PAF is specified, keep all alignments, else remove alignments with gap-compressed identity below --map-pct-id x 0.8]",
{'O', "invert-filtering"});
Expand Down Expand Up @@ -365,6 +366,7 @@ void parse_args(int argc,
align_parameters.emit_md_tag = args::get(emit_md_tag);
align_parameters.sam_format = args::get(sam_format);
align_parameters.no_seq_in_sam = args::get(no_seq_in_sam);
align_parameters.force_biwfa_alignment = args::get(force_biwfa_alignment);
map_parameters.split = !args::get(no_split);
map_parameters.dropRand = false;//ToFix: !args::get(keep_ties);
align_parameters.split = !args::get(no_split);
Expand Down

0 comments on commit cc89be6

Please sign in to comment.