Skip to content

Commit 835acb9

Browse files
Add proximity parameter and fix a bug in pairaln
1 parent b0755e4 commit 835acb9

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

src/commons/Parameters.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ Parameters::Parameters():
287287
// pairaln
288288
PARAM_PAIRING_DUMMY_MODE(PARAM_PAIRING_DUMMY_MODE_ID, "--pairing-dummy-mode", "Include dummy pairing", "0: dont include, 1: include - an entry that will cause result2msa to write a gap only line", typeid(int), (void *) &pairdummymode, "^[0-1]{1}$", MMseqsParameter::COMMAND_EXPERT),
289289
PARAM_PAIRING_MODE(PARAM_PAIRING_MODE_ID, "--pairing-mode", "Pairing mode", "0: pair maximal per species, 1: pair only if all chains are covered per species", typeid(int), (void *) &pairmode, "^[0-1]{1}$", MMseqsParameter::COMMAND_EXPERT),
290-
PARAM_PAIRING_FILTER(PARAM_PAIRING_FILTER_ID, "--pairing-filter", "Pairing filter", "Filter hits by 0: top hit, 1: pair by proximity of IDs", typeid(int), (void *) &pairfilter, "^[0-1]{1}$", MMseqsParameter::COMMAND_EXPERT),
290+
PARAM_PAIRING_FILTER(PARAM_PAIRING_FILTER_ID, "--pairing-filter", "Pairing filter", "filter hits by 0: top hit, 1: pair by proximity of IDs", typeid(int), (void *) &pairfilter, "^[0-1]{1}$", MMseqsParameter::COMMAND_EXPERT),
291+
PARAM_PAIRING_PROX_DISTANCE(PARAM_PAIRING_PROX_DISTANCE_ID, "--pairing-prox-distance", "Proximity distance threshold", "adjust the distance threshold for pairing (--pairing-filter 1)", typeid(int), (void *) &pairProximityDistance, "^[0-9]{1}[0-9]*$", MMseqsParameter::COMMAND_EXPERT),
292+
291293
// taxonomyreport
292294
PARAM_REPORT_MODE(PARAM_REPORT_MODE_ID, "--report-mode", "Report mode", "Taxonomy report mode\n0: Kraken\n1: Krona\n2: do not create a report (for workflows only)\n3: Kraken per query database", typeid(int), (void *) &reportMode, "^[0-3]{1}$"),
293295
// createtaxdb
@@ -2681,6 +2683,7 @@ void Parameters::setDefaults() {
26812683
pairdummymode = PAIRALN_DUMMY_MODE_OFF;
26822684
pairmode = PAIRALN_MODE_ALL_PER_SPECIES;
26832685
pairfilter = PAIRALN_FILTER_TOP_HIT;
2686+
pairProximityDistance = 20;
26842687
// taxonomyreport
26852688
reportMode = 0;
26862689

src/commons/Parameters.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ class Parameters {
700700
int pairdummymode;
701701
int pairmode;
702702
int pairfilter;
703+
int pairProximityDistance;
703704

704705
// taxonomyreport
705706
int reportMode;
@@ -1065,6 +1066,7 @@ class Parameters {
10651066
PARAMETER(PARAM_PAIRING_DUMMY_MODE)
10661067
PARAMETER(PARAM_PAIRING_MODE)
10671068
PARAMETER(PARAM_PAIRING_FILTER)
1069+
PARAMETER(PARAM_PAIRING_PROX_DISTANCE)
10681070

10691071
// taxonomyreport
10701072
PARAMETER(PARAM_REPORT_MODE)

src/util/pairaln.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,7 @@ int pairaln(int argc, const char **argv, const Command& command) {
357357
if (compatible[j].dbKey == UINT_MAX) continue; // not set yet
358358
size_t prevNum = CompareUniProt::getUniProtNumber(compatible[j]);
359359
size_t diff = ABS_DIFF(currNum, prevNum);
360-
//TODO par.minPairDistance
361-
if (diff <= 20) { // #4 adjust comparison as needed
360+
if (static_cast<int>(diff) <= par.pairProximityDistance) {
362361
isCompatible = true;
363362
break;
364363
}
@@ -377,6 +376,10 @@ int pairaln(int argc, const char **argv, const Command& command) {
377376
bestCompatibleSize = compatibleSize;
378377
}
379378
}
379+
if(par.pairmode == Parameters::PAIRALN_MODE_COVER_ALL_CHAINS &&
380+
bestCompatibleSize != static_cast<int>(resultPerId.size())) {
381+
continue;
382+
}
380383
for (size_t i = 0; i < bestCompatible.size(); i++) {
381384
if (bestCompatible[i].dbKey == UINT_MAX &&
382385
par.pairdummymode != Parameters::PAIRALN_DUMMY_MODE_ON) {

0 commit comments

Comments
 (0)