int gt_paircmp(int argc, const char **argv, GtError *err) { int parsed_args; Cmppairwiseopt cmppairwise; GtOPrval oprval; gt_error_check(err); oprval = parse_options(&parsed_args, &cmppairwise, argc, argv, err); if (oprval == GT_OPTION_PARSER_OK) { gt_assert(parsed_args == argc); showsimpleoptions(&cmppairwise); if (cmppairwise.showedist) { GtUword edist, len1, len2; GtStr *s1, *s2; gt_assert(gt_str_array_size(cmppairwise.strings) >= 2); s1 = gt_str_array_get_str(cmppairwise.strings,0); s2 = gt_str_array_get_str(cmppairwise.strings,1UL); len1 = gt_str_length(s1); len2 = gt_str_length(s2); edist = gt_computegreedyunitedist((const GtUchar *) gt_str_get(s1), len1, (const GtUchar *) gt_str_get(s2), len2); printf(GT_WU " " GT_WU " " GT_WU " " GT_WU "%% errors\n", edist, len1,len2,(200 * edist)/(len1+len2)); } else if (cmppairwise.print) { gt_print_edist_alignment( (const GtUchar *) gt_str_array_get(cmppairwise.strings,0),0, (GtUword) strlen(gt_str_array_get(cmppairwise.strings,0)), (const GtUchar *) gt_str_array_get(cmppairwise.strings,1UL),0, (GtUword) strlen(gt_str_array_get(cmppairwise.strings,1UL))); } else { size_t idx; Checkfunctiontabentry checkfunction_tab[] = { MAKECheckfunctiontabentry(gt_checkgreedyunitedist), MAKECheckfunctiontabentry(gt_checklinearspace), MAKECheckfunctiontabentry(gt_checklinearspace_local), MAKECheckfunctiontabentry(gt_checkaffinelinearspace), MAKECheckfunctiontabentry(gt_checkaffinelinearspace_local) }; for (idx = 0; idx < sizeof checkfunction_tab/sizeof checkfunction_tab[0]; idx++) { GtUword testcases = applycheckfunctiontosimpleoptions(checkfunction_tab[idx].function, &cmppairwise); printf("# number of testcases for %s: " GT_WU "\n", checkfunction_tab[idx].name,testcases); } } } freesimpleoption(&cmppairwise); if (oprval == GT_OPTION_PARSER_REQUESTS_EXIT) { return 0; } if (oprval == GT_OPTION_PARSER_ERROR) { return -1; } return 0; }
int gt_paircmp(int argc, const char **argv, GtError *err) { int parsed_args; Cmppairwiseopt cmppairwise; GtOPrval oprval; GtFastaReader *reader0 = NULL, *reader1 = NULL; gt_error_check(err); oprval = parse_options(&parsed_args, &cmppairwise, argc, argv, err); if (oprval == GT_OPTION_PARSER_OK) { gt_assert(parsed_args == argc); showsimpleoptions(&cmppairwise); if (cmppairwise.showedist) { GtUword edist, len1, len2; GtStr *s1, *s2; gt_assert(gt_str_array_size(cmppairwise.strings) >= 2); s1 = gt_str_array_get_str(cmppairwise.strings,0); s2 = gt_str_array_get_str(cmppairwise.strings,1UL); len1 = gt_str_length(s1); len2 = gt_str_length(s2); edist = gt_computegreedyunitedist((const GtUchar *) gt_str_get(s1), len1, (const GtUchar *) gt_str_get(s2), len2); printf(GT_WU " " GT_WU " " GT_WU " " GT_WU "%% errors\n", edist, len1,len2,(200 * edist)/(len1+len2)); } else if (cmppairwise.print) { const GtStr *str0 = gt_str_array_get_str(cmppairwise.strings,0), *str1 = gt_str_array_get_str(cmppairwise.strings,1); gt_print_edist_alignment((const GtUchar *) gt_str_get(str0),0, gt_str_length(str0), (const GtUchar *) gt_str_get(str1),0, gt_str_length(str1)); } else { size_t idx; Checkfunctiontabentry checkfunction_tab[] = { MAKECheckfunctiontabentry(gt_checkgreedyunitedist), MAKECheckfunctiontabentry(gt_checklinearspace), MAKECheckfunctiontabentry(gt_checklinearspace_local), MAKECheckfunctiontabentry(gt_checkaffinelinearspace), MAKECheckfunctiontabentry(gt_checkaffinelinearspace_local), MAKECheckfunctiontabentry(gt_checkdiagonalbandalign), MAKECheckfunctiontabentry(gt_checkdiagonalbandaffinealign) }; if (cmppairwise.fasta) { gt_assert(gt_str_array_size(cmppairwise.files) == 3); cmppairwise.fastasequences0 = gt_str_array_new(); cmppairwise.fastasequences1 = gt_str_array_new(); reader0 = gt_fasta_reader_rec_new(gt_str_array_get_str( cmppairwise.files,1UL)); gt_fasta_reader_run(reader0, NULL, save_fastaentry, NULL, cmppairwise.fastasequences0, err); reader1 = gt_fasta_reader_rec_new (gt_str_array_get_str( cmppairwise.files,2UL)); gt_fasta_reader_run(reader1, NULL, save_fastaentry, NULL, cmppairwise.fastasequences1, err); gt_error_check(err); } for (idx = 0; idx < sizeof checkfunction_tab/sizeof checkfunction_tab[0]; idx++) { GtUword testcases; printf("run %s\n",checkfunction_tab[idx].name); testcases = applycheckfunctiontosimpleoptions(checkfunction_tab[idx].function, &cmppairwise); printf("# number of testcases for %s: " GT_WU "\n", checkfunction_tab[idx].name,testcases); } gt_fasta_reader_delete(reader0); gt_fasta_reader_delete(reader1); } } freesimpleoption(&cmppairwise); if (oprval == GT_OPTION_PARSER_REQUESTS_EXIT) { return 0; } if (oprval == GT_OPTION_PARSER_ERROR) { return -1; } return 0; }