Skip to content

Commit da6947c

Browse files
committed
r671: cleanup command line options
1 parent 46d6349 commit da6947c

File tree

5 files changed

+94
-64
lines changed

5 files changed

+94
-64
lines changed

main.c

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "mmpriv.h"
77
#include "getopt.h"
88

9-
#define MM_VERSION "2.7-r670-dirty"
9+
#define MM_VERSION "2.7-r671-dirty"
1010

1111
#ifdef __linux__
1212
#include <sys/resource.h>
@@ -28,7 +28,7 @@ static struct option long_options[] = {
2828
{ "seed", required_argument, 0, 0 },
2929
{ "no-kalloc", no_argument, 0, 0 },
3030
{ "print-qname", no_argument, 0, 0 },
31-
{ "no-self", no_argument, 0, 0 },
31+
{ "no-self", no_argument, 0, 'D' },
3232
{ "print-seeds", no_argument, 0, 0 },
3333
{ "max-chain-skip", required_argument, 0, 0 },
3434
{ "min-dp-len", required_argument, 0, 0 },
@@ -37,17 +37,19 @@ static struct option long_options[] = {
3737
{ "cost-non-gt-ag", required_argument, 0, 'C' },
3838
{ "no-long-join", no_argument, 0, 0 },
3939
{ "sr", no_argument, 0, 0 },
40-
{ "frag", optional_argument, 0, 0 },
41-
{ "secondary", optional_argument, 0, 0 },
40+
{ "frag", required_argument, 0, 0 },
41+
{ "secondary", required_argument, 0, 0 },
4242
{ "cs", optional_argument, 0, 0 },
4343
{ "end-bonus", required_argument, 0, 0 },
4444
{ "no-pairing", no_argument, 0, 0 },
45-
{ "splice-flank", optional_argument, 0, 0 },
45+
{ "splice-flank", required_argument, 0, 0 },
4646
{ "idx-no-seq", no_argument, 0, 0 },
4747
{ "end-seed-pen", required_argument, 0, 0 }, // 21
4848
{ "for-only", no_argument, 0, 0 }, // 22
4949
{ "rev-only", no_argument, 0, 0 }, // 23
50-
{ "heap-sort", optional_argument, 0, 0 }, // 24
50+
{ "heap-sort", required_argument, 0, 0 }, // 24
51+
{ "all-chain", no_argument, 0, 'P' },
52+
{ "dual", required_argument, 0, 0 }, // 26
5153
{ "help", no_argument, 0, 'h' },
5254
{ "max-intron-len", required_argument, 0, 'G' },
5355
{ "version", no_argument, 0, 'V' },
@@ -70,9 +72,22 @@ static inline int64_t mm_parse_num(const char *str)
7072
return (int64_t)(x + .499);
7173
}
7274

75+
static inline void yes_or_no(mm_mapopt_t *opt, int flag, int long_idx, const char *arg, int yes_to_set)
76+
{
77+
if (yes_to_set) {
78+
if (strcmp(arg, "yes") == 0 || strcmp(arg, "y") == 0) opt->flag |= flag;
79+
else if (strcmp(arg, "no") == 0 || strcmp(arg, "n") == 0) opt->flag &= ~flag;
80+
else fprintf(stderr, "[WARNING]\033[1;31m option '--%s' only accepts 'yes' or 'no'.\033[0m\n", long_options[long_idx].name);
81+
} else {
82+
if (strcmp(arg, "yes") == 0 || strcmp(arg, "y") == 0) opt->flag &= ~flag;
83+
else if (strcmp(arg, "no") == 0 || strcmp(arg, "n") == 0) opt->flag |= flag;
84+
else fprintf(stderr, "[WARNING]\033[1;31m option '--%s' only accepts 'yes' or 'no'.\033[0m\n", long_options[long_idx].name);
85+
}
86+
}
87+
7388
int main(int argc, char *argv[])
7489
{
75-
const char *opt_str = "2aSw:k:K:t:r:f:Vv:g:G:I:d:XT:s:x:Hcp:M:n:z:A:B:O:E:m:N:Qu:R:hF:LC:";
90+
const char *opt_str = "2aSDw:k:K:t:r:f:Vv:g:G:I:d:XT:s:x:Hcp:M:n:z:A:B:O:E:m:N:Qu:R:hF:LC:";
7691
mm_mapopt_t opt;
7792
mm_idxopt_t ipt;
7893
int i, c, n_threads = 3, long_idx;
@@ -111,7 +126,9 @@ int main(int argc, char *argv[])
111126
else if (c == 'p') opt.pri_ratio = atof(optarg);
112127
else if (c == 'M') opt.mask_level = atof(optarg);
113128
else if (c == 'c') opt.flag |= MM_F_OUT_CG | MM_F_CIGAR;
114-
else if (c == 'X') opt.flag |= MM_F_AVA | MM_F_NO_SELF;
129+
else if (c == 'D') opt.flag |= MM_F_NO_DIAG;
130+
else if (c == 'P') opt.flag |= MM_F_ALL_CHAINS;
131+
else if (c == 'X') opt.flag |= MM_F_ALL_CHAINS | MM_F_NO_DIAG | MM_F_NO_DUAL | MM_F_NO_LJOIN; // -D -P --no-long-join --dual=no
115132
else if (c == 'a') opt.flag |= MM_F_OUT_SAM | MM_F_CIGAR;
116133
else if (c == 'Q') opt.flag |= MM_F_NO_QUAL;
117134
else if (c == 'Y') opt.flag |= MM_F_SOFTCLIP;
@@ -133,7 +150,6 @@ int main(int argc, char *argv[])
133150
else if (c == 0 && long_idx == 2) opt.seed = atoi(optarg); // --seed
134151
else if (c == 0 && long_idx == 3) mm_dbg_flag |= MM_DBG_NO_KALLOC; // --no-kalloc
135152
else if (c == 0 && long_idx == 4) mm_dbg_flag |= MM_DBG_PRINT_QNAME; // --print-qname
136-
else if (c == 0 && long_idx == 5) opt.flag |= MM_F_NO_SELF; // --no-self
137153
else if (c == 0 && long_idx == 6) mm_dbg_flag |= MM_DBG_PRINT_QNAME | MM_DBG_PRINT_SEED, n_threads = 1; // --print-seed
138154
else if (c == 0 && long_idx == 7) opt.max_chain_skip = atoi(optarg); // --max-chain-skip
139155
else if (c == 0 && long_idx == 8) opt.min_ksw_len = atoi(optarg); // --min-dp-len
@@ -148,13 +164,9 @@ int main(int argc, char *argv[])
148164
else if (c == 0 && long_idx ==22) opt.flag |= MM_F_FOR_ONLY; // --for-only
149165
else if (c == 0 && long_idx ==23) opt.flag |= MM_F_REV_ONLY; // --rev-only
150166
else if (c == 0 && long_idx == 14) { // --frag
151-
if (optarg == 0 || strcmp(optarg, "yes") == 0 || strcmp(optarg, "y") == 0)
152-
opt.flag |= MM_F_FRAG_MODE;
153-
else opt.flag &= ~MM_F_FRAG_MODE;
167+
yes_or_no(&opt, MM_F_FRAG_MODE, long_idx, optarg, 1);
154168
} else if (c == 0 && long_idx == 15) { // --secondary
155-
if (optarg == 0 || strcmp(optarg, "yes") == 0 || strcmp(optarg, "y") == 0)
156-
opt.flag &= ~MM_F_NO_PRINT_2ND;
157-
else opt.flag |= MM_F_NO_PRINT_2ND;
169+
yes_or_no(&opt, MM_F_NO_PRINT_2ND, long_idx, optarg, 0);
158170
} else if (c == 0 && long_idx == 16) { // --cs
159171
opt.flag |= MM_F_OUT_CS | MM_F_CIGAR;
160172
if (optarg == 0 || strcmp(optarg, "short") == 0) {
@@ -167,13 +179,11 @@ int main(int argc, char *argv[])
167179
fprintf(stderr, "[WARNING]\033[1;31m --cs only takes 'short' or 'long'. Invalid values are assumed to be 'short'.\033[0m\n");
168180
}
169181
} else if (c == 0 && long_idx == 19) { // --splice-flank
170-
if (optarg == 0 || strcmp(optarg, "yes") == 0 || strcmp(optarg, "y") == 0)
171-
opt.flag |= MM_F_SPLICE_FLANK;
172-
else opt.flag &= ~MM_F_SPLICE_FLANK;
182+
yes_or_no(&opt, MM_F_SPLICE_FLANK, long_idx, optarg, 1);
173183
} else if (c == 0 && long_idx == 24) { // --heap-sort
174-
if (optarg == 0 || strcmp(optarg, "yes") == 0 || strcmp(optarg, "y") == 0)
175-
opt.flag |= MM_F_HEAP_SORT;
176-
else opt.flag &= ~MM_F_HEAP_SORT;
184+
yes_or_no(&opt, MM_F_HEAP_SORT, long_idx, optarg, 1);
185+
} else if (c == 0 && long_idx == 26) { // --dual
186+
yes_or_no(&opt, MM_F_NO_DUAL, long_idx, optarg, 0);
177187
} else if (c == 'S') {
178188
opt.flag |= MM_F_OUT_CS | MM_F_CIGAR | MM_F_OUT_CS_LONG;
179189
if (mm_verbose >= 2)
@@ -261,8 +271,8 @@ int main(int argc, char *argv[])
261271
fprintf(fp_help, " map-ont: -k15 (Oxford Nanopore vs reference mapping)\n");
262272
fprintf(fp_help, " asm5: -k19 -w19 -A1 -B19 -O39,81 -E3,1 -s200 -z200 (asm to ref mapping; break at 5%% div.)\n");
263273
fprintf(fp_help, " asm10: -k19 -w19 -A1 -B9 -O16,41 -E2,1 -s200 -z200 (asm to ref mapping; break at 10%% div.)\n");
264-
fprintf(fp_help, " ava-pb: -Hk19 -w5 -Xp0 -m100 -g10000 --max-chain-skip 25 (PacBio read overlap)\n");
265-
fprintf(fp_help, " ava-ont: -k15 -w5 -Xp0 -m100 -g10000 --max-chain-skip 25 (ONT read overlap)\n");
274+
fprintf(fp_help, " ava-pb: -Hk19 -Xw5 -m100 -g10000 --max-chain-skip 25 (PacBio read overlap)\n");
275+
fprintf(fp_help, " ava-ont: -k15 -Xw5 -m100 -g10000 --max-chain-skip 25 (ONT read overlap)\n");
266276
fprintf(fp_help, " splice: long-read spliced alignment (see minimap2.1 for details)\n");
267277
fprintf(fp_help, " sr: short single-end reads without splicing (see minimap2.1 for details)\n");
268278
fprintf(fp_help, "\nSee `man ./minimap2.1' for detailed description of command-line options.\n");

map.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,15 @@ static mm_match_t *collect_matches(void *km, int *_n_m, int max_occ, const mm_id
116116
static inline int skip_seed(int flag, uint64_t r, const mm_match_t *q, const char *qname, int qlen, const mm_idx_t *mi, int *is_self)
117117
{
118118
*is_self = 0;
119-
if (qname && (flag & (MM_F_NO_SELF|MM_F_AVA))) {
119+
if (qname && (flag & (MM_F_NO_DIAG|MM_F_NO_DUAL))) {
120120
const mm_idx_seq_t *s = &mi->seq[r>>32];
121121
int cmp;
122122
cmp = strcmp(qname, s->name);
123-
if ((flag&MM_F_NO_SELF) && cmp == 0 && s->len == qlen) {
123+
if ((flag&MM_F_NO_DIAG) && cmp == 0 && s->len == qlen) {
124124
if ((uint32_t)r>>1 == (q->q_pos>>1)) return 1; // avoid the diagnonal anchors
125125
if ((r&1) == (q->q_pos&1)) *is_self = 1; // this flag is used to avoid spurious extension on self chain
126126
}
127-
if ((flag&MM_F_AVA) && cmp > 0) // all-vs-all mode: map once
127+
if ((flag&MM_F_NO_DUAL) && cmp > 0) // all-vs-all mode: map once
128128
return 1;
129129
}
130130
if (flag & (MM_F_FOR_ONLY|MM_F_REV_ONLY)) {
@@ -237,11 +237,11 @@ static mm128_t *collect_seed_hits(void *km, const mm_mapopt_t *opt, int max_occ,
237237

238238
static void chain_post(const mm_mapopt_t *opt, int max_chain_gap_ref, const mm_idx_t *mi, void *km, int qlen, int n_segs, const int *qlens, int *n_regs, mm_reg1_t *regs, mm128_t *a)
239239
{
240-
if (!(opt->flag & MM_F_AVA)) { // don't choose primary mapping(s) for read overlap
240+
if (!(opt->flag & MM_F_ALL_CHAINS)) { // don't choose primary mapping(s)
241241
mm_set_parent(km, opt->mask_level, *n_regs, regs, opt->a * 2 + opt->b);
242242
if (n_segs <= 1) mm_select_sub(km, opt->pri_ratio, mi->k*2, opt->best_n, n_regs, regs);
243243
else mm_select_sub_multi(km, opt->pri_ratio, 0.2f, 0.7f, max_chain_gap_ref, mi->k*2, opt->best_n, n_segs, qlens, n_regs, regs);
244-
if (!(opt->flag & MM_F_SPLICE) && !(opt->flag & MM_F_SR) && !(opt->flag & MM_F_NO_LJOIN))
244+
if (!(opt->flag & (MM_F_SPLICE|MM_F_SR|MM_F_NO_LJOIN))) // long join not working well without primary chains
245245
mm_join_long(km, opt, qlen, n_regs, regs, a);
246246
}
247247
}
@@ -250,7 +250,7 @@ static mm_reg1_t *align_regs(const mm_mapopt_t *opt, const mm_idx_t *mi, void *k
250250
{
251251
if (!(opt->flag & MM_F_CIGAR)) return regs;
252252
regs = mm_align_skeleton(km, opt, mi, qlen, seq, n_regs, regs, a); // this calls mm_filter_regs()
253-
if (!(opt->flag & MM_F_AVA)) {
253+
if (!(opt->flag & MM_F_ALL_CHAINS)) { // don't choose primary mapping(s)
254254
mm_set_parent(km, opt->mask_level, *n_regs, regs, opt->a * 2 + opt->b);
255255
mm_select_sub(km, opt->pri_ratio, mi->k*2, opt->best_n, n_regs, regs);
256256
mm_set_sam_pri(*n_regs, regs);

minimap.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
#include <stdio.h>
66
#include <sys/types.h>
77

8-
#define MM_F_NO_SELF 0x001
9-
#define MM_F_AVA 0x002
10-
#define MM_F_CIGAR 0x004
11-
#define MM_F_OUT_SAM 0x008
12-
#define MM_F_NO_QUAL 0x010
13-
#define MM_F_OUT_CG 0x020
14-
#define MM_F_OUT_CS 0x040
15-
#define MM_F_SPLICE 0x080 // splice mode
16-
#define MM_F_SPLICE_FOR 0x100 // match GT-AG
17-
#define MM_F_SPLICE_REV 0x200 // match CT-AC, the reverse complement of GT-AG
18-
#define MM_F_NO_LJOIN 0x400
19-
#define MM_F_OUT_CS_LONG 0x800
20-
#define MM_F_SR 0x1000
21-
#define MM_F_FRAG_MODE 0x2000
8+
#define MM_F_NO_DIAG 0x001 // no exact diagonal hit
9+
#define MM_F_NO_DUAL 0x002 // skip pairs where query name is lexicographically larger than target name
10+
#define MM_F_CIGAR 0x004
11+
#define MM_F_OUT_SAM 0x008
12+
#define MM_F_NO_QUAL 0x010
13+
#define MM_F_OUT_CG 0x020
14+
#define MM_F_OUT_CS 0x040
15+
#define MM_F_SPLICE 0x080 // splice mode
16+
#define MM_F_SPLICE_FOR 0x100 // match GT-AG
17+
#define MM_F_SPLICE_REV 0x200 // match CT-AC, the reverse complement of GT-AG
18+
#define MM_F_NO_LJOIN 0x400
19+
#define MM_F_OUT_CS_LONG 0x800
20+
#define MM_F_SR 0x1000
21+
#define MM_F_FRAG_MODE 0x2000
2222
#define MM_F_NO_PRINT_2ND 0x4000
2323
#define MM_F_2_IO_THREADS 0x8000
2424
#define MM_F_LONG_CIGAR 0x10000
@@ -28,6 +28,7 @@
2828
#define MM_F_FOR_ONLY 0x100000
2929
#define MM_F_REV_ONLY 0x200000
3030
#define MM_F_HEAP_SORT 0x400000
31+
#define MM_F_ALL_CHAINS 0x800000
3132

3233
#define MM_I_HPC 0x1
3334
#define MM_I_NO_SEQ 0x2

minimap2.1

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH minimap2 1 "26 January 2018" "minimap2-2.7-dirty (r664)" "Bioinformatics tools"
1+
.TH minimap2 1 "31 January 2018" "minimap2-2.8-dirty (r671)" "Bioinformatics tools"
22
.SH NAME
33
.PP
44
minimap2 - mapping and alignment between collections of DNA sequences
@@ -129,7 +129,7 @@ Ignore top
129129
fraction of most frequent minimizers [0.0002]
130130
.TP
131131
.BI -g \ INT
132-
Stop chain enlongation if there are no minimizers in
132+
Stop chain enlongation if there are no minimizers within
133133
.IR INT -bp
134134
[10000].
135135
.TP
@@ -148,11 +148,28 @@ Discard chains with chaining score
148148
[40]. Chaining score equals the approximate number of matching bases minus a
149149
concave gap penalty. It is computed with dynamic programming.
150150
.TP
151+
.B -D
152+
If query sequence name/length are identical to the target name/length, ignore
153+
diagonal anchors. This option also reduces DP-based extension along the
154+
diagonal.
155+
.TP
156+
.B -P
157+
Retain all chains and don't attempt to set primary chains. Options
158+
.B -p
159+
and
160+
.B -N
161+
have no effect when this option is in use.
162+
.TP
163+
.BR --dual = yes | no
164+
During chaining, whether to skip pairs wherein the query name is
165+
lexicographically greater than the target name [yes]
166+
.TP
151167
.B -X
152-
Perform all-vs-all mapping. In this mode, if the query sequence name is
153-
lexicographically larger than the target sequence name, the hits between them
154-
will be suppressed; if the query sequence name is the same as the target name,
155-
diagonal minimizer hits will also be suppressed.
168+
Equivalent to
169+
.RB ' -DP
170+
.BR --dual = no
171+
.BR --no-long-join '.
172+
Primarily used for all-vs-all read overlapping.
156173
.TP
157174
.BI -p \ FLOAT
158175
Minimal secondary-to-primary score ratio to output secondary mappings [0.8].
@@ -162,6 +179,9 @@ the chain with a lower score is secondary to the chain with a higher score.
162179
If the ratio of the scores is below
163180
.IR FLOAT ,
164181
the secondary chain will not be outputted or extended with DP alignment later.
182+
This option has no effect when
183+
.B -X
184+
is applied.
165185
.TP
166186
.BI -N \ INT
167187
Output at most
@@ -179,7 +199,7 @@ Increasing this option slows down spliced alignment. [200k]
179199
.TP
180200
.BI -F \ NUM
181201
Maximum fragment length (aka insert size; effective with
182-
.BR -xsr / --frag)
202+
.BR -xsr / --frag = yes )
183203
[800]
184204
.TP
185205
.BI -M \ FLOAT
@@ -209,7 +229,7 @@ applies a second round of chaining with a higher minimizer occurrence threshold
209229
if no good chain is found. In addition, minimap2 attempts to patch gaps between
210230
seeds with ungapped alignment.
211231
.TP
212-
.BR --frag [= no | yes ]
232+
.BR --frag = no | yes
213233
Whether to enable the fragment mode [no]
214234
.TP
215235
.B --for-only
@@ -220,7 +240,7 @@ strand of the reference and the second read to the reverse stand.
220240
.B --rev-only
221241
Only map to the reverse complement strand of the reference sequences.
222242
.TP
223-
.BR --heap-sort [= no | yes ]
243+
.BR --heap-sort = no | yes
224244
If yes, sort anchors with heap merge, instead of radix sort. Heap merge is
225245
faster for short reads, but slower for long reads. [no]
226246
.SS Alignment options
@@ -272,14 +292,13 @@ no attempt to match GT-AG [n]
272292
.BI --end-bonus \ INT
273293
Score bonus when alignment extends to the end of the query sequence [0].
274294
.TP
275-
.BR --splice-flank [= yes | no ]
295+
.BR --splice-flank = yes | no
276296
Assume the next base to a
277297
.B GT
278298
donor site tends to be A/G (91% in human and 92% in mouse) and the preceding
279299
base to a
280300
.B AG
281-
acceptor tends to be C/T [yes with
282-
.BR --splice ].
301+
acceptor tends to be C/T [no].
283302
This trend is evolutionarily conservative, all the way to S. cerevisiae
284303
(PMID:18688272). Specifying this option generally leads to higher junction
285304
accuracy by several percents, so it is applied by default with
@@ -369,7 +388,7 @@ K/M/G/k/m/g suffix is accepted. A large
369388
helps load balancing in the multi-threading mode, at the cost of increased
370389
memory.
371390
.TP
372-
.BR --secondary [= yes | no ]
391+
.BR --secondary = yes | no
373392
Whether to output secondary alignments [yes]
374393
.TP
375394
.B --version
@@ -416,13 +435,13 @@ Up to 10% sequence divergence.
416435
.B ava-pb
417436
PacBio all-vs-all overlap mapping
418437
.RB ( -Hk19
419-
.B -w5 -Xp0 -m100 -g10000 --max-chain-skip
438+
.B -Xw5 -m100 -g10000 --max-chain-skip
420439
.BR 25 ).
421440
.TP
422441
.B ava-ont
423442
Oxford Nanopore all-vs-all overlap mapping
424443
.RB ( -k15
425-
.B -w5 -Xp0 -m100 -g10000 --max-chain-skip
444+
.B -Xw5 -m100 -g10000 --max-chain-skip
426445
.BR 25 ).
427446
Similarly, the major difference from
428447
.B ava-pb
@@ -444,8 +463,8 @@ tag ignores introns to demote hits to pseudogenes.
444463
.B sr
445464
Short single-end reads without splicing
446465
.RB ( -k21
447-
.B -w11 --sr --frag -A2 -B8 -O12,32 -E2,1 -r50 -p.5 -N20 -f1000,5000 -n2 -m20
448-
.B -s40 -g200 -2K50m --heap-sort
466+
.B -w11 --sr --frag=yes -A2 -B8 -O12,32 -E2,1 -r50 -p.5 -N20 -f1000,5000 -n2 -m20
467+
.B -s40 -g200 -2K50m --heap-sort=yes
449468
.BR --secondary=no ).
450469
.RE
451470
.SS Miscellaneous options
@@ -539,8 +558,8 @@ where seed positions may be suboptimal. This should not be a big concern
539558
because even the optimal alignment may be wrong in such regions.
540559
.TP
541560
*
542-
Minimap2 requires SSE2 instructions to compile. It is possible to add
543-
non-SSE2 support, but it would make minimap2 slower by several times.
561+
Minimap2 requires SSE2 or NEON instructions to compile. It is possible to add
562+
non-SSE2/NEON support, but it would make minimap2 slower by several times.
544563
.SH SEE ALSO
545564
.PP
546565
miniasm(1), minimap(1), bwa(1).

options.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ int mm_set_opt(const char *preset, mm_idxopt_t *io, mm_mapopt_t *mo)
5858
mm_mapopt_init(mo);
5959
} else if (strcmp(preset, "ava-ont") == 0) {
6060
io->flag = 0, io->k = 15, io->w = 5;
61-
mo->flag |= MM_F_AVA | MM_F_NO_SELF;
61+
mo->flag |= MM_F_ALL_CHAINS | MM_F_NO_DIAG | MM_F_NO_DUAL | MM_F_NO_LJOIN;
6262
mo->min_chain_score = 100, mo->pri_ratio = 0.0f, mo->max_gap = 10000, mo->max_chain_skip = 25;
6363
} else if (strcmp(preset, "ava-pb") == 0) {
6464
io->flag |= MM_I_HPC, io->k = 19, io->w = 5;
65-
mo->flag |= MM_F_AVA | MM_F_NO_SELF;
65+
mo->flag |= MM_F_ALL_CHAINS | MM_F_NO_DIAG | MM_F_NO_DUAL | MM_F_NO_LJOIN;
6666
mo->min_chain_score = 100, mo->pri_ratio = 0.0f, mo->max_gap = 10000, mo->max_chain_skip = 25;
6767
} else if (strcmp(preset, "map10k") == 0 || strcmp(preset, "map-pb") == 0) {
6868
io->flag |= MM_I_HPC, io->k = 19;

0 commit comments

Comments
 (0)