void output_vcf_row(FILE * vcf_file_pointer, char * bases_for_snp, int snp_location, int number_of_samples, char pseudo_reference_sequence[]) { char reference_base = pseudo_reference_sequence[snp_location]; if(reference_base == '\0') { fprintf(stderr, "Couldnt get the reference base for coordinate %d\n",snp_location); fflush(stderr); exit(EXIT_FAILURE); } // Chromosome fprintf( vcf_file_pointer, "1\t"); // Position fprintf( vcf_file_pointer, "%d\t", (int) snp_location +1 ); //ID fprintf( vcf_file_pointer, ".\t"); // REF fprintf( vcf_file_pointer, "%c\t", (char) reference_base ); // ALT // Need to look through list and find unique characters char * alt_bases = alternative_bases(reference_base, bases_for_snp, number_of_samples); char * alternative_bases_string = format_alternative_bases(alt_bases); fprintf( vcf_file_pointer, "%s\t", alternative_bases_string ); free(alternative_bases_string); // QUAL fprintf( vcf_file_pointer, ".\t"); // FILTER fprintf( vcf_file_pointer, ".\t"); // INFO fprintf( vcf_file_pointer, ".\t"); // FORMAT fprintf( vcf_file_pointer, "GT\t"); // Bases for each sample output_vcf_row_samples_bases(vcf_file_pointer, reference_base, alt_bases, bases_for_snp, number_of_samples ); free(alt_bases); fprintf( vcf_file_pointer, "\n"); }
void output_vcf_row(FILE * vcf_file_pointer, char * bases_for_snp, int snp_location, int number_of_samples) { char reference_base = bases_for_snp[0]; if(reference_base == '\0') { return; } // Chromosome fprintf( vcf_file_pointer, "1\t"); // Position fprintf( vcf_file_pointer, "%d\t", (int) snp_location +1 ); //ID fprintf( vcf_file_pointer, ".\t"); // REF fprintf( vcf_file_pointer, "%c\t", (char) reference_base ); // ALT // Need to look through list and find unique characters char * alt_bases = alternative_bases(reference_base, bases_for_snp, number_of_samples); char * alternative_bases_string = format_alternative_bases(alt_bases); fprintf( vcf_file_pointer, "%s\t", alternative_bases_string ); free(alternative_bases_string); // QUAL fprintf( vcf_file_pointer, ".\t"); // FILTER fprintf( vcf_file_pointer, ".\t"); // INFO fprintf( vcf_file_pointer, ".\t"); // FORMAT fprintf( vcf_file_pointer, "GT\t"); // Bases for each sample output_vcf_row_samples_bases(vcf_file_pointer, reference_base, alt_bases, bases_for_snp, number_of_samples ); free(alt_bases); fprintf( vcf_file_pointer, "\n"); }