c = &b->core;
idx->n = h->n_targets;
- bam_header_destroy(h);
idx->index = (khash_t(i)**)calloc(idx->n, sizeof(void*));
for (i = 0; i < idx->n; ++i) idx->index[i] = kh_init(i);
idx->index2 = (bam_lidx_t*)calloc(idx->n, sizeof(bam_lidx_t));
if (c->tid >= 0) {
recalculated_bin = bam_reg2bin(c->pos, bam_calend(c, bam1_cigar(b)));
if (c->bin != recalculated_bin) {
- fprintf(stderr, "[bam_index_core] read '%s' mapped at POS %d to %d has BIN %d but should be %d\n",
- bam1_qname(b), c->pos + 1, bam_calend(c, bam1_cigar(b)), c->bin, recalculated_bin);
+ fprintf(stderr, "[bam_index_core] read '%s' mapped to '%s' at POS %d to %d has BIN %d but should be %d\n",
+ bam1_qname(b), h->target_name[c->tid], c->pos + 1, bam_calend(c, bam1_cigar(b)), c->bin, recalculated_bin);
fprintf(stderr, "[bam_index_core] Fix it by using BAM->SAM->BAM to force a recalculation of the BIN field\n");
return NULL;
}
last_off = bam_tell(fp);
last_coor = b->core.pos;
}
+ bam_header_destroy(h);
if (save_tid >= 0) {
insert_offset(idx->index[save_tid], save_bin, save_off, bam_tell(fp));
insert_offset(idx->index[save_tid], BAM_MAX_BIN, off_beg, bam_tell(fp));