static GtOptionParser* gt_encseq_bitextract_option_parser_new(void *tool_arguments) { GtEncseqBitextractArguments *arguments = tool_arguments; GtOptionParser *op; GtOption *option; gt_assert(arguments); op = gt_option_parser_new("[option ...] [indexname]", "Extracts internal data from encoded sequences."); option = gt_option_new_bool("mirrored", "mirror sequence", &arguments->mirror, false); gt_option_parser_add_option(op, option); option = gt_option_new_ulong("stoppos", "output stop positions", &arguments->stoppos, GT_UNDEF_ULONG); gt_option_parser_add_option(op, option); option = gt_option_new_bool("specialranges", "output special ranges", &arguments->specialranges, false); gt_option_parser_add_option(op, option); option = gt_option_new_ulong("bitpos", "extract and display " "two bit encoding for position", &arguments->bitpos, GT_UNDEF_ULONG); gt_option_parser_add_option(op, option); gt_encseq_options_add_readmode_option(op, arguments->readmode); gt_option_parser_set_min_args(op, 1U); return op; }
static GtOptionParser* gt_encseq_decode_option_parser_new(void *tool_arguments) { GtOptionParser *op; GtOption *option, *optionsep, *optionseq, *optionseqrange, *optionmode; GtEncseqDecodeArguments *arguments = (GtEncseqDecodeArguments*) tool_arguments; static const char *modes[] = {"fasta", "concat", NULL}; /* init */ op = gt_option_parser_new("(sequence_file|indexname)", "Decode/extract encoded sequences."); /* encseq options */ arguments->eopts = gt_encseq_options_register_loading(op, NULL); gt_encseq_options_add_readmode_option(op, arguments->dir); /* -singlechars */ option = gt_option_new_bool("singlechars", "do not use a GtEncseqReader but access each " "sequence character separately", &arguments->singlechars, false); gt_option_is_extended_option(option); gt_option_parser_add_option(op, option); /* -seq */ optionseq = gt_option_new_uword("seq", "extract sequence identified by its number", &arguments->seq, GT_UNDEF_UWORD); gt_option_parser_add_option(op, optionseq); /* -seqrange */ optionseqrange = gt_option_new_range("seqrange", "extract multiple consecutive sequences", &arguments->seqrng, NULL); gt_option_parser_add_option(op, optionseqrange); gt_option_exclude(optionseqrange, optionseq); /* -output */ optionmode = gt_option_new_choice("output", "specify output format " "(choose from fasta|concat)", arguments->mode, modes[0], modes); gt_option_parser_add_option(op, optionmode); /* -range */ option = gt_option_new_range("range", "concatenated range to extract " "(implies '-output concat')", &arguments->rng, NULL); gt_option_parser_add_option(op, option); gt_option_imply(option, optionmode); /* -sepchar */ optionsep = gt_option_new_string("sepchar", "specify character to print as SEPARATOR", arguments->sepchar, "|"); gt_option_parser_add_option(op, optionsep); gt_option_imply(optionsep, optionmode); gt_option_parser_set_min_max_args(op, 1, 1); return op; }
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; }