END_TEST START_TEST (valid_with_only_aln_file_output) { generate_snp_sites("../tests/data/alignment_file_one_line_per_sequence.aln",1,0,0,""); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.snp_sites.aln","alignment_file_one_line_per_sequence.aln.snp_sites.aln" ) == 1 ,"Invalid ALN file for multiple lines per seq"); remove("alignment_file_one_line_per_sequence.aln.snp_sites.aln"); }
END_TEST START_TEST (valid_with_phylip_outputted_with_custom_name) { generate_snp_sites("../tests/data/alignment_file_one_line_per_sequence.aln",0,0,1,"some_custom_name"); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.phylip", "some_custom_name" ) == 1, "Custom name needs extra extension for phylip" ); remove("some_custom_name"); }
END_TEST START_TEST (valid_with_only_aln_file_output_with_custom_name) { char output_filename[100] = {"some_custom_name"}; generate_snp_sites("../tests/data/alignment_file_multiple_lines_per_sequence.aln",1,0,0,output_filename); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.snp_sites.aln","some_custom_name" ) == 1 ,"Only aln with custom name should be outputted"); remove("some_custom_name"); }
END_TEST START_TEST (valid_alignment_with_multiple_lines_per_sequence) { generate_snp_sites("../tests/data/alignment_file_multiple_lines_per_sequence.aln",1,1,1,""); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.vcf", "alignment_file_multiple_lines_per_sequence.aln.vcf" ) == 1, "Invalid VCF file for multiple lines per seq" ); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.phylip", "alignment_file_multiple_lines_per_sequence.aln.phylip" ) == 1, "Invalid Phylip file for multiple lines per seq" ); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.snp_sites.aln","alignment_file_multiple_lines_per_sequence.aln.snp_sites.aln" ) == 1 ,"Invalid ALN file for multiple lines per seq"); remove("alignment_file_multiple_lines_per_sequence.aln.vcf"); remove("alignment_file_multiple_lines_per_sequence.aln.phylip"); remove("alignment_file_multiple_lines_per_sequence.aln.snp_sites.aln"); }
END_TEST START_TEST (valid_alignment_with_n_as_gap) { generate_snp_sites("../tests/data/alignment_file_with_n.aln",1,1,1, ""); fail_unless( compare_files("../tests/data/alignment_file_with_n.aln.vcf", "alignment_file_with_n.aln.vcf" ) == 1, "Invalid VCF file for 1 line per seq" ); fail_unless( compare_files("../tests/data/alignment_file_with_n.aln.phylip", "alignment_file_with_n.aln.phylip" ) == 1, "Invalid Phylip file for 1 line per seq" ); fail_unless( compare_files("../tests/data/alignment_file_with_n.aln.snp_sites.aln","alignment_file_with_n.aln.snp_sites.aln" ) == 1 , "Invalid ALN file for 1 line per seq"); remove("alignment_file_with_n.aln.vcf"); remove("alignment_file_with_n.aln.phylip"); remove("alignment_file_with_n.aln.snp_sites.aln"); }
END_TEST START_TEST (valid_alignment_with_one_line_per_sequence_gzipped) { generate_snp_sites("../tests/data/alignment_file_one_line_per_sequence.aln.gz",1,1,1, NULL); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.vcf", "alignment_file_one_line_per_sequence.aln.gz.vcf" ) == 1, "Invalid VCF file for 1 line per seq" ); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.phylip", "alignment_file_one_line_per_sequence.aln.gz.phylip" ) == 1, "Invalid Phylip file for 1 line per seq" ); fail_unless( compare_files("../tests/data/alignment_file_one_line_per_sequence.aln.snp_sites.aln","alignment_file_one_line_per_sequence.aln.gz.snp_sites.aln" ) == 1 , "Invalid ALN file for 1 line per seq"); remove("alignment_file_one_line_per_sequence.aln.gz.vcf"); remove("alignment_file_one_line_per_sequence.aln.gz.phylip"); remove("alignment_file_one_line_per_sequence.aln.gz.snp_sites.aln"); }
int main (int argc, char **argv) { char multi_fasta_filename[FILENAME_MAX] = {""}; char output_filename[FILENAME_MAX] = {""}; int c; int index; int output_multi_fasta_file = 0; int output_vcf_file = 0; int output_phylip_file = 0; while ((c = getopt (argc, argv, "mvpo:V")) != -1) switch (c) { case 'm': output_multi_fasta_file = 1; break; case 'v': output_vcf_file = 1; break; case 'V': print_version(); return 0; case 'p': output_phylip_file = 1; break; case 'o': strncpy(output_filename, optarg, FILENAME_MAX); break; case 'h': print_usage(); return 0; default: output_multi_fasta_file = 1; } if(optind < argc) { strncpy(multi_fasta_filename, argv[optind], FILENAME_MAX); generate_snp_sites(multi_fasta_filename, output_multi_fasta_file, output_vcf_file, output_phylip_file, output_filename); } else { print_usage(); } return 0; }
int main (int argc, char **argv) { char multi_fasta_filename[FILENAME_MAX] = {""}; char output_filename[FILENAME_MAX] = {""}; int c; int index; int output_multi_fasta_file = 0; int output_vcf_file = 0; int output_phylip_file = 0; int output_reference = 0; int pure_mode = 0; int output_monomorphic =0; while ((c = getopt (argc, argv, "mvrbpco:V")) != -1) switch (c) { case 'm': output_multi_fasta_file = 1; break; case 'v': output_vcf_file = 1; break; case 'V': print_version(); return 0; case 'p': output_phylip_file = 1; break; case 'r': output_reference = 1; break; case 'c': pure_mode = 1; break; case 'b': output_monomorphic = 1; break; case 'o': strncpy(output_filename, optarg, FILENAME_MAX); break; case 'h': print_usage(); exit(EXIT_SUCCESS); default: output_multi_fasta_file = 1; } if(optind < argc) { // check to see if the input alignment file exists if( access( argv[optind], F_OK ) == -1 ) { fprintf(stderr,"ERROR: cannot access input alignment file '%s'\n", argv[optind]); fflush(stderr); exit(EXIT_FAILURE); } strncpy(multi_fasta_filename, argv[optind], FILENAME_MAX); if( pure_mode || output_monomorphic) { generate_snp_sites_with_ref_pure_mono(multi_fasta_filename, output_multi_fasta_file, output_vcf_file, output_phylip_file, output_filename,output_reference,pure_mode,output_monomorphic); } else if(output_reference ) { generate_snp_sites_with_ref(multi_fasta_filename, output_multi_fasta_file, output_vcf_file, output_phylip_file, output_filename); } else { generate_snp_sites(multi_fasta_filename, output_multi_fasta_file, output_vcf_file, output_phylip_file, output_filename); } } else { print_usage(); } exit(EXIT_SUCCESS); }
END_TEST START_TEST (invalid_with_uneven_file_lengths) { generate_snp_sites("../tests/data/uneven_alignment.aln",1,0,0,""); }