Lines 69-75
void bns_dump(const bntseq_t *bns, const char *prefix)
Link Here
|
69 |
FILE *fp; |
69 |
FILE *fp; |
70 |
int i; |
70 |
int i; |
71 |
{ // dump .ann |
71 |
{ // dump .ann |
72 |
strcpy(str, prefix); strcat(str, ".ann"); |
72 |
snprintf(str, sizeof(str), "%s.ann", prefix); |
73 |
fp = xopen(str, "w"); |
73 |
fp = xopen(str, "w"); |
74 |
err_fprintf(fp, "%lld %d %u\n", (long long)bns->l_pac, bns->n_seqs, bns->seed); |
74 |
err_fprintf(fp, "%lld %d %u\n", (long long)bns->l_pac, bns->n_seqs, bns->seed); |
75 |
for (i = 0; i != bns->n_seqs; ++i) { |
75 |
for (i = 0; i != bns->n_seqs; ++i) { |
Lines 83-89
void bns_dump(const bntseq_t *bns, const char *prefix)
Link Here
|
83 |
err_fclose(fp); |
83 |
err_fclose(fp); |
84 |
} |
84 |
} |
85 |
{ // dump .amb |
85 |
{ // dump .amb |
86 |
strcpy(str, prefix); strcat(str, ".amb"); |
86 |
snprintf(str, sizeof(str), "%s.amb", prefix); |
87 |
fp = xopen(str, "w"); |
87 |
fp = xopen(str, "w"); |
88 |
err_fprintf(fp, "%lld %d %u\n", (long long)bns->l_pac, bns->n_seqs, bns->n_holes); |
88 |
err_fprintf(fp, "%lld %d %u\n", (long long)bns->l_pac, bns->n_seqs, bns->n_holes); |
89 |
for (i = 0; i != bns->n_holes; ++i) { |
89 |
for (i = 0; i != bns->n_holes; ++i) { |
Lines 171-182
bntseq_t *bns_restore(const char *prefix)
Link Here
|
171 |
char ann_filename[1024], amb_filename[1024], pac_filename[1024], alt_filename[1024]; |
171 |
char ann_filename[1024], amb_filename[1024], pac_filename[1024], alt_filename[1024]; |
172 |
FILE *fp; |
172 |
FILE *fp; |
173 |
bntseq_t *bns; |
173 |
bntseq_t *bns; |
174 |
strcat(strcpy(ann_filename, prefix), ".ann"); |
174 |
snprintf(ann_filename, sizeof(ann_filename), "%s.ann", prefix); |
175 |
strcat(strcpy(amb_filename, prefix), ".amb"); |
175 |
snprintf(amb_filename, sizeof(amb_filename), "%s.amb", prefix); |
176 |
strcat(strcpy(pac_filename, prefix), ".pac"); |
176 |
snprintf(pac_filename, sizeof(pac_filename), "%s.pac", prefix); |
177 |
bns = bns_restore_core(ann_filename, amb_filename, pac_filename); |
177 |
bns = bns_restore_core(ann_filename, amb_filename, pac_filename); |
178 |
if (bns == 0) return 0; |
178 |
if (bns == 0) return 0; |
179 |
if ((fp = fopen(strcat(strcpy(alt_filename, prefix), ".alt"), "r")) != 0) { // read .alt file if present |
179 |
snprintf(alt_filename, sizeof(alt_filename), "%s.alt", prefix); |
|
|
180 |
if ((fp = fopen(alt_filename, "r")) != 0) { // read .alt file if present |
180 |
char str[1024]; |
181 |
char str[1024]; |
181 |
khash_t(str) *h; |
182 |
khash_t(str) *h; |
182 |
int c, i, absent; |
183 |
int c, i, absent; |
Lines 197-203
bntseq_t *bns_restore(const char *prefix)
Link Here
|
197 |
} |
198 |
} |
198 |
while (c != '\n' && c != EOF) c = fgetc(fp); |
199 |
while (c != '\n' && c != EOF) c = fgetc(fp); |
199 |
i = 0; |
200 |
i = 0; |
200 |
} else str[i++] = c; // FIXME: potential segfault here |
201 |
} else { |
|
|
202 |
if (i >= 1022) { |
203 |
fprintf(stderr, "[E::%s] sequence name longer than 1023 characters. Abort!\n", __func__); |
204 |
exit(1); |
205 |
} |
206 |
str[i++] = c; |
207 |
} |
201 |
} |
208 |
} |
202 |
kh_destroy(str, h); |
209 |
kh_destroy(str, h); |
203 |
fclose(fp); |
210 |
fclose(fp); |
Lines 294-300
int64_t bns_fasta2bntseq(gzFile fp_fa, const char *prefix, int for_only)
Link Here
|
294 |
bns->ambs = (bntamb1_t*)calloc(m_holes, sizeof(bntamb1_t)); |
301 |
bns->ambs = (bntamb1_t*)calloc(m_holes, sizeof(bntamb1_t)); |
295 |
pac = calloc(m_pac/4, 1); |
302 |
pac = calloc(m_pac/4, 1); |
296 |
q = bns->ambs; |
303 |
q = bns->ambs; |
297 |
strcpy(name, prefix); strcat(name, ".pac"); |
304 |
snprintf(name, sizeof(name), "%s.pac", prefix); |
298 |
fp = xopen(name, "wb"); |
305 |
fp = xopen(name, "wb"); |
299 |
// read sequences |
306 |
// read sequences |
300 |
while (kseq_read(seq) >= 0) pac = add1(seq, bns, pac, &m_pac, &m_seqs, &m_holes, &q); |
307 |
while (kseq_read(seq) >= 0) pac = add1(seq, bns, pac, &m_pac, &m_seqs, &m_holes, &q); |