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 Just thought that would be helpful for anyone looking to try out the new and improved SILVA!
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!
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.
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?
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.