static GtIndexOptions* gt_index_options_register_generic_output(GtOptionParser *op, GtIndexOptions *idxo, GtStr *indexname, GtEncseqOptions *encopts) { gt_assert(idxo != NULL); gt_assert(op != NULL && idxo->type != GT_INDEX_OPTIONS_UNDEFINED && encopts != NULL); idxo->encopts = encopts; idxo->indexname = indexname != NULL ? gt_str_ref(indexname) : NULL; idxo->optionkys = gt_option_new_string("kys", "output/sort according to keys of the form " "|key| in fasta header", idxo->kysargumentstring, "nosort"); gt_option_argument_is_optional(idxo->optionkys); gt_option_imply(idxo->optionkys, gt_encseq_options_sds_option(idxo->encopts)); gt_option_parser_add_option(op, idxo->optionkys); gt_encseq_options_add_readmode_option(op, idxo->dir); if (idxo->type == GT_INDEX_OPTIONS_ESA) { idxo->optionoutsuftab = gt_option_new_bool("suf", "output suffix array (suftab) to file", &idxo->outsuftab, false); gt_option_parser_add_option(op, idxo->optionoutsuftab); idxo->optionoutlcptab = gt_option_new_bool("lcp", "output lcp table (lcptab) to file", &idxo->outlcptab, false); gt_option_parser_add_option(op, idxo->optionoutlcptab); idxo->option = gt_option_new_bool("lcpdist", "output distributions of values in lcptab", &idxo->lcpdist, false); gt_option_is_extended_option(idxo->option); gt_option_imply(idxo->option, idxo->optionoutlcptab); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("swallow-tail", "swallow the tail of the suffix array and lcptab", &idxo->swallow_tail, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->optionoutbwttab = gt_option_new_bool("bwt", "output Burrows-Wheeler Transformation " "(bwttab) to file", &idxo->outbwttab, false); gt_option_exclude(idxo->optionspmopt, idxo->optionoutbwttab); gt_option_parser_add_option(op, idxo->optionoutbwttab); idxo->optionoutbcktab = gt_option_new_bool("bck", "output bucket table to file", &idxo->outbcktab, false); gt_option_parser_add_option(op, idxo->optionoutbcktab); } else { idxo->optionoutsuftab = idxo->optionoutlcptab = idxo->optionoutbwttab = NULL; idxo->sfxstrategy.spmopt_minlength = 0; #ifndef S_SPLINT_S gt_registerPackedIndexOptions(op, &idxo->bwtIdxParams, BWTDEFOPT_CONSTRUCTION, idxo->indexname); #endif } gt_option_parser_register_hook(op, gt_index_options_check_set_out_opts, idxo); return idxo; }
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; }