@@ -20,7 +20,7 @@ void write_vcf_header(bam_hdr_t *hdr, struct call_var_opt_t *opt) {
2020 bcf_hdr_t * vcf_hdr = bcf_hdr_init ("w" );
2121 if (!vcf_hdr ) _err_error_exit ("Could not allocate VCF header.\n" );
2222 // File format
23- bcf_hdr_append (vcf_hdr , "##fileformat=VCFv4.3" );
23+ // bcf_hdr_append(vcf_hdr, "##fileformat=VCFv4.3");
2424
2525 // Get current date
2626 time_t t = time (NULL );
@@ -144,14 +144,14 @@ int write_var_to_vcf(var_t *vars, const struct call_var_opt_t *opt, char *chrom)
144144 buffer = (char * )realloc (buffer , buf_m * sizeof (char ));
145145 }
146146 for (int j = 0 ; j < var .ref_len ; j ++ )
147- len += snprintf (buffer + len , sizeof ( buffer ) - len , "%c" , "ACGTN" [var .ref_bases [j ]]);
147+ len += snprintf (buffer + len , buf_m - len , "%c" , "ACGTN" [var .ref_bases [j ]]);
148148
149149 // Write ALT
150- len += snprintf (buffer + len , sizeof ( buffer ) - len , "\t" );
150+ len += snprintf (buffer + len , buf_m - len , "\t" );
151151 for (int j = 0 ; j < var .n_alt_allele ; j ++ ) {
152152 for (int k = 0 ; k < var .alt_len [j ]; k ++ )
153- len += snprintf (buffer + len , sizeof ( buffer ) - len , "%c" , "ACGTN" [var .alt_bases [j ][k ]]);
154- if (j < var .n_alt_allele - 1 ) len += snprintf (buffer + len , sizeof ( buffer ) - len , "," );
153+ len += snprintf (buffer + len , buf_m - len , "%c" , "ACGTN" [var .alt_bases [j ][k ]]);
154+ if (j < var .n_alt_allele - 1 ) len += snprintf (buffer + len , buf_m - len , "," );
155155 }
156156
157157 // Structural Variant (SV) annotation
@@ -174,21 +174,21 @@ int write_var_to_vcf(var_t *vars, const struct call_var_opt_t *opt, char *chrom)
174174 }
175175
176176 // Write QUAL, FILTER, INFO
177- len += snprintf (buffer + len , sizeof ( buffer ) - len , "\t%d\tPASS\t" , var .QUAL );
178- if (var .is_somatic ) len += snprintf (buffer + len , sizeof ( buffer ) - len , "SOMATIC;" );
179- if (var .te_seq_i >= 0 ) len += snprintf (buffer + len , sizeof ( buffer ) - len , "MEI;" );
180- len += snprintf (buffer + len , sizeof ( buffer ) - len , "END=%" PRId64 "" , var .pos + var .ref_len - 1 );
177+ len += snprintf (buffer + len , buf_m - len , "\t%d\tPASS\t" , var .QUAL );
178+ if (var .is_somatic ) len += snprintf (buffer + len , buf_m - len , "SOMATIC;" );
179+ if (var .te_seq_i >= 0 ) len += snprintf (buffer + len , buf_m - len , "MEI;" );
180+ len += snprintf (buffer + len , buf_m - len , "END=%" PRId64 "" , var .pos + var .ref_len - 1 );
181181 if (is_sv ) {
182- len += snprintf (buffer + len , sizeof ( buffer ) - len , ";%s;%s" , SVTYPE , SVLEN );
182+ len += snprintf (buffer + len , buf_m - len , ";%s;%s" , SVTYPE , SVLEN );
183183 if (var .tsd_len > 0 ) {
184- len += snprintf (buffer + len , sizeof ( buffer ) - len , ";TSD=" );
185- for (int i = 0 ; i < var .tsd_len ; ++ i ) len += snprintf (buffer + len , sizeof ( buffer ) - len , "%c" , "ACGTN" [var .tsd_seq [i ]]);
186- len += snprintf (buffer + len , sizeof ( buffer ) - len , ";TSDLEN=%d;POLYALEN=%d;TSDPOS1=%" PRId64 "" , var .tsd_len , var .polya_len , var .tsd_pos1 );
187- if (var .tsd_pos2 > 0 ) len += snprintf (buffer + len , sizeof ( buffer ) - len , ";TSDPOS2=%" PRId64 "" , var .tsd_pos2 );
184+ len += snprintf (buffer + len , buf_m - len , ";TSD=" );
185+ for (int i = 0 ; i < var .tsd_len ; ++ i ) len += snprintf (buffer + len , buf_m - len , "%c" , "ACGTN" [var .tsd_seq [i ]]);
186+ len += snprintf (buffer + len , buf_m - len , ";TSDLEN=%d;POLYALEN=%d;TSDPOS1=%" PRId64 "" , var .tsd_len , var .polya_len , var .tsd_pos1 );
187+ if (var .tsd_pos2 > 0 ) len += snprintf (buffer + len , buf_m - len , ";TSDPOS2=%" PRId64 "" , var .tsd_pos2 );
188188 }
189- if (var .te_seq_i >= 0 ) len += snprintf (buffer + len , sizeof ( buffer ) - len , ";REPNAME=%c%s" , "+-" [var .te_is_rev ], opt -> te_seq_names [var .te_seq_i ]);
189+ if (var .te_seq_i >= 0 ) len += snprintf (buffer + len , buf_m - len , ";REPNAME=%c%s" , "+-" [var .te_is_rev ], opt -> te_seq_names [var .te_seq_i ]);
190190 }
191- len += snprintf (buffer + len , sizeof ( buffer ) - len , "\t" );
191+ len += snprintf (buffer + len , buf_m - len , "\t" );
192192
193193 // Write FORMAT and Genotype Data
194194 int gt1 = var .GT [0 ], gt2 = var .GT [1 ];
@@ -198,19 +198,19 @@ int write_var_to_vcf(var_t *vars, const struct call_var_opt_t *opt, char *chrom)
198198 if (gt1 > gt2 ) { int tmp = gt1 ; gt1 = gt2 ; gt2 = tmp ; }
199199 }
200200 if (is_hom || var .PS == 0 )
201- len += snprintf (buffer + len , sizeof ( buffer ) - len , "GT:DP:AD:GQ\t%d%c%d:%d:" , gt1 , gt_seperator , gt2 , var .DP );
201+ len += snprintf (buffer + len , buf_m - len , "GT:DP:AD:GQ\t%d%c%d:%d:" , gt1 , gt_seperator , gt2 , var .DP );
202202 else
203- len += snprintf (buffer + len , sizeof ( buffer ) - len , "GT:DP:AD:GQ:PS\t%d%c%d:%d:" , gt1 , gt_seperator , gt2 , var .DP );
203+ len += snprintf (buffer + len , buf_m - len , "GT:DP:AD:GQ:PS\t%d%c%d:%d:" , gt1 , gt_seperator , gt2 , var .DP );
204204
205205 for (int j = 0 ; j < 1 + var .n_alt_allele ; j ++ ) {
206- if (j > 0 ) len += snprintf (buffer + len , sizeof ( buffer ) - len , "," );
207- len += snprintf (buffer + len , sizeof ( buffer ) - len , "%d" , var .AD [j ]);
206+ if (j > 0 ) len += snprintf (buffer + len , buf_m - len , "," );
207+ len += snprintf (buffer + len , buf_m - len , "%d" , var .AD [j ]);
208208 }
209209
210210 if (is_hom || var .PS == 0 )
211- len += snprintf (buffer + len , sizeof ( buffer ) - len , ":%d\n" , var .GQ );
211+ len += snprintf (buffer + len , buf_m - len , ":%d\n" , var .GQ );
212212 else
213- len += snprintf (buffer + len , sizeof ( buffer ) - len , ":%d:%" PRId64 "\n" , var .GQ , var .PS );
213+ len += snprintf (buffer + len , buf_m - len , ":%d:%" PRId64 "\n" , var .GQ , var .PS );
214214
215215 // Write to htsFile
216216 if (out_vcf -> format .compression != no_compression ) {
@@ -222,7 +222,6 @@ int write_var_to_vcf(var_t *vars, const struct call_var_opt_t *opt, char *chrom)
222222 _err_error_exit ("Could not write to VCF file.\n" );
223223 }
224224 }
225- // fprintf(stdout, "%s", buffer);
226225 n_output_vars ++ ;
227226 }
228227 free (buffer );
0 commit comments