static int gt_readjoiner_assembly_build_contained_reads_list( GtReadjoinerAssemblyArguments *arguments, GtBitsequence **contained, GtError *err) { int had_err = 0; unsigned int i; GtUword nofreads, nofreads_i; GtStr *filename; filename = gt_str_clone(arguments->readset); gt_str_append_cstr(filename, ".0" GT_READJOINER_SUFFIX_CNTLIST); had_err = gt_cntlist_parse(gt_str_get(filename), true, contained, &nofreads, err); for (i = 1U; i < arguments->nspmfiles && had_err == 0; i++) { gt_str_reset(filename); gt_str_append_str(filename, arguments->readset); gt_str_append_char(filename, '.'); gt_str_append_uint(filename, i); gt_str_append_cstr(filename, GT_READJOINER_SUFFIX_CNTLIST); had_err = gt_cntlist_parse(gt_str_get(filename), false, contained, &nofreads_i, err); gt_assert(had_err || nofreads == nofreads_i); } gt_str_delete(filename); return had_err; }
static int gt_readjoiner_assembly_count_spm(const char *readset, bool eqlen, unsigned int minmatchlength, unsigned int nspmfiles, GtStrgraph *strgraph, GtBitsequence *contained, GtLogger *default_logger, GtError *err) { GtSpmprocSkipData skipdata; int had_err = 0; unsigned int i; GtStr *filename = gt_str_new(); gt_logger_log(default_logger, GT_READJOINER_ASSEMBLY_MSG_COUNTSPM); if (!eqlen) { skipdata.out.e.proc = gt_spmproc_strgraph_count; skipdata.to_skip = contained; skipdata.out.e.data = strgraph; } for (i = 0; i < nspmfiles; i++) { gt_str_append_cstr(filename, readset); gt_str_append_char(filename, '.'); gt_str_append_uint(filename, i); gt_str_append_cstr(filename, GT_READJOINER_SUFFIX_SPMLIST); had_err = gt_spmlist_parse(gt_str_get(filename), (GtUword)minmatchlength, eqlen ? gt_spmproc_strgraph_count : gt_spmproc_skip, eqlen ? (void*)strgraph : (void*)&skipdata, err); gt_str_reset(filename); } gt_str_delete(filename); return had_err; }
static void gff3_version_string(GtNodeVisitor *nv) { GtGFF3Visitor *gff3_visitor = gff3_visitor_cast(nv); gt_assert(gff3_visitor); if (!gff3_visitor->version_string_shown) { if (!gff3_visitor->outstr) { gt_file_xprintf(gff3_visitor->outfp, "%s %u\n", GT_GFF_VERSION_PREFIX, GT_GFF_VERSION); } else { gt_str_append_cstr(gff3_visitor->outstr, GT_GFF_VERSION_PREFIX); gt_str_append_cstr(gff3_visitor->outstr, " "); gt_str_append_uint(gff3_visitor->outstr, GT_GFF_VERSION); gt_str_append_char(gff3_visitor->outstr, '\n'); } gff3_visitor->version_string_shown = true; } }
/* 'static' function */ GtStrArray* gt_trans_table_get_scheme_descriptions() { GtUword i; GtTranslationScheme *scheme; GtStr *str; GtStrArray *sa = gt_str_array_new(); str = gt_str_new(); for (i = 1UL; i < (GtUword) GT_SIZEOFTRANSRANGE; i++) { if (transnum2index[i] == GT_UNDEFTRANSNUM) continue; scheme = schemetable + transnum2index[i]; gt_str_reset(str); gt_str_append_uint(str, scheme->identity); gt_str_append_cstr(str, ": "); gt_str_append_cstr(str, scheme->name); gt_str_array_add_cstr(sa, gt_str_get(str)); } gt_str_delete(str); return sa; }
GtNodeVisitor* gt_ltrdigest_pdom_visitor_new(GtPdomModelSet *model, double eval_cutoff, unsigned int chain_max_gap_length, GtPdomCutoff cutoff, GtRegionMapping *rmap, GtError *err) { GtNodeVisitor *nv; GtLTRdigestPdomVisitor *lv; GtStr *cmd; int had_err = 0, i, rval; gt_assert(model && rmap); rval = system("hmmscan -h > /dev/null"); if (rval == -1) { gt_error_set(err, "error executing system(hmmscan)"); return NULL; } #ifndef _WIN32 if (WEXITSTATUS(rval) != 0) { gt_error_set(err, "cannot find the hmmscan executable in PATH"); return NULL; } #else /* XXX */ gt_error_set(err, "hmmscan for Windows not implemented"); return NULL; #endif nv = gt_node_visitor_create(gt_ltrdigest_pdom_visitor_class()); lv = gt_ltrdigest_pdom_visitor_cast(nv); lv->eval_cutoff = eval_cutoff; lv->cutoff = cutoff; lv->chain_max_gap_length = chain_max_gap_length; lv->rmap = rmap; lv->output_all_chains = false; lv->tag = gt_str_new_cstr("GenomeTools"); lv->root_type = gt_symbol(gt_ft_LTR_retrotransposon); for (i = 0; i < 3; i++) { lv->fwd[i] = gt_str_new(); lv->rev[i] = gt_str_new(); } if (!had_err) { cmd = gt_str_new_cstr("hmmscan --cpu "); gt_str_append_uint(cmd, gt_jobs); gt_str_append_cstr(cmd, " "); switch (cutoff) { case GT_PHMM_CUTOFF_GA: gt_str_append_cstr(cmd, "--cut_ga"); break; case GT_PHMM_CUTOFF_TC: gt_str_append_cstr(cmd, "--cut_tc"); break; case GT_PHMM_CUTOFF_NONE: gt_str_append_cstr(cmd, "--domE "); gt_str_append_double(cmd, eval_cutoff, 50); break; } gt_str_append_cstr(cmd, " "); gt_str_append_cstr(cmd, gt_pdom_model_set_get_filename(model)); gt_str_append_cstr(cmd, " -"); lv->cmdline = cmd; lv->args = gt_cstr_split(gt_str_get(lv->cmdline), ' '); gt_log_log("HMMER cmdline: %s", gt_str_get(cmd)); } return nv; }