optionally write XB to include alignment score
request from 4DN-DCIC
This commit is contained in:
parent
a9c688ac92
commit
eb7dbc1429
5
bwamem.c
5
bwamem.c
|
|
@ -932,7 +932,10 @@ void mem_aln2sam(const mem_opt_t *opt, const bntseq_t *bns, kstring_t *str, bseq
|
||||||
if (p->alt_sc > 0)
|
if (p->alt_sc > 0)
|
||||||
ksprintf(str, "\tpa:f:%.3f", (double)p->score / p->alt_sc);
|
ksprintf(str, "\tpa:f:%.3f", (double)p->score / p->alt_sc);
|
||||||
}
|
}
|
||||||
if (p->XA) { kputsn("\tXA:Z:", 6, str); kputs(p->XA, str); }
|
if (p->XA) {
|
||||||
|
kputsn((opt->flag&MEM_F_XB)? "\tXB:Z:" : "\tXA:Z:", 6, str);
|
||||||
|
kputs(p->XA, str);
|
||||||
|
}
|
||||||
if (s->comment) { kputc('\t', str); kputs(s->comment, str); }
|
if (s->comment) { kputc('\t', str); kputs(s->comment, str); }
|
||||||
if ((opt->flag&MEM_F_REF_HDR) && p->rid >= 0 && bns->anns[p->rid].anno != 0 && bns->anns[p->rid].anno[0] != 0) {
|
if ((opt->flag&MEM_F_REF_HDR) && p->rid >= 0 && bns->anns[p->rid].anno != 0 && bns->anns[p->rid].anno[0] != 0) {
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
|
||||||
1
bwamem.h
1
bwamem.h
|
|
@ -20,6 +20,7 @@ typedef struct __smem_i smem_i;
|
||||||
#define MEM_F_SOFTCLIP 0x200
|
#define MEM_F_SOFTCLIP 0x200
|
||||||
#define MEM_F_SMARTPE 0x400
|
#define MEM_F_SMARTPE 0x400
|
||||||
#define MEM_F_PRIMARY5 0x800
|
#define MEM_F_PRIMARY5 0x800
|
||||||
|
#define MEM_F_XB 0x1000
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int a, b; // match score and mismatch penalty
|
int a, b; // match score and mismatch penalty
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,10 @@ char **mem_gen_alt(const mem_opt_t *opt, const bntseq_t *bns, const uint8_t *pac
|
||||||
kputc("MIDSHN"[t.cigar[k]&0xf], &str);
|
kputc("MIDSHN"[t.cigar[k]&0xf], &str);
|
||||||
}
|
}
|
||||||
kputc(',', &str); kputw(t.NM, &str);
|
kputc(',', &str); kputw(t.NM, &str);
|
||||||
|
if (opt->flag & MEM_F_XB) {
|
||||||
|
kputc(',', &str);
|
||||||
|
kputw(t.score, &str);
|
||||||
|
}
|
||||||
kputc(';', &str);
|
kputc(';', &str);
|
||||||
free(t.cigar);
|
free(t.cigar);
|
||||||
kputsn(str.s, str.l, &aln[r]);
|
kputsn(str.s, str.l, &aln[r]);
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ int main_mem(int argc, char *argv[])
|
||||||
|
|
||||||
aux.opt = opt = mem_opt_init();
|
aux.opt = opt = mem_opt_init();
|
||||||
memset(&opt0, 0, sizeof(mem_opt_t));
|
memset(&opt0, 0, sizeof(mem_opt_t));
|
||||||
while ((c = getopt(argc, argv, "51paMCSPVYjk:c:v:s:r:t:R:A:B:O:E:U:w:L:d:T:Q:D:m:I:N:o:f:W:x:G:h:y:K:X:H:")) >= 0) {
|
while ((c = getopt(argc, argv, "51paMCSPVYjuk:c:v:s:r:t:R:A:B:O:E:U:w:L:d:T:Q:D:m:I:N:o:f:W:x:G:h:y:K:X:H:")) >= 0) {
|
||||||
if (c == 'k') opt->min_seed_len = atoi(optarg), opt0.min_seed_len = 1;
|
if (c == 'k') opt->min_seed_len = atoi(optarg), opt0.min_seed_len = 1;
|
||||||
else if (c == '1') no_mt_io = 1;
|
else if (c == '1') no_mt_io = 1;
|
||||||
else if (c == 'x') mode = optarg;
|
else if (c == 'x') mode = optarg;
|
||||||
|
|
@ -148,6 +148,7 @@ int main_mem(int argc, char *argv[])
|
||||||
else if (c == 'Y') opt->flag |= MEM_F_SOFTCLIP;
|
else if (c == 'Y') opt->flag |= MEM_F_SOFTCLIP;
|
||||||
else if (c == 'V') opt->flag |= MEM_F_REF_HDR;
|
else if (c == 'V') opt->flag |= MEM_F_REF_HDR;
|
||||||
else if (c == '5') opt->flag |= MEM_F_PRIMARY5;
|
else if (c == '5') opt->flag |= MEM_F_PRIMARY5;
|
||||||
|
else if (c == 'u') opt->flag |= MEM_F_XB;
|
||||||
else if (c == 'c') opt->max_occ = atoi(optarg), opt0.max_occ = 1;
|
else if (c == 'c') opt->max_occ = atoi(optarg), opt0.max_occ = 1;
|
||||||
else if (c == 'd') opt->zdrop = atoi(optarg), opt0.zdrop = 1;
|
else if (c == 'd') opt->zdrop = atoi(optarg), opt0.zdrop = 1;
|
||||||
else if (c == 'v') bwa_verbose = atoi(optarg);
|
else if (c == 'v') bwa_verbose = atoi(optarg);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue