FUNGuildR icon indicating copy to clipboard operation
FUNGuildR copied to clipboard

Misassignment of selected taxa

Open igrowontrees opened this issue 1 year ago • 3 comments

Hello,

I have run FUNGuild on a taxonomy table extracted from a phyloseq object, using the following code:

Taxa_processed <- as.data.frame(tax_table(ps_final)) original_rownames <- rownames(Taxa_processed) Taxa_processed <- Taxa_processed %>% mutate(Taxonomy = paste0(Kingdom, ";", Phylum, ";", Class, ";", Order, ";", Family, ";", Genus, ";", Species)) fung <- get_funguild_db() Funguildresults <- FUNGuildR::funguild_assign(Taxa_processed, db = fung)

The output looked fine, and I have been working with the resulting data. However, I recently happened to notice that Elaphomyces had been classified as a pure saprotroph. I was surprised by this as I thought Elaphomyces was an unambiguously ectomycorrhizal genus, so I searched it directly on the FUNGuild website (http://www.funguild.org/query.php?qText=&qDB=funguild_db&qField=taxon) and sure enough, on there it came up as Ectomycorrhizal.

The citation for Elaphomyces given in the FUNGuildR results also differed from that given by the website. In R, the citation was: Sterkenburg E, et al. 2015. New Phytologist 207:1145-1158 ((https://doi.org/10.1111/nph.13426))

I had a quick look at this paper and did not find any reference to Elaphomyces. Interestingly, when I filtered my FUNGuildR classified data-frame to include only taxa with this citation, almost all of the taxa returned were classified as pure saprotrophs -- I tried searching a few of these directly on the FUNGuild website as I had done with Elaphomyces, and sure enough, the website gave different trophic modes to those which FUNGuildR had returned for these taxa. (Of course, I cannot be sure whether or not there are also other misassigned taxa without the Sterkenburg citation).

I think it must be an issue with my code or input data, because I looked up Elaphomyces directly in "fung" after running get_funguild_db and it is correctly classified as ectomycorrhizal there. I am, however, mystified by this and would appreciate any help.

Things I have tried, which did not fix the issue:

  • Re-installing FUNGuildR
  • Using "get_funguild_db" (initially I was assigning them directly, without first caching the database)
  • Using the add_funguild_info() function from MiscMetabar (instead of manually extracting the taxonomy table, running FUNGuild, and returning the taxonomy table to phyloseq)
  • Running FUNGuildR on a "test" dataframe with only a few fungal species, including Elaphomyces, taxonomy carefully copied from the UNITE database. Elaphomyces was still misclassified as a saprotroph.

Here are some examples from my taxonomy column, in case I have a mistake there which could be causing the problems:

From misassigned taxa: k__Fungi;p__Ascomycota;c__Eurotiomycetes;o__Eurotiales;f__Elaphomycetaceae;g__Elaphomyces;s__muricatus k__Fungi;p__Ascomycota;c__Sordariomycetes;o__Hypocreales;f__Hypocreaceae;g__Sepedonium;NA

From correctly classified taxa: k__Fungi;p__Basidiomycota;c__Agaricomycetes;o__Agaricales;f__Hydnangiaceae;g__Laccaria;NA k__Fungi;p__Basidiomycota;c__Agaricomycetes;o__Agaricales;f__Inocybaceae;g__Inocybe;s__napipes

If it was just Elaphomyces affected then I could manually fix it, but there are clearly other incorrectly assigned taxa too (I caught a few and don't know how many more exist) so now I do not trust my data...

Thank you :)

UPDATE: I have found a solution, but only by exporting my dataframe of taxa, classifying it with FUNGuild in Python, and then reimporting the FUNGuild-assigned version back into R. This way, Elaphomyces and the other taxa that were misassigned by FUNGuildR get the correct guild assignment. I used the same dataframes for each. Does this suggest that FUNGuildR is malfunctioning somehow, or was I just doing something wrong?

igrowontrees avatar Feb 14 '25 14:02 igrowontrees

Wow, thanks for this report and I'm sorry it's taken me so long to get to it. You are right, this is a bug in FUNGuildR which causes it to incorrectly prioritize information from different ranks; in particular preferring order-level guild annotations to genus-level annotations. A fix is incoming.

brendanf avatar Mar 20 '25 09:03 brendanf

This is fixed in the newly released v0.3.0. Thanks again for the report, this was important!

brendanf avatar Mar 20 '25 10:03 brendanf

Thanks for fixing it! Relieved to find that it was not just me doing something wrong :)

igrowontrees avatar Mar 20 '25 10:03 igrowontrees