int mGetOptions(int rgc, char *rgv[]) { //[options] int i; for(i=1; i<rgc; i++) { if(rgv[i][0]!='-') return i; switch(rgv[i][1]) { case 'a': query_a_file = rgv[++i]; break; case 'b': query_b_file = rgv[++i]; break; case 'd': ref_file = rgv[++i]; break; case 's': param.SetSeedSize(atoi(rgv[++i])); break; case 'o': out_align_file = rgv[++i]; break; case '2': out_align_file_unpair = rgv[++i]; break; case 'y': param.optimize_output_SV=0; break; case 'm': param.min_insert = atoi(rgv[++i]); break; case 'x': param.max_insert = atoi(rgv[++i]); break; case 'v': param.max_snp_num = atoi(rgv[++i]); if(param.max_snp_num>MAXSNPS) usage(); break; case 'g': param.max_gap_size = atoi(rgv[++i]); break; case 'w': param.max_num_hits = atoi(rgv[++i]); if(param.max_num_hits>MAXHITS) usage(); break; case 'e': param.gap_edge = atoi(rgv[++i]); break; case 'q': param.qual_threshold = atoi(rgv[++i]); break; case 'c': param.trim_lowQ=atoi(rgv[++i]); break; case 'f': param.max_ns=atoi(rgv[++i]); break; case 'z': param.zero_qual = rgv[++i][0]; break; case 'r': param.report_repeat_hits = atoi(rgv[++i]); break; case 'p': param.num_procs=atoi(rgv[++i]); break; case 't': param.output_id=0; break; case 'n': param.chains=atoi(rgv[++i]); break; case 'T': param.SetMrnaTag(atoi(rgv[++i])); break; case 'A': param.adapter=rgv[++i]; break; case 'S': param.admis=atoi(rgv[++i]); break; case 'M': param.mirna_min=atoi(rgv[++i]); break; case 'X': param.mirna_max=atoi(rgv[++i]); break; case 'h':usage(); //usage information case '?':usage(); //unrecognizable input } } return i; };
int mGetOptions(int rgc, char *rgv[]) { // options int i; for (i=1; i<rgc; i++) { if (rgv[i][0]!='-') return i; switch(rgv[i][1]) { case 'a': query_a_file = rgv[++i]; break; case 'q': query_q_file = rgv[++i]; break; case 'd': ref_file = rgv[++i]; break; case 'k': param.SetSeedSize(atoi(rgv[++i])); break; case 'p': param.seed_overlap = atoi(rgv[++i]); break; case 'o': out_align_file = rgv[++i]; break; case 'u': param.mask=atoi(rgv[++i]); break; case 'g': param.global_signal = atoi(rgv[++i]); break; case 'f': param.outputformat = atoi(rgv[++i]); break; case 'l': param.min_read_size = atoi(rgv[++i]); break; case 't': param.maxtrys = atoi(rgv[++i]); break; case 'c': param.identity = atoi(rgv[++i]); break; case 'm': param.align_len = atoi(rgv[++i]); break; case 'w': param.lenforstep = atoi(rgv[++i]); break; case 'e': param.evalue = atof(rgv[++i]); break; case 'r': param.report_repeat_hits = atoi(rgv[++i]); break; case 'n': param.chains=atoi(rgv[++i]); break; case 'b': param.band=atoi(rgv[++i]); break; case 'T': param.ncpu=atoi(rgv[++i]); if (param.ncpu < 0) param.ncpu = 1; if (param.ncpu > MAX_THREADS) param.ncpu = MAX_THREADS; break; case 'h':usage(); // Usage information case '?':usage(); // Unrecognizable input } } // 4-mers filtering cutoff and // this idea is from cd-hit // bps aligned correct param.best_nas = (param.align_len*param.identity)/100; // 4-mers param.best_kmers = param.align_len-(param.align_len-param.best_nas)*4 - 3; param.best_pigeon = param.align_len / param.seed_size -1 - (param.align_len - param.best_nas); if (param.best_pigeon < 1) param.best_pigeon = 1; if (param.identity >= 95 ){ param.seed_overlap=0; } // One candidate matching block consists at least one seed (4-mers) if (param.best_kmers < (param.seed_size - 3)) { param.best_kmers = param.seed_size - 3; } // Repeats mask or nomask if (param.mask == 0) { param.useful_nt=param.useful_nt_nomask; param.nx_nt=param.nx_nt_nomask; } return i; }