optionally output unmapped query in PAF
This commit is contained in:
parent
bcf92b3c46
commit
a609a07f8c
4
format.c
4
format.c
|
|
@ -259,6 +259,10 @@ static inline void write_tags(kstring_t *s, const mm_reg1_t *r)
|
||||||
void mm_write_paf(kstring_t *s, const mm_idx_t *mi, const mm_bseq1_t *t, const mm_reg1_t *r, void *km, int opt_flag)
|
void mm_write_paf(kstring_t *s, const mm_idx_t *mi, const mm_bseq1_t *t, const mm_reg1_t *r, void *km, int opt_flag)
|
||||||
{
|
{
|
||||||
s->l = 0;
|
s->l = 0;
|
||||||
|
if (r == 0) {
|
||||||
|
mm_sprintf_lite(s, "%s\t%d", t->name, t->l_seq);
|
||||||
|
return;
|
||||||
|
}
|
||||||
mm_sprintf_lite(s, "%s\t%d\t%d\t%d\t%c\t", t->name, t->l_seq, r->qs, r->qe, "+-"[r->rev]);
|
mm_sprintf_lite(s, "%s\t%d\t%d\t%d\t%c\t", t->name, t->l_seq, r->qs, r->qe, "+-"[r->rev]);
|
||||||
if (mi->seq[r->rid].name) mm_sprintf_lite(s, "%s", mi->seq[r->rid].name);
|
if (mi->seq[r->rid].name) mm_sprintf_lite(s, "%s", mi->seq[r->rid].name);
|
||||||
else mm_sprintf_lite(s, "%d", r->rid);
|
else mm_sprintf_lite(s, "%d", r->rid);
|
||||||
|
|
|
||||||
2
main.c
2
main.c
|
|
@ -60,6 +60,7 @@ static struct option long_options[] = {
|
||||||
{ "lj-min-ratio", required_argument, 0, 0 }, // 30
|
{ "lj-min-ratio", required_argument, 0, 0 }, // 30
|
||||||
{ "score-N", required_argument, 0, 0 }, // 31
|
{ "score-N", required_argument, 0, 0 }, // 31
|
||||||
{ "eqx", no_argument, 0, 0 }, // 32
|
{ "eqx", no_argument, 0, 0 }, // 32
|
||||||
|
{ "paf-no-hit", no_argument, 0, 0 }, // 33
|
||||||
{ "help", no_argument, 0, 'h' },
|
{ "help", no_argument, 0, 'h' },
|
||||||
{ "max-intron-len", required_argument, 0, 'G' },
|
{ "max-intron-len", required_argument, 0, 'G' },
|
||||||
{ "version", no_argument, 0, 'V' },
|
{ "version", no_argument, 0, 'V' },
|
||||||
|
|
@ -179,6 +180,7 @@ int main(int argc, char *argv[])
|
||||||
else if (c == 0 && long_idx ==30) opt.min_join_flank_ratio = atof(optarg); // --lj-min-ratio
|
else if (c == 0 && long_idx ==30) opt.min_join_flank_ratio = atof(optarg); // --lj-min-ratio
|
||||||
else if (c == 0 && long_idx ==31) opt.sc_ambi = atoi(optarg); // --score-N
|
else if (c == 0 && long_idx ==31) opt.sc_ambi = atoi(optarg); // --score-N
|
||||||
else if (c == 0 && long_idx ==32) opt.flag |= MM_F_EQX; // --eqx
|
else if (c == 0 && long_idx ==32) opt.flag |= MM_F_EQX; // --eqx
|
||||||
|
else if (c == 0 && long_idx ==33) opt.flag |= MM_F_PAF_NO_HIT; // --paf-no-hit
|
||||||
else if (c == 0 && long_idx == 14) { // --frag
|
else if (c == 0 && long_idx == 14) { // --frag
|
||||||
yes_or_no(&opt, MM_F_FRAG_MODE, long_idx, optarg, 1);
|
yes_or_no(&opt, MM_F_FRAG_MODE, long_idx, optarg, 1);
|
||||||
} else if (c == 0 && long_idx == 15) { // --secondary
|
} else if (c == 0 && long_idx == 15) { // --secondary
|
||||||
|
|
|
||||||
9
map.c
9
map.c
|
|
@ -496,6 +496,15 @@ static void *worker_pipeline(void *shared, int step, void *in)
|
||||||
mm_write_paf(&p->str, mi, t, r, km, p->opt->flag);
|
mm_write_paf(&p->str, mi, t, r, km, p->opt->flag);
|
||||||
mm_err_puts(p->str.s);
|
mm_err_puts(p->str.s);
|
||||||
}
|
}
|
||||||
|
if (s->n_reg[i] == 0) {
|
||||||
|
if (p->opt->flag & MM_F_OUT_SAM) {
|
||||||
|
mm_write_sam2(&p->str, mi, t, i - seg_st, -1, s->n_seg[k], &s->n_reg[seg_st], (const mm_reg1_t*const*)&s->reg[seg_st], km, p->opt->flag);
|
||||||
|
mm_err_puts(p->str.s);
|
||||||
|
} else if (p->opt->flag & MM_F_PAF_NO_HIT) {
|
||||||
|
mm_write_paf(&p->str, mi, t, 0, 0, p->opt->flag);
|
||||||
|
mm_err_puts(p->str.s);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (s->n_reg[i] == 0 && (p->opt->flag & MM_F_OUT_SAM)) { // write an unmapped record
|
if (s->n_reg[i] == 0 && (p->opt->flag & MM_F_OUT_SAM)) { // write an unmapped record
|
||||||
mm_write_sam2(&p->str, mi, t, i - seg_st, -1, s->n_seg[k], &s->n_reg[seg_st], (const mm_reg1_t*const*)&s->reg[seg_st], km, p->opt->flag);
|
mm_write_sam2(&p->str, mi, t, i - seg_st, -1, s->n_seg[k], &s->n_reg[seg_st], (const mm_reg1_t*const*)&s->reg[seg_st], km, p->opt->flag);
|
||||||
mm_err_puts(p->str.s);
|
mm_err_puts(p->str.s);
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
#define MM_F_OUT_MD 0x1000000
|
#define MM_F_OUT_MD 0x1000000
|
||||||
#define MM_F_COPY_COMMENT 0x2000000
|
#define MM_F_COPY_COMMENT 0x2000000
|
||||||
#define MM_F_EQX 0x4000000 // use =/X instead of M
|
#define MM_F_EQX 0x4000000 // use =/X instead of M
|
||||||
|
#define MM_F_PAF_NO_HIT 0x8000000 // output unmapped reads to PAF
|
||||||
|
|
||||||
#define MM_I_HPC 0x1
|
#define MM_I_HPC 0x1
|
||||||
#define MM_I_NO_SEQ 0x2
|
#define MM_I_NO_SEQ 0x2
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue