Ejemplo n.º 1
0
static int gt_index_options_check_set_create_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);
  /* readmode needs to be initialized to fwd */
  oi->readmode = (GtReadmode) 0;
  if (!had_err)
  {
    if (gt_option_is_set(oi->optionalgbounds))
    {
      if (gt_parse_algbounds(&oi->sfxstrategy,oi->algbounds,err) != 0)
      {
        had_err = -1;
      }
    } else
    {
      oi->sfxstrategy.maxinsertionsort = MAXINSERTIONSORTDEFAULT;
      oi->sfxstrategy.maxbltriesort = MAXBLTRIESORTDEFAULT;
      oi->sfxstrategy.maxcountingsort = MAXCOUNTINGSORTDEFAULT;
    }
  }
  if (!had_err && oi->sfxstrategy.kmerswithencseqreader &&
      oi->sfxstrategy.spmopt_minlength > 0)
  {
    gt_error_set(err,"options -spmopt  and -kmerswithencseqreader are "
                     "not compatible");
    had_err = -1;
  }
  if (!had_err
        && oi->optionmemlimit != NULL
        && gt_option_is_set(oi->optionmemlimit))
  {
    had_err = gt_option_parse_spacespec(&oi->maximumspace,"memlimit",
                                        oi->memlimit,err);
  }
  if (!had_err)
  {
    if (oi->sfxstrategy.maxinsertionsort > oi->sfxstrategy.maxbltriesort)
    {
      gt_error_set(err,"first argument of option -algbds must not be larger "
                       "than second argument");
      had_err = -1;
    } else
    {
      if (oi->sfxstrategy.maxbltriesort > oi->sfxstrategy.maxcountingsort)
      {
        gt_error_set(err,"second argument of option -algbds must not be larger "
                         "than third argument");
        had_err = -1;
      }
    }
  }
  return had_err;
}
Ejemplo n.º 2
0
static int gt_readjoiner_assembly_arguments_check(GT_UNUSED int rest_argc,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerAssemblyArguments *arguments = tool_arguments;
  int had_err = 0;
  gt_error_check(err);
  if (had_err == 0 && gt_option_is_set(arguments->refoptionbuffersize))
    if (gt_option_parse_spacespec(&arguments->buffersize,
          "buffersize", arguments->buffersizearg, err) != 0)
      had_err = -1;
  return had_err;
}
Ejemplo n.º 3
0
static int gt_seed_extend_arguments_check(int rest_argc, void *tool_arguments,
                                          GtError *err)
{
  GtSeedExtendArguments *arguments = tool_arguments;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(arguments != NULL);

  /* -t parameter as alias for maxfreq := t - 1 */
  if (arguments->dbs_suppress < GT_UWORD_MAX) {
    arguments->dbs_maxfreq = arguments->dbs_suppress - 1;
  }

  /* no alignment output */
  if (!gt_option_is_set(arguments->se_option_withali)) {
    arguments->se_alignmentwidth = 0;
  }

  /* parse memlimit argument */
  arguments->dbs_memlimit = GT_UWORD_MAX;
  if (strcmp(gt_str_get(arguments->dbs_memlimit_str), "") != 0) {
    had_err = gt_option_parse_spacespec(&arguments->dbs_memlimit,
                                        "memlimit",
                                        arguments->dbs_memlimit_str,
                                        err);
    if (!had_err && arguments->dbs_memlimit == 0) {
      gt_error_set(err,
                   "argument to option \"-memlimit\" must be at least 1MB");
      had_err = -1;
    }
  }

  /* minimum maxfreq value for 1 input file */
  if (!had_err && arguments->dbs_maxfreq == 1 &&
      strcmp(gt_str_get(arguments->dbs_queryname), "") == 0) {
    if (arguments->dbs_suppress == GT_UWORD_MAX) {
      gt_error_set(err, "argument to option \"-maxfreq\" must be >= 2 to "
                   "find matching k-mers");
    } else {
      gt_error_set(err, "argument to option \"-t\" must be >= 3 to find "
                   "matching k-mers");
    }
    had_err = -1;
  }

  /* no extra arguments */
  if (!had_err && rest_argc > 0) {
    gt_error_set(err, "too many arguments (-help shows correct usage)");
    had_err = -1;
  }
  return had_err;
}
Ejemplo n.º 4
0
static int gt_encseq2spm_arguments_check(int rest_argc,
        void *tool_arguments,
        GtError *err)
{
    GtEncseq2spmArguments *arguments = tool_arguments;
    bool haserr = false;

    gt_error_check(err);
    if (rest_argc != 0)
    {
        gt_error_set(err,"unnecessary arguments");
        haserr = true;
    }
    if (!haserr && gt_str_length(arguments->spmspec) > 0)
    {
        const char *spmspecstring = gt_str_get(arguments->spmspec);
        if (strcmp(spmspecstring,"show") == 0)
        {
            arguments->outputspms = true;
        } else
        {
            if (strcmp(spmspecstring,"count") == 0)
            {
                arguments->countspms = true;
            } else
            {
                gt_error_set(err,"illegal argument \"%s\" to option -spm",
                             spmspecstring);
                haserr = true;
            }
        }
    }
    if (!haserr && gt_option_is_set(arguments->refoptionmemlimit))
    {
        if (gt_option_parse_spacespec(&arguments->maximumspace,
                                      "memlimit",
                                      arguments->memlimitarg,
                                      err) != 0)
        {
            haserr = true;
        }
        if (!haserr && !gt_ma_bookkeeping_enabled()) {
            gt_error_set(err, "option '-memlimit' requires "
                         "GT_MEM_BOOKKEEPING=on");
            haserr = true;
        }
    }
    if (!haserr && gt_option_is_set(arguments->refoptionphase2extra))
    {
        if (gt_option_parse_spacespec(&arguments->phase2extra,
                                      "phase2extra",
                                      arguments->phase2extraarg,
                                      err) != 0)
        {
            haserr = true;
        }
    }
#ifdef GT_THREADS_ENABLED
    if (!haserr) {
        if (gt_jobs > 1 && gt_ma_bookkeeping_enabled()) {
            gt_error_set(err, "gt option '-j' and GT_MEM_BOOKKEEPING=on "
                         "are incompatible");
            haserr = true;
        }
    }
#endif
    return haserr ? -1 : 0;
}