diff --git a/src/ecoprimer.c b/src/ecoprimer.c index 36cb480..0756a0c 100644 --- a/src/ecoprimer.c +++ b/src/ecoprimer.c @@ -106,13 +106,20 @@ void printapair(int32_t index,ppair_t pair, poptions_t options) else printf("%s",ecoUnhashWord(pair->p2->word,options->primer_length)); + printf("\t%c%c", "bG"[(int)pair->p1->good],"bG"[(int)pair->p2->good]); + + printf("\t%d", pair->inexample); printf("\t%d", pair->outexample); + printf("\t%4.3f", pair->yule); + + printf("\t%d", pair->intaxa); + printf("\t%d", pair->outtaxa); + printf("\t%4.3f", (float)pair->intaxa/options->intaxa); printf("\t%d", pair->mind); printf("\t%d", pair->maxd); - printf("\t%3.2f\t", (float)pair->sumd/pair->inexample); - printf("\t%4.3f\n", pair->yule); + printf("\t%3.2f\n", (float)pair->sumd/pair->inexample); } @@ -143,7 +150,10 @@ uint32_t filterandsortpairs(ppair_t* sortedpairs,uint32_t count, poptions_t opti if (q > options->sensitivity_quorum && qfp < options->false_positive_quorum) + { + (void)taxonomycoverage(sortedpairs[j],options); j++; + } } return j; @@ -154,7 +164,7 @@ void printpairs (ppairtree_t pairs, poptions_t options) ppair_t* sortedpairs; ppair_t* index; ppairlist_t pl; - int32_t i,j; + size_t i,j; int32_t count; fprintf(stderr,"Total pair count : %d\n",pairs->count); @@ -264,45 +274,6 @@ void setresulttaxonrank (ecotaxonomy_t *taxonomy, poptions_t options) } } /* to get db stats, totals of species, genus etc....*/ -int32_t getrankdbstats(pecodnadb_t seqdb, uint32_t seqdbsize, ecotaxonomy_t *taxonomy, - poptions_t options) -{ - uint32_t i; - uint32_t j; - uint32_t nameslots = 500; - uint32_t namesindex = 0; - int32_t *ranktaxonids = ECOMALLOC(nameslots * sizeof(int32_t), "Error in taxon rank allocation"); - int32_t taxid; - - ecotx_t *tmptaxon; - - for (i=0;itaxons->taxon[seqdb[i]->taxid].taxid; - tmptaxon = eco_findtaxonbytaxid(taxonomy, taxid); - if (tmptaxon) - tmptaxon = eco_findtaxonatrank(tmptaxon, options->taxonrankidx); - if (tmptaxon) - { - for (j = 0; j < namesindex; j++) - { - if (tmptaxon->taxid == ranktaxonids[j]) break; - } - if (j < namesindex) continue; /* name is already in list, so no need to add it*/ - - if (namesindex == nameslots) - { - nameslots += 500; - ranktaxonids = ECOREALLOC(ranktaxonids, nameslots * sizeof(int32_t), "Cannot allocate pair rank taxon table"); - } - ranktaxonids[namesindex] = tmptaxon->taxid; - namesindex++; - } - } - ECOFREE(ranktaxonids, "free rank taxon table"); - - return namesindex; -} #ifdef MASKEDCODE @@ -513,8 +484,10 @@ int main(int argc, char **argv) rankdbstats = getrankdbstats(seqdb, seqdbsize, taxonomy, &options); - fprintf(stderr,"Database is constituted of %5d examples\n",insamples); - fprintf(stderr," and %5d counterexamples\n",outsamples); + fprintf(stderr,"Database is constituted of %5d examples corresponding to %5d %s\n",insamples, + options.intaxa,options.taxonrank); + fprintf(stderr," and %5d counterexamples corresponding to %5d %s\n",outsamples, + options.outtaxa,options.taxonrank); fprintf(stderr,"Total distinct %s count %d\n",options.taxonrank, rankdbstats); fprintf(stderr,"\nIndexing words in sequences\n");