int main(int argc, char **argv) { printf ("*** testing search_by_name\n"); struct record records[] = { {"Alice",18,6}, {"Bob",17,7},{"Claudia",18,49}, {"bobby", 0, 0} }; int rv = search_by_name(records, 4, "alice", 0); assert(rv == 0); rv = search_by_name(records, 4, "audi", 1); assert(rv == 2); rv = search_by_name(records, 4, "alice", 1); assert(rv == -1); printf ("*** testing get_matches\n"); int *matches = NULL; matches = get_matches(records, 4, "bob"); assert(matches[0] == 2); assert(matches[1] == 1); assert(matches[2] == 3); free(matches); // this shouldn't crash :-) matches = NULL; matches = get_matches(records, 4, "robert"); assert(matches[0] == 0); free(matches); printf ("*** if you got here, then the tests passed\n"); return 0; }
char *h_duel(t_plateau *plateau, int player) { if (player == 1) { while (42) { h_human(plateau); if (get_matches(plateau) == 1) return (rockpaper()); h_ia(plateau); if (get_matches(plateau) == 1) return ("AI win !!\nSee you soon !\n"); } } else { while (42) { h_ia(plateau); if (get_matches(plateau) == 1) return ("AI win !!\nSee you soon !\n"); h_human(plateau); if (get_matches(plateau) == 1) return (rockpaper()); } } }
int main (int argc, char **argv) { int nrow = DEFAULT_NROW, which_seq = 0, do_order = 0, misses_allowed = 0, output_mode = -1; float cutoff = DEFAULT_CUTOFF; char *strand = NULL, *id = NULL; struct mafFile *file = NULL; struct mafAli *ali = NULL; struct mafComp *comp = NULL; struct MOTIF *motif = NULL; struct MATCH *matches = NULL; id = ckalloc (STRSIZE); get_args (argc, argv, &output_mode, &file, &id, &motif, &do_order, &nrow, &cutoff, &misses_allowed); strand = ckalloc (sizeof (char) * (nrow + 1)); while (NULL != (ali = mafNext (file))) { for (comp = ali->components, which_seq = 0; comp; comp = comp->next, which_seq++) strand[which_seq] = comp->strand; strand[which_seq] = '\0'; /* skip blocks that don't have all seqs in them */ if (which_seq != nrow) { mafAliFree (&ali); continue; } /* forward strand */ get_matches (&matches, FORWARD, ali, nrow, motif, do_order, misses_allowed); /* reverse strand */ for (comp = ali->components; comp; comp = comp->next) do_revcomp((uchar *)comp->text, ali->textSize ); get_matches (&matches, REVERSE, ali, nrow, motif, do_order, misses_allowed); /* output matches */ if (matches) output_matches (matches, strand, id, nrow, motif); free_match_list (&matches); mafAliFree (&ali); } mafFileFree (&file); free (strand); free_motif_list (&motif); free (id); return 0; }
static struct custom_data *decode_custom_data(unsigned char *buf, int len, struct custom_data *d) { gint ix = 0; gboolean err = FALSE; LOG("%s: len=%d", __FUNCTION__, len); while (ix < len && !err) { LOG("buf[%d]=0x%02x=%d", ix, buf[ix], buf[ix]); switch (buf[ix++]) { case CD_VERSION: { gint ver; ix += get_byte(&(buf[ix]), &ver); if (ver != 0) ERROR("Wrong version %d", ver); } break; case CD_NAME_LONG: LOG("CD_NAME_LONG"); ix += get_string(&(buf[ix]), d->name_long); break; case CD_NAME_SHORT: LOG("CD_NAME_SHORT"); ix += get_string(&(buf[ix]), d->name_short); break; case CD_COMPETITORS_MIN: GET_SHORT(d->competitors_min); LOG("CD_COMPETITORS_MIN = %d", d->competitors_min); break; case CD_COMPETITORS_MAX: GET_SHORT(d->competitors_max); LOG("CD_COMPETITORS_MAX = %d", d->competitors_max); break; case CD_NUM_RR_POOLS: LOG("CD_NUM_RR_POOLS"); ix += get_rr_pools(&(buf[ix]), d, &err); break; case CD_NUM_MATCHES: LOG("CD_NUM_MATCHES"); ix += get_matches(&(buf[ix]), d, &err); break; case CD_NUM_POSITIONS: LOG("CD_NUM_POSITIONS"); ix += get_positions(&(buf[ix]), d, &err); break; case CD_NUM_B3_POOLS: ix += get_best_of_three_pairs(&(buf[ix]), d, &err); break; case CD_NUM_GROUPS: ix += get_groups(&(buf[ix]), d, &err); break; default: g_print("Unknown CD type %d\n", buf[ix-1]); return NULL; } } if (err) return NULL; return d; }
int main (int argc, char *argv[]) { char *filename; char *divstring = NULL, *lasttypestring, *ptr; Univcoord_T univ_coordstart, univ_coordend; Chrpos_T coordstart, coordend, lastcoord = 0U; char Buffer[BUFLEN], nocomment[BUFLEN], query[BUFLEN], typestring[BUFLEN]; int typeint, *types, c; int nargs, ntypes, ndivs; int *value_matches = NULL, *matches = NULL; int n_value_matches = 0, nmatches = 0, i; int *leftflanks, *rightflanks, nleftflanks = 0, nrightflanks = 0; long int total; int n; IIT_T iit = NULL; Univ_IIT_T chromosome_iit = NULL; bool skipp, universalp; int opt; extern int optind; extern char *optarg; const char *long_name; int long_option_index = 0; while ((opt = getopt_long(argc,argv,"a:b:f:LCASUu:c:HRTZN",long_options,&long_option_index)) != -1) { switch (opt) { case 0: long_name = long_options[long_option_index].name; if (!strcmp(long_name,"version")) { print_program_version(); exit(0); } else if (!strcmp(long_name,"help")) { print_program_usage(); exit(0); } else if (!strcmp(long_name,"exact")) { exactp = true; } else { /* Shouldn't reach here */ fprintf(stderr,"Don't recognize option %s. For usage, run 'gsnap --help'",long_name); exit(9); } break; case 'a': lowval = atof(optarg); user_lowvalue_p = true; value_matches_p = true; break; case 'b': highval = atof(optarg); user_highvalue_p = true; value_matches_p = true; break; case 'f': fieldstring = optarg; break; case 'L': force_label_p = true; break; case 'C': force_coords_p = true; break; case 'A': annotationonlyp = true; break; case 'S': sortp = true; break; case 'U': signedp = false; break; case 'u': nflanking = atoi(optarg); break; case 'c': centerp = true; centerlength = atoi(optarg); break; case 'H': centeruc = true; break; case 'R': runlengthp = true; break; case 'T': tallyp = true; break; case 'Z': zeroesp = true; break; case 'N': statsp = true; break; case 'V': print_program_version(); exit(0); case '?': print_program_usage(); exit(0); default: exit(9); } } argc -= (optind - 1); argv += (optind - 1); if (argc <= 1) { fprintf(stderr,"Need to specify an iit file. Type \"iit_get --help\" for help.\n"); exit(9); } else { filename = argv[1]; } if (value_matches_p == true) { if ((iit = IIT_read(filename,/*name*/NULL,true,/*divread*/READ_ALL,/*divstring*/NULL, /*add_iit_p*/true,/*labels_read_p*/true)) == NULL) { if (Access_file_exists_p(filename) == false) { fprintf(stderr,"Cannot read file %s\n",filename); } else { fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename); } exit(9); } else if (fieldstring != NULL) { if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) { fprintf(stderr,"No field %s defined in iit file.\n",fieldstring); exit(9); } } if (IIT_valuep(iit) == false) { fprintf(stderr,"Error: This IIT file does not have values stored\n"); exit(9); } if (user_lowvalue_p == true && user_highvalue_p == true) { if (lowval > highval) { fprintf(stderr,"Cannot have lowval %f > highval %f\n",lowval,highval); exit(9); } else { value_matches = IIT_get_values_between(&n_value_matches,iit,lowval,highval,/*sortp*/false); } } else if (user_lowvalue_p == true) { value_matches = IIT_get_values_above(&n_value_matches,iit,lowval,/*sortp*/false); } else { /* user_highvalue_p == true */ value_matches = IIT_get_values_below(&n_value_matches,iit,highval,/*sortp*/false); } } if (0 && statsp == true && argc == 2) { /* Want total over entire IIT */ if ((iit = IIT_read(filename,NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,/*add_iit_p*/true, /*labels_read_p*/false)) == NULL) { if (Access_file_exists_p(filename) == false) { fprintf(stderr,"Cannot read file %s\n",filename); } else { fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename); } exit(9); } else if (fieldstring != NULL) { if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) { fprintf(stderr,"No field %s defined in iit file.\n",fieldstring); exit(9); } } total = 0; n = 0; for (i = 0; i < IIT_total_nintervals(iit); i++) { debug(printf("index = %d\n",matches[i])); compute_totals_tally(&total,&n,/*coordstart*/0,/*coordend*/-1U,i,iit); } printf("counts:%ld non-zero-positions:%u mean-over-nonzero:%.3f\n",total,n,(double) total/(double) n); IIT_free(&iit); return 0; } else if ((universalp = IIT_universalp(filename,/*add_iit_p*/true)) == true) { chromosome_iit = Univ_IIT_read(filename,/*readonlyp*/true,/*add_iit_p*/true); if (argc != 3) { fprintf(stderr,"For chromosome IIT file, need to specify a query on the command line\n"); exit(9); } else { /* Try as 0:<iitfile> 1:<query> */ matches = get_matches_univ(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],/*typestring*/NULL,&chromosome_iit,filename); for (i = 0; i < nmatches; i++) { debug(printf("\nindex = %d\n",matches[i])); print_interval_univ(univ_coordstart,univ_coordend,matches[i],chromosome_iit); } } if (divstring != NULL) { FREE(divstring); } Univ_IIT_free(&chromosome_iit); return 0; } else if (argc == 2 && value_matches_p == true) { /* Note: Could potentially handle input from stdin, but currently just deal with value_matches */ ndivs = IIT_ndivs(iit); for (i = 0; i < n_value_matches; i++) { debug(printf("\nindex = %d\n",matches[i])); print_interval(&lastcoord,/*total*/0,/*divstring*/NULL,/*coordstart*/0,/*coordend*/0, value_matches[i],iit,ndivs,fieldint); } FREE(value_matches); IIT_free(&iit); return 0; } else if (argc == 2) { debug(printf("Running under argc 2\n")); /* Expecting input from stdin */ if ((iit = IIT_read(filename,NULL,true,/*divread*/READ_ALL,/*divstring*/NULL,/*add_iit_p*/true, /*labels_read_p*/true)) == NULL) { if (Access_file_exists_p(filename) == false) { fprintf(stderr,"Cannot read file %s\n",filename); } else { fprintf(stderr,"File %s appears to be an invalid IIT file\n",filename); } exit(9); } else if (fieldstring != NULL) { if ((fieldint = IIT_fieldint(iit,fieldstring)) < 0) { fprintf(stderr,"No field %s defined in iit file.\n",fieldstring); exit(9); } } while (fgets(Buffer,BUFLEN,stdin) != NULL) { if ((ptr = rindex(Buffer,'\n')) != NULL) { *ptr = '\0'; } strcpy(nocomment,Buffer); if ((ptr = rindex(nocomment,'#')) != NULL) { *ptr = '\0'; } skipp = false; if ((nargs = sscanf(nocomment,"%s %s",query,typestring)) == 2) { debug(printf("typestring is %s\n",typestring)); matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, query,typestring,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else if (nargs == 1) { debug(printf("typestring is NULL\n")); matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, query,/*typestring*/NULL,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else { fprintf(stderr,"Can't parse line %s. Ignoring.\n",nocomment); skipp = true; } total = 0; if (skipp == false) { fprintf(stdout,"# Query: %s\n",Buffer); ndivs = IIT_ndivs(iit); if (nflanking > 0) { for (i = nleftflanks-1; i >= 0; i--) { debug(printf("\nleft index = %d\n",leftflanks[i])); print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,leftflanks[i],iit,ndivs,fieldint); } printf("====================\n"); FREE(leftflanks); } lastcoord = coordstart; for (i = 0; i < nmatches; i++) { debug(printf("\nindex = %d\n",matches[i])); total = print_interval(&lastcoord,total,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint); } if (nflanking > 0) { printf("====================\n"); for (i = 0; i < nrightflanks; i++) { debug(printf("\nright index = %d\n",rightflanks[i])); print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,rightflanks[i],iit,ndivs,fieldint); } FREE(rightflanks); } if (zeroesp == true) { while (lastcoord <= coordend) { printf("%s\t%u\t%d\n",divstring,lastcoord,0); lastcoord++; } } } if (divstring != NULL) { FREE(divstring); } FREE(matches); printf("%ld\n",total); fprintf(stdout,"# End\n"); fflush(stdout); } IIT_free(&iit); return 0; } else { /* Get coordinates/type from command line */ if (argc == 3) { /* Try as 0:<iitfile> 1:<query> */ matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],/*typestring*/NULL,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else if (argc == 4) { /* Try as 0:<iitfile> 1:<query> 2:<type> */ debug(printf("Running under argc 4\n")); matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],argv[3],&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else { types = (int *) CALLOC(argc-3,sizeof(int)); for (c = 3, ntypes = 0; c < argc; c++) { if ((typeint = IIT_typeint(iit,argv[c])) < 0) { fprintf(stderr,"No such type as %s. Ignoring the type.\n",argv[c]); } else { types[ntypes++] = typeint; lasttypestring = argv[c]; } } if (ntypes == 0) { matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],/*typestring*/NULL,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else if (ntypes == 1) { matches = get_matches(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],lasttypestring,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } else { matches = get_matches_multiple_typed(&nmatches,&divstring,&univ_coordstart,&univ_coordend, &leftflanks,&nleftflanks,&rightflanks,&nrightflanks, argv[2],types,ntypes,&iit,filename); coordstart = (Chrpos_T) univ_coordstart; coordend = (Chrpos_T) univ_coordend; } } if (value_matches_p == true) { matches = match_intersection(&nmatches,/*matches1*/matches,/*nmatches1*/nmatches, /*matches2*/value_matches,/*nmatches2*/n_value_matches); FREE(value_matches); } #if 0 if (centerp == true) { print_spaces(centerlength); printf("*"); print_spaces(centerlength-1); printf("\n"); } #endif if (statsp == true) { total = 0; n = 0; for (i = 0; i < nmatches; i++) { debug(printf("index = %d\n",matches[i])); compute_totals_tally(&total,&n,coordstart,coordend,matches[i],iit); } n = coordend - coordstart + 1; printf("counts:%ld width:%u mean:%.3f\n",total,n,(double)total/(double) n); #if 0 } else if (geomeanp == true) { logtotal = 0.0; total = 0; n = 0; for (i = 0; i < nmatches; i++) { debug(printf("index = %d\n",matches[i])); logtotal = compute_logtotal_tally(&total,&n,coordstart,coordend,matches[i],iit); } printf("geomean:%f totalcounts:%ld posrange:%d\n", exp(logtotal/(double) (coordend - coordstart + 1)) - 1.0,total,n); #endif } else { ndivs = IIT_ndivs(iit); if (nflanking > 0) { for (i = nleftflanks-1; i >= 0; i--) { debug(printf("\nleft index = %d\n",leftflanks[i])); print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,leftflanks[i],iit,ndivs,fieldint); } printf("====================\n"); FREE(leftflanks); } lastcoord = coordstart; for (i = 0; i < nmatches; i++) { debug(printf("\nindex = %d\n",matches[i])); print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,matches[i],iit,ndivs,fieldint); } if (nflanking > 0) { printf("====================\n"); for (i = 0; i < nrightflanks; i++) { debug(printf("\nright index = %d\n",rightflanks[i])); print_interval(&lastcoord,/*total*/0,divstring,coordstart,coordend,rightflanks[i],iit,ndivs,fieldint); } FREE(rightflanks); } } if (divstring != NULL) { FREE(divstring); } FREE(matches); IIT_free(&iit); return 0; } }
int main(int argc, char **argv[]) { string name; vector<Mat>Images(100), TestImages(50); vector<Mat> Descriptor(100), TestDescriptor(50), TestPcafeature(50); vector<vector<KeyPoint>>Keypoints(100), TestKeypoint(50); Mat histogram = Mat::zeros(100, Cluster, CV_32F); Mat Testhistogram = Mat::zeros(50, Cluster, CV_32F); Mat Keyword = Mat::zeros(Cluster, 20, CV_32F); Mat full_Descriptor, Pcafeature, Pcaduplicate, clusteridx, trainlabels(100, 1, CV_32F); vector<vector<DMatch>> matches(50); Mat predicted(Testhistogram.rows, 1, CV_32F); // Read Training Images. read_train(Images, name); //Calculate SIFT features for the Training Images. calculate_SIFT(Images,Keypoints,Descriptor); merge_descriptor(full_Descriptor,Descriptor); //Compute PCA for all the features across all Images. PCA pca; perform_PCA(full_Descriptor, Pcafeature, pca); //Perform K-Means on all the PCA reduced features. Pcafeature.convertTo(Pcaduplicate, CV_32F); calculate_Kmeans(Pcaduplicate, clusteridx); //Calculate the Keywords in the Feature Space. make_dictionary(clusteridx, Pcaduplicate, Keyword); //Get the Histogram for each Training Image. hist(Descriptor, clusteridx, histogram); //Read Test Image read_test(TestImages, name); //Calculate the SIFT feature for all the test Images. calculate_SIFT(TestImages, TestKeypoint, TestDescriptor); //Project the SIFT feature of each feature on the lower dimensional PCA plane calculated above. pca_testProject(TestDescriptor, TestPcafeature, pca); //Find the Label by searching for keywords closest to current feature. get_matches(TestPcafeature,Keyword,matches); //Calculate Histogram for each test Image. hist_test(TestDescriptor, matches, Testhistogram); //Perform classification through Knn Classifier. train_labels(trainlabels); KNearest knn; train_classifier(histogram, trainlabels, knn); test_classify(Testhistogram,predicted,knn); //Calculate Accuracy for each class. calculate_accuracy(predicted); getchar(); return 0; }
void *find_field(void *ptr) { struct find_field_args *args; args = (struct find_field_args *) ptr; FILE *in_file = fopen(args->ioargs->in_file, "r"); if (!in_file) { fprintf(stderr, "failed to open %s for reading\n", args->ioargs->in_file); return NULL; } fprintf(stderr, "opening %s for writing...\n", args->ioargs->out_file); FILE *out_file = fopen(args->ioargs->out_file, "w"); if (!out_file) { fprintf(stderr, "failed to open %s for reading\n", args->ioargs->out_file); return NULL; } struct search_patterns *sp = malloc(sizeof(struct search_patterns)); *sp = get_search_patterns(args->search_field, args->id_field); int i, pos = 0, consumed = 0; char *line = NULL; char *input_buffer = malloc(sizeof(char) * CHUNK); if (!input_buffer) { fprintf(stderr, "failed to alloc input buffer\n"); return NULL; } fprintf(out_file, "%s", "["); while(1) { line = get_next_line(&input_buffer, &consumed, &pos, in_file, args->ioargs); if (!line) break; int count = strlen(line); int p, m = 0; for (p=0; p<sp->pcount; p++) { get_match_positions(line, count, &sp->patterns[p]); if (sp->patterns[p].match_count > 0 ) { if (strcmp(sp->patterns[p].type, "id")!=0) { m += sp->patterns[p].match_count; sp->match_count += sp->patterns[p].match_count; } get_matches(line, count, &sp->patterns[p]); } } if (m > 0) fprintf(out_file, "{"); int l; for (p=0; p<sp->pcount; p++) { if (strcmp(sp->patterns[p].type, "id")==0 && m > 0) { fprintf(out_file, "\"identifier\":"); for (l=0; l<sp->patterns[p].match_count; l++) { if (sp->patterns[p].matches[l].depth == 1) fprintf(out_file, "%s,", sp->patterns[p].matches[l].string); } } } if (m>0) fprintf(out_file, "\"fields\":["); int t = 1; for (p=0; p<sp->pcount; p++) { if (strcmp(sp->patterns[p].type, "id")!=0 && m > 0) { for (l=0; l<sp->patterns[p].match_count; l++) if (sp->patterns[p].matches[l].string) { fprintf(out_file, "%s", sp->patterns[p].matches[l].string); if (t==m) fprintf(out_file, "]"); else fprintf(out_file, ","); t++; } } for (l=0; l<sp->patterns[p].match_count; l++) if (sp->patterns[p].matches[l].string) { free(sp->patterns[p].matches[l].string); sp->patterns[p].matches[l].string = NULL; } free(sp->patterns[p].matches); sp->patterns[p].matches = NULL; } if (m > 0) fprintf(out_file, "},\n"); free(line); line = NULL; } fseek(out_file, -2, SEEK_END); fprintf(out_file, "%s", "]"); fclose(in_file); fclose(out_file); for (i=0; i<sp->pcount; i++) { if (strcmp(sp->patterns[i].type, "id")!=0) fprintf(stderr,"%s matches: %d\n", sp->patterns[i].type, sp->patterns[i].total_match_count); free(sp->patterns[i].string); free(sp->patterns[i].name); free(sp->patterns[i].type); } fprintf(stderr, "total matches: %d\n\n", sp->match_count); free(sp->patterns); free(sp); free(input_buffer); }