static GtOptionParser* gt_seqmutate_option_parser_new(void *tool_arguments) { MutateArguments *arguments = tool_arguments; GtOptionParser *op; GtOption *o; gt_assert(arguments); op = gt_option_parser_new("[option ...] [sequence_file ...]", "Mutate the sequences of the given sequence " "file(s)."); /* -rate */ o = gt_option_new_uint_max("rate", "set the mutation rate", &arguments->rate, 1, 100); gt_option_parser_add_option(op, o); /* -width */ o = gt_option_new_width(&arguments->width); gt_option_parser_add_option(op, o); gt_outputfile_register_options(op, &arguments->outfp, arguments->ofi); gt_option_parser_set_comment_func(op, gt_gtdata_show_help, NULL); return op; }
static GtIndexOptions* gt_index_options_register_generic_create( GtOptionParser *op, GtIndexOptionsIndexType t) { GtIndexOptions *idxo; gt_assert(op != NULL && t != GT_INDEX_OPTIONS_UNDEFINED); idxo = gt_index_options_new(); idxo->type = t; idxo->optionprefixlength = gt_option_new_uint_min("pl", "specify prefix length for bucket sort\n" "recommendation: use without argument;\n" "then a reasonable prefix length is " "automatically determined.", &idxo->prefixlength, GT_PREFIXLENGTH_AUTOMATIC, 1U); gt_option_argument_is_optional(idxo->optionprefixlength); gt_option_parser_add_option(op, idxo->optionprefixlength); idxo->optionuserdefinedsortmaxdepth = gt_option_new_uint_min("sortmaxdepth","sort only up to the given depth.", &idxo->sfxstrategy.userdefinedsortmaxdepth, 0, 1U); gt_option_parser_add_option(op, idxo->optionuserdefinedsortmaxdepth); gt_option_is_development_option(idxo->optionuserdefinedsortmaxdepth); idxo->optiondifferencecover = gt_option_new_uint_min("dc", "specify difference cover value", &idxo->sfxstrategy.differencecover, 0, 4U); gt_option_parser_add_option(op, idxo->optiondifferencecover); gt_option_exclude(idxo->optionuserdefinedsortmaxdepth, idxo->optiondifferencecover); idxo->optioncmpcharbychar = gt_option_new_bool("cmpcharbychar", "compare suffixes character " "by character", &idxo->sfxstrategy.cmpcharbychar, false); gt_option_is_development_option(idxo->optioncmpcharbychar); gt_option_parser_add_option(op, idxo->optioncmpcharbychar); idxo->optionnoshortreadsort = gt_option_new_bool("noshortreadsort", "do not use short read sort", &idxo->sfxstrategy.noshortreadsort, false); gt_option_is_development_option(idxo->optionnoshortreadsort); gt_option_parser_add_option(op, idxo->optionnoshortreadsort); idxo->optionmaxwidthrealmedian = gt_option_new_uword("maxwidthrealmedian", "compute real median for " "intervals of at most the " "given widthprefixes", &idxo->sfxstrategy. maxwidthrealmedian, 1UL); gt_option_is_development_option(idxo->optionmaxwidthrealmedian); gt_option_parser_add_option(op, idxo->optionmaxwidthrealmedian); idxo->optionalgbounds = gt_option_new_string_array("algbds", "length boundaries for the different " "algorithms to sort buckets of suffixes\n" "first number: maxbound for insertion sort\n" "second number: maxbound for blindtrie sort\n" "third number: maxbound for counting sort", idxo->algbounds); gt_option_is_development_option(idxo->optionalgbounds); gt_option_parser_add_option(op, idxo->optionalgbounds); idxo->optionstorespecialcodes = gt_option_new_bool("storespecialcodes", "store special codes (this may speed up the program)", &idxo->sfxstrategy.storespecialcodes,false); gt_option_is_development_option(idxo->optionstorespecialcodes); gt_option_parser_add_option(op, idxo->optionstorespecialcodes); idxo->optionparts = gt_option_new_uint_max("parts", "specify number of parts in which the index " "construction is performed", &idxo->numofparts, 1U, (unsigned) ((1 << 22) - 1)); gt_option_is_development_option(idxo->optionparts); gt_option_parser_add_option(op, idxo->optionparts); if (idxo->type == GT_INDEX_OPTIONS_ESA) { idxo->optionspmopt = gt_option_new_uint_min("spmopt", "optimize esa-construction for " "suffix-prefix matching", &idxo->sfxstrategy.spmopt_minlength, 0,1U); gt_option_parser_add_option(op, idxo->optionspmopt); gt_option_exclude(idxo->optionspmopt, idxo->optiondifferencecover); idxo->optionmemlimit = gt_option_new_string("memlimit", "specify maximal amount of memory to be used during " "index construction (in bytes, the keywords 'MB' " "and 'GB' are allowed)", idxo->memlimit, NULL); gt_option_parser_add_option(op, idxo->optionmemlimit); gt_option_exclude(idxo->optionmemlimit, idxo->optionparts); } idxo->option = gt_option_new_bool("iterscan", "use iteratorbased-kmer scanning", &idxo->sfxstrategy.iteratorbasedkmerscanning, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("samplewithprefixlengthnull", "sort sample with prefixlength=0", &idxo->sfxstrategy.samplewithprefixlengthnull, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("suftabuint", "use uint32_t for suftab", &idxo->sfxstrategy.suftabuint, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("onlybucketinsertion", "perform only bucket insertion", &idxo->sfxstrategy.onlybucketinsertion, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("kmerswithencseqreader", "always perform kmerscanning with encseq-reader", &idxo->sfxstrategy.kmerswithencseqreader, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("dccheck", "check intermediate results in difference cover", &idxo->sfxstrategy.dccheck, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("withradixsort", "use radixsort to sort the buckets", &idxo->sfxstrategy.withradixsort, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); idxo->option = gt_option_new_bool("compressedoutput", "output suftab and lcptab in compressed " "form", &idxo->sfxstrategy.compressedoutput, false); gt_option_is_development_option(idxo->option); gt_option_parser_add_option(op, idxo->option); gt_option_parser_register_hook(op, gt_index_options_check_set_create_opts, idxo); return idxo; }
static GtOPrval gthsplit_parse_options(int *parsed_args, Gthsplitinfo *gthsplitinfo, int argc, const char **argv, const GthPlugins *plugins, GtError *err) { GtOptionParser *op; GtOption *optalignmentscore, *optcoverage, *optrange, *optverbose, *optgzip, *optbzip2, *optforce; bool alignmentscore, coverage, verbose, gzip, bzip2; GtOPrval oprval; gt_error_check(err); op = gt_option_parser_new("-alignmentscore | -coverage [option ...] " "[file ...]", "Split GenomeThreader output files " "containing intermediate results."); /* specify all options with a corresponding help-text */ optalignmentscore = gt_option_new_bool("alignmentscore", "split according to " "the overall alignment score (scr)", &alignmentscore, false); gt_option_parser_add_option(op, optalignmentscore); optcoverage = gt_option_new_bool("coverage", "split according to coverage " "(cov)", &coverage, false); gt_option_parser_add_option(op, optcoverage); optrange = gt_option_new_uint_max(RANGE_OPT_CSTR, "set the percentage range " "used to create the sets", >hsplitinfo->range, DEFAULT_RANGE, 100); gt_option_parser_add_option(op, optrange); /* add sa_filter options */ gth_sa_filter_register_options(op, gthsplitinfo->sa_filter, false); /* -v */ optverbose = gt_option_new_verbose(&verbose); gt_option_parser_add_option(op, optverbose); optgzip = gt_option_new_bool("gzip", "write gzip compressed output file(s)", &gzip, false); gt_option_parser_add_option(op, optgzip); optbzip2 = gt_option_new_bool("bzip2", "write bzip2 compressed output " "file(s)", &bzip2, false); gt_option_parser_add_option(op, optbzip2); optforce = gt_option_new_bool(GT_FORCE_OPT_CSTR,"force writing to split " "files", >hsplitinfo->force, false); gt_option_parser_add_option(op, optforce); gt_option_exclude(optalignmentscore, optcoverage); gt_option_exclude(optgzip, optbzip2); gt_option_is_mandatory_either(optalignmentscore, optcoverage); gt_option_parser_set_mail_address(op, "<*****@*****.**>"); oprval = gt_option_parser_parse(op, parsed_args, argc, argv, plugins->gth_version_func, err); if (oprval == GT_OPTION_PARSER_OK && alignmentscore) gthsplitinfo->splitmode = ALIGNMENTSCORE_SPLIT; if (oprval == GT_OPTION_PARSER_OK && coverage) gthsplitinfo->splitmode = COVERAGE_SPLIT; if (oprval == GT_OPTION_PARSER_OK && 100 % gthsplitinfo->range) { gt_error_set(err, "argument to option %s must divide 100 without rest", RANGE_OPT_CSTR); oprval = GT_OPTION_PARSER_ERROR; } if (oprval == GT_OPTION_PARSER_OK && verbose) gthsplitinfo->showverbose = gth_show_on_stdout; if (oprval == GT_OPTION_PARSER_OK && gzip) gthsplitinfo->file_mode = GT_FILE_MODE_GZIP; if (oprval == GT_OPTION_PARSER_OK && bzip2) gthsplitinfo->file_mode = GT_FILE_MODE_BZIP2; /* save consensus files */ if (oprval == GT_OPTION_PARSER_OK) { while (*parsed_args < argc) { gt_str_array_add_cstr(gthsplitinfo->consensusfiles, argv[*parsed_args]); (*parsed_args)++; } } if (oprval == GT_OPTION_PARSER_OK && !gt_str_array_size(gthsplitinfo->consensusfiles) && (gt_option_is_set(optgzip) || gt_option_is_set(optbzip2))) { gt_error_set(err, "to use compression, at least on input file has to be " "supplied"); oprval = GT_OPTION_PARSER_ERROR; } gt_option_parser_delete(op); return oprval; }