#include <stdlib.h>
#include <assert.h>
-#define PACKAGE_VERSION "0.1.1 (20090120)"
+#define PACKAGE_VERSION "r439"
//#define MAQ_LONGREADS
m1 = &mm1;
mm = maqmap_read_header(fp);
while ((ret = gzread(fp, m1, sizeof(maqmap1_t))) == sizeof(maqmap1_t)) {
- int j, flag = 0;
+ int j, flag = 0, se_mapq = m1->seq[MAX_READLEN-1];
if (m1->flag) flag |= 1;
if ((m1->flag&PAIRFLAG_PAIRED) || ((m1->flag&PAIRFLAG_SW) && m1->flag != 192)) flag |= 2;
if (m1->flag == 192) flag |= 4;
else if (m1->flag&(PAIRFLAG_RF|PAIRFLAG_RR)) c = 1;
else c = m1->pos&1;
}
- flag |= c;
+ if (c) flag |= 0x20;
}
- if (flag) {
+ if (m1->flag) {
int l = strlen(m1->name);
if (m1->name[l-2] == '/') {
flag |= (m1->name[l-1] == '1')? 0x40 : 0x80;
if (c > 0) printf("%dM%dI%dM\t", m1->map_qual, c, m1->size - m1->map_qual - c);
else printf("%dM%dD%dM\t", m1->map_qual, -c, m1->size - m1->map_qual);
}
+ se_mapq = 0; // zero SE mapQ for reads aligned by SW
} else {
if (flag&4) printf("0\t*\t");
else printf("%d\t%dM\t", m1->map_qual, m1->size);
putchar((m1->seq[j]&0x3f) + 33);
putchar('\t');
if (rg) printf("RG:Z:%s\t", rg);
- if (flag&4) {
+ if (flag&4) { // unmapped
printf("MF:i:%d\n", m1->flag);
} else {
printf("MF:i:%d\t", m1->flag);
- if (m1->flag) printf("AM:i:%d\t", m1->alt_qual);
+ if (m1->flag) printf("AM:i:%d\tSM:i:%d\t", m1->alt_qual, se_mapq);
printf("NM:i:%d\tUQ:i:%d\tH0:i:%d\tH1:i:%d\n", m1->info1&0xf, m1->info2, m1->c[0], m1->c[1]);
}
}