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);
|
mm_write_sam_hdr(mi, rg, MM_VERSION, argc, argv);
|
||||||
} else {
|
} else {
|
||||||
mm_write_sam_hdr(0, rg, MM_VERSION, argc, argv);
|
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");
|
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;
|
int i;
|
||||||
pipeline_t pl;
|
pipeline_t pl;
|
||||||
mm_idx_t *mi;
|
|
||||||
if (n_segs < 1 || n_split_idx < 1) return -1;
|
if (n_segs < 1 || n_split_idx < 1) return -1;
|
||||||
memset(&pl, 0, sizeof(pipeline_t));
|
memset(&pl, 0, sizeof(pipeline_t));
|
||||||
pl.n_fp = n_segs;
|
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];
|
pl.rid_shift[i] = pl.rid_shift[i - 1];
|
||||||
for (pl.rid_shift[0] = 0, i = 1; i < n_split_idx; ++i)
|
for (pl.rid_shift[0] = 0, i = 1; i < n_split_idx; ++i)
|
||||||
pl.rid_shift[i] += pl.rid_shift[i - 1];
|
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);
|
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)
|
for (i = 0; i < pl.n_fp; ++i)
|
||||||
mm_bseq_close(pl.fp[i]);
|
mm_bseq_close(pl.fp[i]);
|
||||||
free(pl.fp);
|
free(pl.fp);
|
||||||
|
mm_split_rm_tmp(opt->split_prefix, n_split_idx);
|
||||||
return 0;
|
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);
|
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);
|
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);
|
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_puts(const char *str);
|
||||||
void mm_err_fwrite(const void *p, size_t size, size_t nitems, FILE *fp);
|
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;
|
int i, j;
|
||||||
|
|
||||||
if (n_splits < 1) return 0;
|
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) {
|
for (i = 0; i < n_splits; ++i) {
|
||||||
sprintf(fn, "%s.%.4d.tmp", prefix, i);
|
sprintf(fn, "%s.%.4d.tmp", prefix, i);
|
||||||
if ((fp[i] = fopen(fn, "rb")) == 0) {
|
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);
|
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) {
|
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(&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]);
|
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;
|
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