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; }
int gt_encseq_decode_arguments_check(GT_UNUSED int rest_argc, void *tool_arguments, GtError* err) { GtEncseqDecodeArguments *args = (GtEncseqDecodeArguments*) tool_arguments; int had_err = 0; int rval; if (gt_str_length(args->dir) > 0) { rval = gt_readmode_parse(gt_str_get(args->dir), err); if (rval < 0) had_err = -1; else args->rm = (GtReadmode) rval; } if (!had_err && args->seqrng.start != GT_UNDEF_UWORD && args->seqrng.end != GT_UNDEF_UWORD && args->seq != GT_UNDEF_UWORD) { gt_error_set(err, "'-seq' and '-seqrange' cannot be used together"); had_err = -1; } if (!had_err && (args->seqrng.start != GT_UNDEF_UWORD || args->seqrng.end != GT_UNDEF_UWORD || args->seq != GT_UNDEF_UWORD) && strcmp(gt_str_get(args->mode), "fasta") != 0) { gt_error_set(err, "'-seq' and '-seqrange' can only be used with the " "'-output fasta' option"); had_err = -1; } if (!had_err && (args->rng.start != GT_UNDEF_UWORD || args->rng.end != GT_UNDEF_UWORD) && strcmp(gt_str_get(args->mode), "concat") != 0) { gt_error_set(err, "'-range' can only be used with the " "'-output concat' option"); had_err = -1; } return had_err; }
static int gt_encseq_bitextract_runner(GT_UNUSED int argc, const char **argv, GT_UNUSED int parsed_args, void *tool_arguments, GT_UNUSED GtError *err) { GtEncseqBitextractArguments *arguments = tool_arguments; GtEncseqLoader *el; GtEncseq *encseq; int had_err = 0; bool fwd, it1, GT_UNUSED it2; char buffer[BUFSIZ]; GtEndofTwobitencoding etbe; GtEncseqReader *esr; GtSpecialrangeiterator *sri; GtRange srng; GtReadmode rm; gt_error_check(err); gt_assert(arguments); el = gt_encseq_loader_new(); encseq = gt_encseq_loader_load(el, argv[parsed_args], err); if (!encseq) had_err = -1; if (!had_err && arguments->mirror) { had_err = gt_encseq_mirror(encseq, err); } if (!had_err) { rm = gt_readmode_parse(gt_str_get(arguments->readmode), NULL); fwd = GT_ISDIRREVERSE(rm) ? false : true; } if (!had_err && arguments->bitpos != GT_UNDEF_ULONG) { if (arguments->bitpos >= gt_encseq_total_length(encseq)) { gt_error_set(err, "position %lu exceeds encoded sequence length of %lu", arguments->bitpos, gt_encseq_total_length(encseq)); had_err = -1; } if (!had_err) { unsigned long ret; esr = gt_encseq_create_reader_with_readmode(encseq, rm, arguments->bitpos); ret = gt_encseq_extract2bitencwithtwobitencodingstoppos(&etbe, esr, encseq, rm, arguments->bitpos); gt_bitsequence_tostring(buffer, etbe.tbe); printf("Twobitencoding %s\n" "unitsnotspecial %u\n" "position %lu\n" "returnvalue %lu\n", buffer, etbe.unitsnotspecial, arguments->bitpos, ret); gt_encseq_reader_delete(esr); } } if (!had_err && arguments->stoppos != GT_UNDEF_ULONG) { if (arguments->stoppos >= gt_encseq_total_length(encseq)) { gt_error_set(err, "position %lu exceeds encoded sequence length of %lu", arguments->stoppos, gt_encseq_total_length(encseq)); had_err = -1; } if (!had_err) { esr = gt_encseq_create_reader_with_readmode(encseq, rm, 0); /* check stoppos stuff */ gt_encseq_reader_reinit_with_readmode(esr, encseq, rm, arguments->stoppos); printf("%lu: %lu\n", arguments->stoppos, gt_getnexttwobitencodingstoppos(fwd, esr)); gt_encseq_reader_delete(esr); } } if (!had_err && arguments->specialranges) { /* check specialrangeiterator stuff */ if (gt_encseq_has_specialranges(encseq)) { sri = gt_specialrangeiterator_new(encseq, fwd); while (true) { it1 = gt_specialrangeiterator_next(sri, &srng); if (it1) printf("%lu:%lu\n", srng.start, srng.end); else break; } gt_specialrangeiterator_delete(sri); } } gt_encseq_delete(encseq); gt_encseq_loader_delete(el); return had_err; }