void analyse_param_cds( int argc, char *argv[], long long* s, double *e, char *input, char *output_file) { int i; int g_data = -1; int g_e = 0; int g_s = 0; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { // seed case 's': i++; if (argc == i || argv[i][0] == '-') print_error_cds("cmd","s (seed number)"); *s = atoi(argv[i]); g_s = 1; break; // percentage of masked genotype case 'r': i++; if (argc == i || argv[i][0] == '-') print_error_cds("cmd","r (percentage of masked data)"); *e = (double) atof(argv[i]); if (*e < 0) *e = 0; if (*e > 1) *e = 1; g_e = 1; break; // help case 'h': print_help_cds(); exit(1); break; // licence case 'l': print_licence_snmf(); exit(1); break; // input file case 'x': i++; if (argc == i || argv[i][0] == '-') print_error_cds("cmd","x (genotype file)"); g_data = 0; strcpy(input,argv[i]); break; // output file case 'o': i++; if (argc == i || argv[i][0] == '-') print_error_cds("cmd","o (genotype file with masked genotypes)"); strcpy(output_file,argv[i]); break; default: print_error_cds("basic",NULL); } } else { print_error_cds("basic",NULL); } } // no data file if (g_data == -1) print_error_cds("option","-x genotype_file"); // no seed if (g_s && *s <= 0) *s = -1; // percentage not in [0,1] if (g_e && (*e <= 0 || *e >= 1)) print_error_cds("missing",""); // write output file name change_ext(input, output_file, "_I.geno"); }
void analyse_param_ce( int argc, char *argv[], int* m, int* K, char *input, char* input_file_Q, char* input_file_F, char *input_file_I) { int i; int g_data = -1; char *tmp_file; char tmp[512]; int g_m = 0; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { // the number of ancestral populations case 'K': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","K (number of ancestral populations)"); *K = atoi(argv[i]); strcpy(tmp,argv[i]); break; // the ploidy case 'm': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","m (number of alleles)"); *m = atoi(argv[i]); g_m = 1; break; // help case 'h': print_help_ce(); exit(1); break; // licence case 'l': print_licence_snmf(); exit(1); break; // genotypic file case 'x': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","x (genotype file)"); g_data = 0; strcpy(input,argv[i]); break; // individual admixture file case 'q': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","q (individual admixture coefficients file)"); strcpy(input_file_Q,argv[i]); break; // ancestral genotype frequency file case 'g': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","g (ancestral genotype frequencies file)"); strcpy(input_file_F,argv[i]); break; // genotypic file with masked data case 'i': i++; if (argc == i || argv[i][0] == '-') print_error_ce("cmd","i (genotype file with masked genotypes)"); strcpy(input_file_I,argv[i]); break; default: print_error_ce("basic",NULL); } } else { print_error_ce("basic",NULL); } } // no genotypic file if (g_data == -1) print_error_ce("option","-x genotype_file"); // ploidy and negative if (g_m && *m <= 0) print_error_ce("missing", NULL); // negative K if (*K <= 0) print_error_ce("missing",NULL); // write output file names tmp_file = remove_ext(input,'.','/'); if (!strcmp(input_file_F,"")) { strcpy(input_file_F,tmp_file); strcat(input_file_F,"_I."); strcat(input_file_F,tmp); strcat(input_file_F,".G"); } if (!strcmp(input_file_Q,"")) { strcpy(input_file_Q,tmp_file); strcat(input_file_Q,"_I."); strcat(input_file_Q,tmp); strcat(input_file_Q,".Q"); } if (!strcmp(input_file_I,"")) { strcpy(input_file_I,tmp_file); strcat(input_file_I,"_I.geno"); } free(tmp_file); }
void analyse_param_snmf(int argc, char *argv[], sNMF_param param) { int i; int g_data = -1; char *tmp_file; char tmp[512]; int g_c = 0; int g_m = 0; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'K': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","K (number of clusters)",0); param->K = atoi(argv[i]); strcpy(tmp,argv[i]); break; case 's': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","s (seed number)",0); param->seed= atoll(argv[i]); break; case 'm': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","m (number of alleles)",0); param->m = atoi(argv[i]); g_m = 1; break; case 'a': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","alpha (regularization parameter)",0); param->alpha = (double) atof(argv[i]); if (param->alpha < 0) { param->alpha = 0; } break; case 'h': // global print_help_snmf(); exit(1); break; case 'l': // global print_licence_snmf(); exit(1); break; case 'e': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","e (tolerance error in the algorithm)",0); param->tolerance = (double) atof(argv[i]); if (param->tolerance < 0) { param->tolerance = 0; } break; case 'c': i++; if (argc == i || argv[i][0] == '-') { param->pourcentage = 0.05; i--; } else { param->pourcentage = (double) atof(argv[i]); } g_c = 1; break; case 'i': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","i (number of iterations)",0); param->maxiter = atoi(argv[i]); break; case 'I': i++; if (argc == i || argv[i][0] == '-') { param->I = -1; i--; } else param->I = (int) atoi(argv[i]); break; case 'x': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","x (genotype file)",0); g_data = 0; strcpy(param->input_file,argv[i]); break; case 'q': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","q (individual admixture coefficients file)",0); strcpy(param->output_file_Q,argv[i]); break; case 'Q': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","Q (admixture coefficients initialization file)",0); strcpy(param->input_file_Q,argv[i]); break; case 'g': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","g (ancestral genotype frequencies file)",0); strcpy(param->output_file_F,argv[i]); break; case 'p': i++; if (argc == i || argv[i][0] == '-') print_error_nmf("cmd","p (number of processes)",0); param->num_thrd = atoi(argv[i]); break; default: print_error_nmf("basic",NULL,0); } } else { print_error_nmf("basic",NULL,0); } } if (g_data == -1) print_error_nmf("option","-x genotype_file",0); if (param->K <= 0) print_error_nmf("missing",NULL,0); if (param->num_thrd <= 0) print_error_nmf("missing",NULL,0); if (g_m && param->m <= 0) print_error_nmf("missing",NULL,0); if (param->maxiter <= 0) print_error_nmf("missing",NULL,0); if (g_c && (param->pourcentage <= 0 || param->pourcentage >= 1)) print_error_nmf("missing",NULL,0); // write output file name tmp_file = remove_ext(param->input_file,'.','/'); if (!strcmp(param->output_file_Q,"")) { strcpy(param->output_file_Q,tmp_file); strcat(param->output_file_Q,"."); strcat(param->output_file_Q,tmp); strcat(param->output_file_Q,".Q"); } if (!strcmp(param->output_file_F,"")) { strcpy(param->output_file_F,tmp_file); strcat(param->output_file_F,"."); strcat(param->output_file_F,tmp); strcat(param->output_file_F,".G"); } free(tmp_file); }