Ejemplo n.º 1
0
int gth_process_intermediate_files(GthInput *input, GtStrArray *consensusfiles,
                                   GthSAProcessFunc saprocessfunc, void *data,
                                   GthShowVerbose showverbose, GtError *err)
{
  GtUword i;
  GtFile *fp, *genfile;
  int had_err = 0;

  gt_error_check(err);

  /* process all files */
  if (gt_str_array_size(consensusfiles)) {
    for (i = 0; !had_err && i < gt_str_array_size(consensusfiles); i++) {
      /* open file */
      fp = gt_file_xopen(gt_str_array_get(consensusfiles, i), "r");

      if (showverbose) {
        show_parse_file_status(showverbose, i,
                               gt_str_array_size(consensusfiles),
                               gt_str_array_get(consensusfiles, i));
      }

      had_err = gt_parse_intermediate_output(input, saprocessfunc, data,
                                          gt_str_array_get(consensusfiles, i),
                                          fp, err);

      /* close file */
      gt_file_delete(fp);
    }
  }
  else {
    genfile = gt_file_new_from_fileptr(stdin);
    had_err = gt_parse_intermediate_output(input, saprocessfunc, data, "stdin",
                                           genfile, err);
    gt_file_delete_without_handle(genfile);
  }

  return had_err;
}
static void hmmsearch_create_fine_fas(GtStr *fine_fasta_filename,
                                      GtRBTree *seqnums,
                                      GtCondenseq *ces) {
  GtRBTreeIter *tree_iter;
  GtUword *seqnum;
  GtFile *gt_outfp;
  FILE *outfp;

  tree_iter = gt_rbtree_iter_new_from_first(seqnums);
  outfp = gt_xtmpfp_generic(fine_fasta_filename, TMPFP_USETEMPLATE);
  gt_outfp = gt_file_new_from_fileptr(outfp);
  while ((seqnum = gt_rbtree_iter_next(tree_iter)) != NULL) {
    const char *seq, *desc;
    GtUword seqlen, desclen;
    gt_log_log("seqnum: " GT_WU, *seqnum);
    seq = gt_condenseq_extract_decoded(ces, &seqlen, *seqnum);
    desc = gt_condenseq_description(ces, &desclen, *seqnum);
    gt_fasta_show_entry_nt(desc, desclen, seq, seqlen,
                           GT_FASTA_DEFAULT_WIDTH, gt_outfp);
  }
  gt_file_delete(gt_outfp);
  gt_rbtree_iter_delete(tree_iter);
}