diff --git a/map.c b/map.c index 0812783..89f7818 100644 --- a/map.c +++ b/map.c @@ -80,21 +80,14 @@ static void collect_minimizers(void *km, const mm_mapopt_t *opt, const mm_idx_t #define heap_lt(a, b) ((a).x > (b).x) KSORT_INIT(heap, mm128_t, heap_lt) -typedef struct { - uint32_t n; - uint32_t q_pos, q_span; - uint32_t seg_id:31, is_tandem:1; - const uint64_t *cr; -} mm_match_t; - -static mm_match_t *collect_matches(void *km, int *_n_m, int max_occ, const mm_idx_t *mi, const mm128_v *mv, int64_t *n_a, int *rep_len, int *n_mini_pos, uint64_t **mini_pos) +static mm_seed_t *collect_matches(void *km, int *_n_m, int max_occ, const mm_idx_t *mi, const mm128_v *mv, int64_t *n_a, int *rep_len, int *n_mini_pos, uint64_t **mini_pos) { int rep_st = 0, rep_en = 0, n_m; size_t i; - mm_match_t *m; + mm_seed_t *m; *n_mini_pos = 0; *mini_pos = (uint64_t*)kmalloc(km, mv->n * sizeof(uint64_t)); - m = (mm_match_t*)kmalloc(km, mv->n * sizeof(mm_match_t)); + m = (mm_seed_t*)kmalloc(km, mv->n * sizeof(mm_seed_t)); for (i = 0, n_m = 0, *rep_len = 0, *n_a = 0; i < mv->n; ++i) { const uint64_t *cr; mm128_t *p = &mv->a[i]; @@ -108,7 +101,7 @@ static mm_match_t *collect_matches(void *km, int *_n_m, int max_occ, const mm_id rep_st = st, rep_en = en; } else rep_en = en; } else { - mm_match_t *q = &m[n_m++]; + mm_seed_t *q = &m[n_m++]; q->q_pos = q_pos, q->q_span = q_span, q->cr = cr, q->n = t, q->seg_id = p->y >> 32; q->is_tandem = 0; if (i > 0 && p->x>>8 == mv->a[i - 1].x>>8) q->is_tandem = 1; @@ -122,7 +115,7 @@ static mm_match_t *collect_matches(void *km, int *_n_m, int max_occ, const mm_id return m; } -static inline int skip_seed(int flag, uint64_t r, const mm_match_t *q, const char *qname, int qlen, const mm_idx_t *mi, int *is_self) +static inline int skip_seed(int flag, uint64_t r, const mm_seed_t *q, const char *qname, int qlen, const mm_idx_t *mi, int *is_self) { *is_self = 0; if (qname && (flag & (MM_F_NO_DIAG|MM_F_NO_DUAL))) { @@ -151,7 +144,7 @@ static mm128_t *collect_seed_hits_heap(void *km, const mm_mapopt_t *opt, int max { int i, n_m, heap_size = 0; int64_t j, n_for = 0, n_rev = 0; - mm_match_t *m; + mm_seed_t *m; mm128_t *a, *heap; m = collect_matches(km, &n_m, max_occ, mi, mv, n_a, rep_len, n_mini_pos, mini_pos); @@ -168,7 +161,7 @@ static mm128_t *collect_seed_hits_heap(void *km, const mm_mapopt_t *opt, int max } ks_heapmake_heap(heap_size, heap); while (heap_size > 0) { - mm_match_t *q = &m[heap->y>>32]; + mm_seed_t *q = &m[heap->y>>32]; mm128_t *p; uint64_t r = heap->x; int32_t is_self, rpos = (uint32_t)r >> 1; @@ -216,12 +209,12 @@ static mm128_t *collect_seed_hits(void *km, const mm_mapopt_t *opt, int max_occ, int *n_mini_pos, uint64_t **mini_pos) { int i, n_m; - mm_match_t *m; + mm_seed_t *m; mm128_t *a; m = collect_matches(km, &n_m, max_occ, mi, mv, n_a, rep_len, n_mini_pos, mini_pos); a = (mm128_t*)kmalloc(km, *n_a * sizeof(mm128_t)); for (i = 0, *n_a = 0; i < n_m; ++i) { - mm_match_t *q = &m[i]; + mm_seed_t *q = &m[i]; const uint64_t *r = q->cr; uint32_t k; for (k = 0; k < q->n; ++k) { diff --git a/mmpriv.h b/mmpriv.h index 1eebb5c..7583001 100644 --- a/mmpriv.h +++ b/mmpriv.h @@ -36,6 +36,14 @@ extern "C" { #endif +typedef struct { + uint32_t n; + uint32_t q_pos; + uint32_t q_span:31, flt:1; + uint32_t seg_id:31, is_tandem:1; + const uint64_t *cr; +} mm_seed_t; + typedef struct { int n_u, n_a; uint64_t *u;