r655: options to map to one strand of the ref #91
This commit is contained in:
parent
eecc06086f
commit
33f8157961
2
align.c
2
align.c
|
|
@ -696,7 +696,7 @@ mm_reg1_t *mm_align_skeleton(void *km, const mm_mapopt_t *opt, const mm_idx_t *m
|
|||
regs[i].p->trans_strand = opt->flag&MM_F_SPLICE_FOR? 1 : 2;
|
||||
}
|
||||
if (r2.cnt > 0) regs = mm_insert_reg(&r2, i, &n_regs, regs);
|
||||
if (!(opt->flag&MM_F_SPLICE) && !(opt->flag&MM_F_SR) && i > 0) { // don't try inversion alignment for -xsplice or -xsr
|
||||
if (!(opt->flag&(MM_F_SPLICE|MM_F_SR)) && !(opt->flag&(MM_F_FOR_ONLY|MM_F_REV_ONLY)) && i > 0) { // don't try inversion alignment for -xsplice or -xsr, or --for-only/rev-only
|
||||
if (mm_align1_inv(km, opt, mi, qlen, qseq0, ®s[i-1], ®s[i], &r2, &ez)) {
|
||||
regs = mm_insert_reg(&r2, i, &n_regs, regs);
|
||||
++i; // skip the inserted INV alignment
|
||||
|
|
|
|||
6
main.c
6
main.c
|
|
@ -6,7 +6,7 @@
|
|||
#include "mmpriv.h"
|
||||
#include "getopt.h"
|
||||
|
||||
#define MM_VERSION "2.7-r654"
|
||||
#define MM_VERSION "2.7-r655-dirty"
|
||||
|
||||
#ifdef __linux__
|
||||
#include <sys/resource.h>
|
||||
|
|
@ -45,6 +45,8 @@ static struct option long_options[] = {
|
|||
{ "splice-flank", optional_argument, 0, 0 },
|
||||
{ "idx-no-seq", no_argument, 0, 0 },
|
||||
{ "end-seed-pen", required_argument, 0, 0 }, // 21
|
||||
{ "for-only", no_argument, 0, 0 }, // 22
|
||||
{ "rev-only", no_argument, 0, 0 }, // 23
|
||||
{ "help", no_argument, 0, 'h' },
|
||||
{ "max-intron-len", required_argument, 0, 'G' },
|
||||
{ "version", no_argument, 0, 'V' },
|
||||
|
|
@ -142,6 +144,8 @@ int main(int argc, char *argv[])
|
|||
else if (c == 0 && long_idx ==18) opt.flag |= MM_F_INDEPEND_SEG; // --no-pairing
|
||||
else if (c == 0 && long_idx ==20) ipt.flag |= MM_I_NO_SEQ; // --idx-no-seq
|
||||
else if (c == 0 && long_idx ==21) opt.anchor_ext_shift = atoi(optarg); // --end-seed-pen
|
||||
else if (c == 0 && long_idx ==22) opt.flag |= MM_F_FOR_ONLY; // --for-only
|
||||
else if (c == 0 && long_idx ==23) opt.flag |= MM_F_REV_ONLY; // --rev-only
|
||||
else if (c == 0 && long_idx == 14) { // --frag
|
||||
if (optarg == 0 || strcmp(optarg, "yes") == 0 || strcmp(optarg, "y") == 0)
|
||||
opt.flag |= MM_F_FRAG_MODE;
|
||||
|
|
|
|||
12
map.c
12
map.c
|
|
@ -117,6 +117,11 @@ int mm_set_opt(const char *preset, mm_idxopt_t *io, mm_mapopt_t *mo)
|
|||
|
||||
int mm_check_opt(const mm_idxopt_t *io, const mm_mapopt_t *mo)
|
||||
{
|
||||
if ((mo->flag & MM_F_FOR_ONLY) && (mo->flag & MM_F_REV_ONLY)) {
|
||||
if (mm_verbose >= 1)
|
||||
fprintf(stderr, "[ERROR]\033[1;31m --for-only and --rev-only can't be applied at the same time\033[0m\n");
|
||||
return -3;
|
||||
}
|
||||
if ((mo->q != mo->q2 || mo->e != mo->e2) && !(mo->e > mo->e2 && mo->q + mo->e < mo->q2 + mo->e2)) {
|
||||
if (mm_verbose >= 1)
|
||||
fprintf(stderr, "[ERROR]\033[1;31m dual gap penalties violating E1>E2 and O1+E1<O2+E2\033[0m\n");
|
||||
|
|
@ -245,6 +250,13 @@ static mm128_t *collect_seed_hits(void *km, const mm_mapopt_t *opt, int max_occ,
|
|||
if ((opt->flag&MM_F_AVA) && cmp > 0) // all-vs-all mode: map once
|
||||
continue;
|
||||
}
|
||||
if (opt->flag & (MM_F_FOR_ONLY|MM_F_REV_ONLY)) {
|
||||
if ((r[k]&1) == (q->qpos&1)) { // forward strand
|
||||
if (opt->flag & MM_F_REV_ONLY) continue;
|
||||
} else {
|
||||
if (opt->flag & MM_F_FOR_ONLY) continue;
|
||||
}
|
||||
}
|
||||
p = &a[(*n_a)++];
|
||||
if ((r[k]&1) == (q->qpos&1)) { // forward strand
|
||||
p->x = (r[k]&0xffffffff00000000ULL) | rpos;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@
|
|||
#define MM_F_INDEPEND_SEG 0x20000
|
||||
#define MM_F_SPLICE_FLANK 0x40000
|
||||
#define MM_F_SOFTCLIP 0x80000
|
||||
#define MM_F_FOR_ONLY 0x100000
|
||||
#define MM_F_REV_ONLY 0x200000
|
||||
|
||||
#define MM_I_HPC 0x1
|
||||
#define MM_I_NO_SEQ 0x2
|
||||
|
|
|
|||
10
minimap2.1
10
minimap2.1
|
|
@ -1,4 +1,4 @@
|
|||
.TH minimap2 1 "9 January 2018" "minimap2-2.7 (r654)" "Bioinformatics tools"
|
||||
.TH minimap2 1 "16 January 2018" "minimap2-2.7-dirty (r655)" "Bioinformatics tools"
|
||||
.SH NAME
|
||||
.PP
|
||||
minimap2 - mapping and alignment between collections of DNA sequences
|
||||
|
|
@ -206,6 +206,14 @@ seeds with ungapped alignment.
|
|||
.TP
|
||||
.BR --frag [= no | yes ]
|
||||
Whether to enable the fragment mode [no]
|
||||
.TP
|
||||
.B --for-only
|
||||
Only map to the forward strand of the reference sequences. For paired-end
|
||||
reads in the forward-reverse orientation, the first read is mapped to forward
|
||||
strand of the reference and the second read to the reverse stand.
|
||||
.TP
|
||||
.B --rev-only
|
||||
Only map to the reverse complement strand of the reference sequences.
|
||||
.SS Alignment options
|
||||
.TP 10
|
||||
.BI -A \ INT
|
||||
|
|
|
|||
Loading…
Reference in New Issue