diff --git a/src/ecoprimer.c b/src/ecoprimer.c index deb6127..5715ad8 100644 --- a/src/ecoprimer.c +++ b/src/ecoprimer.c @@ -458,7 +458,7 @@ void updateseqparams (pecodnadb_t seqdb, uint32_t seqdbsize, ecotaxonomy_t *taxo for (i=0;iisexample=isGoodTaxon(taxonomy,seqdb[i]->taxid,options); + seqdb[i]->isexample=isExampleTaxon(taxonomy,seqdb[i]->taxid,options); if (seqdb[i]->isexample) (*insamples)++; else diff --git a/src/libecoprimer/goodtaxon.c b/src/libecoprimer/goodtaxon.c index 898b533..68f940c 100644 --- a/src/libecoprimer/goodtaxon.c +++ b/src/libecoprimer/goodtaxon.c @@ -12,7 +12,7 @@ int isGoodTaxon(ecotaxonomy_t *taxonomy,int32_t taxon,poptions_t options) { int result; - result=( (options->r == 0) || (eco_is_taxid_included(taxonomy, + result=((options->r == 0) || (eco_is_taxid_included(taxonomy, options->restricted_taxid, options->r, taxonomy->taxons->taxon[taxon].taxid) @@ -34,6 +34,11 @@ int isExampleTaxon(ecotaxonomy_t *taxonomy,int32_t taxon,poptions_t options) options->restricted_taxid, options->r, taxonomy->taxons->taxon[taxon].taxid) + )) && + ((options->e == 0) || !(eco_is_taxid_included(taxonomy, + options->exception_taxid, + options->e, + taxonomy->taxons->taxon[taxon].taxid) )); return result; @@ -47,8 +52,12 @@ int isCounterExampleTaxon(ecotaxonomy_t *taxonomy,int32_t taxon,poptions_t optio result=((options->g != 0) && (eco_is_taxid_included(taxonomy, options->ignored_taxid, options->g, - taxonomy->taxons->taxon[taxon].taxid) - )); + taxonomy->taxons->taxon[taxon].taxid)) + ) || ((options->e != 0) && (eco_is_taxid_included(taxonomy, + options->exception_taxid, + options->e, + taxonomy->taxons->taxon[taxon].taxid)) + ); return result; diff --git a/src/libecoprimer/taxstats.c b/src/libecoprimer/taxstats.c index a751d7d..da7de6f 100644 --- a/src/libecoprimer/taxstats.c +++ b/src/libecoprimer/taxstats.c @@ -64,7 +64,7 @@ int32_t getrankdbstats(pecodnadb_t seqdb, uint32_t seqdbsize, ecotaxonomy_t *tax for (i=0;itaxons->taxon[seqdb[i]->taxid]); - seqdb[i]->isexample=isGoodTaxon(taxonomy,seqdb[i]->taxid,options); + seqdb[i]->isexample=isExampleTaxon(taxonomy,seqdb[i]->taxid,options); tmptaxon = eco_findtaxonatrank(taxon, options->taxonrankidx);