From: Heng Li Date: Mon, 19 Mar 2012 18:11:30 +0000 (-0400) Subject: name sorting checkes READ1 and READ2 X-Git-Url: https://git.donarmstrong.com/?p=samtools.git;a=commitdiff_plain;h=27dd510539a22712060f3bbe8c7098c56764ee79 name sorting checkes READ1 and READ2 --- diff --git a/bam_sort.c b/bam_sort.c index 03196a8..d38c7a1 100644 --- a/bam_sort.c +++ b/bam_sort.c @@ -50,7 +50,7 @@ static inline int heap_lt(const heap1_t a, const heap1_t b) int t; if (a.b == 0 || b.b == 0) return a.b == 0? 1 : 0; t = strnum_cmp(bam1_qname(a.b), bam1_qname(b.b)); - return (t > 0 || (t == 0 && __pos_cmp(a, b))); + return (t > 0 || (t == 0 && (a.b->core.flag&0xc0) > (b.b->core.flag&0xc0))); } else return __pos_cmp(a, b); } @@ -320,7 +320,7 @@ static inline int bam1_lt(const bam1_p a, const bam1_p b) { if (g_is_by_qname) { int t = strnum_cmp(bam1_qname(a), bam1_qname(b)); - return (t < 0 || (t == 0 && (((uint64_t)a->core.tid<<32|(a->core.pos+1)) < ((uint64_t)b->core.tid<<32|(b->core.pos+1))))); + return (t < 0 || (t == 0 && (a->core.flag&0xc0) < (b->core.flag&0xc0))); } else return (((uint64_t)a->core.tid<<32|(a->core.pos+1)<<1|bam1_strand(a)) < ((uint64_t)b->core.tid<<32|(b->core.pos+1)<<1|bam1_strand(b))); } KSORT_INIT(sort, bam1_p, bam1_lt)