#include "knetfile.h"
#endif
-#ifndef PACKAGE_VERSION
-#define PACKAGE_VERSION "0.1.12-11 (r921:118)"
-#endif
-
int bam_taf2baf(int argc, char *argv[]);
int bam_pileup(int argc, char *argv[]);
int bam_mpileup(int argc, char *argv[]);
{
fprintf(stderr, "\n");
fprintf(stderr, "Program: samtools (Tools for alignments in the SAM format)\n");
- fprintf(stderr, "Version: %s\n\n", PACKAGE_VERSION);
+ fprintf(stderr, "Version: %s\n\n", BAM_VERSION);
fprintf(stderr, "Usage: samtools <command> [options]\n\n");
fprintf(stderr, "Command: view SAM<->BAM conversion\n");
fprintf(stderr, " sort sort alignment file\n");
int8_t seq[MAX_VARS]; // TODO: change to dynamic memory allocation!
int vpos, beg, end;
uint32_t vlen:16, single:1, flip:1, phase:1, phased:1;
+ uint32_t in:16, out:16; // in-phase and out-phase
} frag_t, *frag_p;
#define rseq_lt(a,b) ((a)->vpos < (b)->vpos)
++c[f->seq[i] == path[f->vpos + i] + 1? 0 : 1];
}
f->phase = c[0] > c[1]? 0 : 1;
- f->phased = c[0] == c[1]? 0 : 1;
+ f->in = c[f->phase]; f->out = c[1 - f->phase];
+ if (f->in && f->out && f->in <= f->out + 1) f->phased = 0;
// fix chimera
f->flip = 0;
if (flip && c[0] >= 3 && c[1] >= 3) {
else {
frag_t *f = &kh_val(hash, k);
if (f->phased && f->flip) which = 2;
- else if (f->phased == 0) which = 3;
+ else if (f->phased == 0) which = 2;
else { // phased and not flipped
char c = 'Y';
which = f->phase;
int8_t c[2];
c[0] = (cns[i]&0xffff)>>2 == 0? 4 : (cns[i]&3);
c[1] = (cns[i]>>16&0xffff)>>2 == 0? 4 : (cns[i]>>16&3);
- printf("M%d\t%s\t%d\t%d\t%c\t%c\t%d\t%d\t%d\t%d\t%d\n", sitemask[i]+1, chr, (int)(cns[0]>>32), (int)(cns[i]>>32) + 1, "ACGTX"[c[path[i]]], "ACGTX"[c[1-path[i]]],
+ printf("M%d\t%s\t%d\t%d\t%c\t%c\t%d\t%d\t%d\t%d\t%d\n", sitemask[i]+1, chr, (int)(cns[0]>>32) + 1, (int)(cns[i]>>32) + 1, "ACGTX"[c[path[i]]], "ACGTX"[c[1-path[i]]],
i + g->vpos_shift + 1, (int)(x&0xffff), (int)(x>>16&0xffff), (int)(x>>32&0xffff), (int)(x>>48&0xffff));
}
free(path); free(pcnt); free(regmask); free(sitemask);
if (f->seq[j] == 0) putchar('N');
else putchar("ACGT"[f->seq[j] == 1? (c&3) : (c>>16&3)]);
}
- printf("\t*\tYP:i:%d\tYF:i:%d\n", f->phase, f->flip);
+ printf("\t*\tYP:i:%d\tYF:i:%d\tYI:i:%d\tYO:i:%d\tYS:i:%d\n", f->phase, f->flip, f->in, f->out, f->beg+1);
}
free(seqs);
printf("//\n");
phaseg_t *g = (phaseg_t*)data;
int ret;
ret = bam_read1(g->fp, b);
+ if (ret < 0) return ret;
if (!(b->core.flag & (BAM_FUNMAP|BAM_FSECONDARY|BAM_FQCFAIL|BAM_FDUP)) && g->pre) {
if (g->n == g->m) {
g->m = g->m? g->m<<1 : 16;
memset(&g, 0, sizeof(phaseg_t));
g.flag = FLAG_FIX_CHIMERA;
- g.min_varLOD = 40; g.k = 13; g.min_baseQ = 13; g.max_depth = 256;
+ g.min_varLOD = 37; g.k = 13; g.min_baseQ = 13; g.max_depth = 256;
while ((c = getopt(argc, argv, "Q:eFq:k:b:l:D:")) >= 0) {
switch (c) {
case 'D': g.max_depth = atoi(optarg); break;