print SAM header; remove tmp files
This commit is contained in:
parent
4b707aac92
commit
a655cbef86
2
main.c
2
main.c
|
|
@ -329,7 +329,7 @@ int main(int argc, char *argv[])
|
|||
mm_write_sam_hdr(mi, rg, MM_VERSION, argc, argv);
|
||||
} else {
|
||||
mm_write_sam_hdr(0, rg, MM_VERSION, argc, argv);
|
||||
if (mm_verbose >= 2)
|
||||
if (opt.split_prefix == 0 && mm_verbose >= 2)
|
||||
fprintf(stderr, "[WARNING]\033[1;31m For a multi-part index, no @SQ lines will be outputted.\033[0m\n");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5
map.c
5
map.c
|
|
@ -659,7 +659,6 @@ int mm_split_merge(int n_segs, const char **fn, const mm_mapopt_t *opt, int n_sp
|
|||
{
|
||||
int i;
|
||||
pipeline_t pl;
|
||||
mm_idx_t *mi;
|
||||
if (n_segs < 1 || n_split_idx < 1) return -1;
|
||||
memset(&pl, 0, sizeof(pipeline_t));
|
||||
pl.n_fp = n_segs;
|
||||
|
|
@ -681,6 +680,9 @@ int mm_split_merge(int n_segs, const char **fn, const mm_mapopt_t *opt, int n_sp
|
|||
pl.rid_shift[i] = pl.rid_shift[i - 1];
|
||||
for (pl.rid_shift[0] = 0, i = 1; i < n_split_idx; ++i)
|
||||
pl.rid_shift[i] += pl.rid_shift[i - 1];
|
||||
if (opt->flag & MM_F_OUT_SAM)
|
||||
for (i = 0; i < pl.mi->n_seq; ++i)
|
||||
printf("@SQ\tSN:%s\tLN:%d\n", pl.mi->seq[i].name, pl.mi->seq[i].len);
|
||||
|
||||
kt_pipeline(2, worker_pipeline, &pl, 3);
|
||||
|
||||
|
|
@ -692,5 +694,6 @@ int mm_split_merge(int n_segs, const char **fn, const mm_mapopt_t *opt, int n_sp
|
|||
for (i = 0; i < pl.n_fp; ++i)
|
||||
mm_bseq_close(pl.fp[i]);
|
||||
free(pl.fp);
|
||||
mm_split_rm_tmp(opt->split_prefix, n_split_idx);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
1
mmpriv.h
1
mmpriv.h
|
|
@ -92,6 +92,7 @@ void mm_pair(void *km, int max_gap_ref, int dp_bonus, int sub_diff, int match_sc
|
|||
FILE *mm_split_init(const char *prefix, const mm_idx_t *mi);
|
||||
mm_idx_t *mm_split_merge_prep(const char *prefix, int n_splits, FILE **fp, uint32_t *n_seq_part);
|
||||
int mm_split_merge(int n_segs, const char **fn, const mm_mapopt_t *opt, int n_split_idx);
|
||||
void mm_split_rm_tmp(const char *prefix, int n_splits);
|
||||
|
||||
void mm_err_puts(const char *str);
|
||||
void mm_err_fwrite(const void *p, size_t size, size_t nitems, FILE *fp);
|
||||
|
|
|
|||
16
splitidx.c
16
splitidx.c
|
|
@ -33,7 +33,7 @@ mm_idx_t *mm_split_merge_prep(const char *prefix, int n_splits, FILE **fp, uint3
|
|||
int i, j;
|
||||
|
||||
if (n_splits < 1) return 0;
|
||||
fn = (char*)calloc(strlen(prefix) + 10, 1);
|
||||
fn = CALLOC(char, strlen(prefix) + 10);
|
||||
for (i = 0; i < n_splits; ++i) {
|
||||
sprintf(fn, "%s.%.4d.tmp", prefix, i);
|
||||
if ((fp[i] = fopen(fn, "rb")) == 0) {
|
||||
|
|
@ -47,7 +47,7 @@ mm_idx_t *mm_split_merge_prep(const char *prefix, int n_splits, FILE **fp, uint3
|
|||
}
|
||||
free(fn);
|
||||
|
||||
mi = (mm_idx_t*)calloc(1, sizeof(mm_idx_t));
|
||||
mi = CALLOC(mm_idx_t, 1);
|
||||
for (i = 0; i < n_splits; ++i) {
|
||||
mm_err_fread(&mi->k, 4, 1, fp[i]); // TODO: check if k is all the same
|
||||
mm_err_fread(&n_seq_part[i], 4, 1, fp[i]);
|
||||
|
|
@ -66,3 +66,15 @@ mm_idx_t *mm_split_merge_prep(const char *prefix, int n_splits, FILE **fp, uint3
|
|||
}
|
||||
return mi;
|
||||
}
|
||||
|
||||
void mm_split_rm_tmp(const char *prefix, int n_splits)
|
||||
{
|
||||
int i;
|
||||
char *fn;
|
||||
fn = CALLOC(char, strlen(prefix) + 10);
|
||||
for (i = 0; i < n_splits; ++i) {
|
||||
sprintf(fn, "%s.%.4d.tmp", prefix, i);
|
||||
remove(fn);
|
||||
}
|
||||
free(fn);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue