Bug in new SILVA 144 taxmap file

Hello Q2 folks,

I was unable to find this reported on the forum anywhere, so I thought it would be good to make a quick post. I am working on creating a custom taxonomic classifier with the new SILVA 144 version (following this tutorial: Processing, filtering, and evaluating the SILVA database (and other reference sequence data) with RESCRIPt ), and I've found that one of the reference files (taxmap_slv_ssu_ref_nr_144.txt) has two taxa with blank values that cause taxonomy parsing to error. Here are the offending rows and NaN values:

MZ209196 3 1436 Bacteria;Pseudomonadati;Pseudomonadota;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;Leclercia-Silvania-Enterobacter--other; NaN 65389
MZ215963 2 1378 Bacteria;Bacillati;Actinomycetota;Actinomycetes;Actinomycetales--other;Actinomycetaceae--other;Scrofimicrobium; NaN 58063

And here is the specific error that you'll see in the parse-silva-taxonomy command:
Plugin error from rescript:
'float' object has no attribute 'strip'

Editing to change - don't just delete the rows, fill in the blank values with the corresponding taxon. You will get errors later if you just delete the rows like I did :slight_smile: Just thought that would be helpful for anyone looking to try out the new and improved SILVA!

Heather Deel

4 Likes

Hi @hdeel,

Thank you so much for making us aware of this! :folded_hands:

I can also confirm that your edits work. :raising_hands:

I've opened an issue here.

-Mike

2 Likes

Quick somewhat related message: SILVA just made their QIIME 2 classifiers available for version 144. So @hdeel, I think you could use those and avoid training your own if needed.

2 Likes

Thanks @gregcaporaso! I am working with some somewhat unconventional primers that don't exactly match the pretrained classifiers, so I wanted to create my own. Great to know that they're already released these, though!

2 Likes

I have a working draft PR of RESCRIPt that is able to handle SILVA 144. Everything appears to be working as expected. I just need to add some unit tests. Hopefully, I'll get around that within the next day or so.

2 Likes

Hello, may I add another observation here: it seems that SILVA 144 has now an additional taxonomic layer (kingdom) introduced:

see here SILVA: SILVA taxonomy

I have used the pretrained classifier from SILVA in the current project. A q2 taxa collapse --p-level 6 does now collapse at family level with v. 144 (L6 was the genus level in v. 138.2).

I assume that this change will impact only the classification artifact (the semicolon-separated strings of taxonomic annotation), right. And I should now take care about the meaning of the taxonomic levels. L6: family; L7: genus: and so on.

Do we have to expect issues with other qiime2 functionalities?

Best regards

1 Like

Yes @arwqiime, we are aware of this and made note of it here.

The --p-level is not meant to be tied to a specific rank. The level is expected to change depending on what collection of ranks you pull from a given database. In fact, you can use all ~19 ranks of SILVA (see qiime rescript get-silva-data --help), and here. We've just been defaulting to the "standard" :

  • domain phylum class order family genus

SILVA 144 now defaults to the following (at least for Bacteria and Archaea):

  • domain kingdom phylum class order family genus

For SILVA 144, if you install the current PR version I linked previously, you can modify --p-ranks to pull the new default ranks (which I think is what the SILVA folks built their classifiers on):

qiime rescript get-silva-data \
    --p-version 144 \
    --p-ranks domain kingdom phylum class order family genus \
    --output-dir silva-ref-144 \
    --verbose

You can also simply use the default, or explicitly modify the above by removing kingdom:

--p-ranks domain phylum class order family genus 

^^ this is the current default for RESCRIPt's get-silva-data.

-Mike

4 Likes