static int gt_index_options_check_set_out_opts(void *oip, GtError *err) { int had_err = 0; GtIndexOptions *oi = (GtIndexOptions*) oip; gt_assert(oi != NULL && oi->type != GT_INDEX_OPTIONS_UNDEFINED); gt_error_check(err); if (!had_err) { int retval; retval = gt_readmode_parse(gt_str_get(oi->dir), err); if (retval < 0) { had_err = -1; } else { oi->readmode = (GtReadmode) retval; if (oi->type == GT_INDEX_OPTIONS_PACKED && (oi->readmode == GT_READMODE_COMPL || oi->readmode == GT_READMODE_REVCOMPL)) { gt_error_set(err,"construction of packed index not possible for " "complemented and for reverse complemented sequences"); had_err = -1; } } } if (!had_err && oi->type == GT_INDEX_OPTIONS_PACKED) { #ifndef S_SPLINT_S gt_computePackedIndexDefaults(&oi->bwtIdxParams, BWTBaseFeatures); #endif } if (!had_err && gt_option_is_set(oi->optionkys)) { oi->outkystab = true; if (strcmp(gt_str_get(oi->kysargumentstring), "sort") == 0) { oi->outkyssort = true; } else { if (strcmp(gt_str_get(oi->kysargumentstring),"nosort") != 0) { gt_error_set(err,"illegal argument to option -kys: either use no " "argument or argument \"sort\""); had_err = -1; } } } return had_err; }
static GtOPrval parseChkBWTOptions(int *parsed_args, int argc, const char **argv, struct chkSearchOptions *params, const GtStr *projectName, GtError *err) { GtOptionParser *op; GtOPrval oprval; GtOption *option, *optionProgress; bool checkSuffixArrayValues, tryContextRetrieve, tryFullRegen; gt_error_check(err); op = gt_option_parser_new("indexname", "Load (or build if necessary) BWT index for project" " <indexname> and perform verification of search" " results."); gt_registerPackedIndexOptions(op, ¶ms->idx, BWTDEFOPT_MULTI_QUERY, projectName); option = gt_option_new_long("minpatlen", "minimum length of patterns searched for, -1 " "implies automatic choice based on index " "properties", ¶ms->minPatLen, -1); gt_option_parser_add_option(op, option); option = gt_option_new_long("maxpatlen", "maximum length of patterns searched for, -1 " "implies automatic choice based on index " "properties", ¶ms->maxPatLen, -1); gt_option_parser_add_option(op, option); option = gt_option_new_ulong("nsamples", "number of sequences to search for", ¶ms->numOfSamples, 1000); gt_option_parser_add_option(op, option); option = gt_option_new_bool("chksfxarray", "verify integrity of stored suffix array positions", &checkSuffixArrayValues, false); gt_option_parser_add_option(op, option); option = gt_option_new_bool("full-lfmap", "verify complete backwards regeneration of " "original sequence", &tryFullRegen, false); gt_option_parser_add_option(op, option); option = gt_option_new_bool("chkcontext", "verify integrity of regenerated sequence context", &tryContextRetrieve, false); gt_option_parser_add_option(op, option); optionProgress = gt_option_new_ulong("ticks", "print dot after this many symbols " "tested okay", ¶ms->progressInterval, DEFAULT_PROGRESS_INTERVAL); gt_option_parser_add_option(op, optionProgress); option = gt_option_new_bool("v", "print verbose progress information", ¶ms->verboseOutput, false); gt_option_parser_add_option(op, option); gt_option_parser_set_min_max_args(op, 1, 1); oprval = gt_option_parser_parse(op, parsed_args, argc, argv, gt_versionfunc, err); /* condense boolean options to flags field */ params->flags = (checkSuffixArrayValues?VERIFY_BWTSEQ_SUFVAL:0) | (tryFullRegen?VERIFY_BWTSEQ_LFMAPWALK:0) | (tryContextRetrieve?VERIFY_BWTSEQ_CONTEXT:0); /* compute parameters currently not set from command-line or * determined indirectly */ gt_computePackedIndexDefaults(¶ms->idx, BWTBaseFeatures); gt_option_parser_delete(op); return oprval; }