char * alternative_bases(char reference_base, char * bases_for_snp, int number_of_samples) { int i; int num_alt_bases = 0; char * alt_bases = calloc(MAXIMUM_NUMBER_OF_ALT_BASES+1, sizeof(char)); for(i=0; i< number_of_samples; i++ ) { char current_base = bases_for_snp[i]; if(current_base != reference_base) { if(is_unknown(current_base)) { // VCF spec only allows ACGTN* for alts current_base = '*'; } if(check_if_char_in_string(alt_bases, current_base, num_alt_bases) == 0) { if (num_alt_bases >= MAXIMUM_NUMBER_OF_ALT_BASES) { fprintf(stderr, "Unexpectedly large number of alternative bases found between sequences. Please check input file is not corrupted\n\n"); fflush(stderr); exit(EXIT_FAILURE); } alt_bases[num_alt_bases] = current_base; num_alt_bases++; } } } alt_bases[num_alt_bases] = '\0'; return alt_bases; }
char * alternative_bases(char reference_base, char * bases_for_snp, int number_of_samples) { int i; int num_alt_bases = 0; char * alt_bases = calloc(MAXIMUM_NUMBER_OF_ALT_BASES+1, sizeof(char)); for(i=0; i< number_of_samples; i++ ) { if((bases_for_snp[i] != reference_base) && (bases_for_snp[i] != '-') && (toupper(bases_for_snp[i]) != 'N') ) { if(check_if_char_in_string(alt_bases, bases_for_snp[i], num_alt_bases) == 0) { if (num_alt_bases >= MAXIMUM_NUMBER_OF_ALT_BASES) { fprintf(stderr, "Unexpectedly large number of alternative bases found between sequences. Please check input file is not corrupted\n\n"); fflush(stderr); exit(EXIT_FAILURE); } alt_bases[num_alt_bases] = bases_for_snp[i]; num_alt_bases++; } } } return alt_bases; }