Exemplo n.º 1
0
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;
};
Exemplo n.º 2
0
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;
}