using new from Silva 144 classifiers with qiime2-amplicon-2025.10

I downloaded new classifiers from Silva 144 version. I used qiime2-amplicon-2025.10 because I wanted to see how much different the results were from a previous run when I got intoo a sequence of issues as soon as I started DADA2 denoising, which makes a quick test time consuming.

  1. First I got a version error when attempting to run feature-classifier classify-sklearn.
  2. To fix this I wanted to install rachis-qiime2-2026.7 that I did not use for my old data, and therefore I did not have it installed. That ended in another version conflict.
  3. Then I set conda config --set channel_priority flexible as indicated above, I wanted to clean conda and got other error messages. Likely this is because at the time I installed conda system wide in /opt/miniconda3 (to give access to more users, and it sucks, to say it mildly, it needs a lot of adaptations, over and over again).
  4. It is friday evening, I did not want to waste my weekend with troubleshooting, so I gave up.

I am an occasional user of Qiime2 and have no time to keep up with the high-frequency flow of method-breaking updates. Would an "LTS" version be an idea?

output:

Plugin error from feature-classifier:

The scikit-learn version (1.7.1) used to generate this artifact does not match the current version of scikit-learn installed (1.4.2). Please retrain your classifier for your current deployment to prevent data-corruption errors.

user@I251:/media/data/Amplicon/run144$ conda update conda
2 channel Terms of Service accepted
Retrieving notices: done

DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.
Use 'conda create' to convert the directory to a conda environment.
target directory: /opt/miniconda3/envs

user@I251:/media/data/Amplicon/run144$ conda env create 
--name rachis-qiime2-2026.7 
--file https://raw.githubusercontent.com/qiime2/distributions/refs/heads/dev/2026.7/qiime2/released/rachis-qiime2-linux-64-conda.yml
2 channel Terms of Service accepted
Retrieving notices: done
Channels:

conda-forge

bioconda

defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:

package deblur-1.1.1-pyhdfd78af_0 requires sortmerna 2.0, but none of the providers can be installed

Could not solve for environment specs
The following package could not be installed
└─ deblur =1.1.1 * is not installable because it requires
└─ sortmerna ==2.0 *, which conflicts with any installable versions previously reported.

user@I251:/media/data/Amplicon/run144$ conda config --set channel_priority flexible
user@I251:/media/data/Amplicon/run144$ conda clean --all
Will remove 208 (773.7 MB) tarball(s).
Proceed ([y]/n)? y

Will remove 1 index cache(s).
Proceed ([y]/n)? y

WARNING: cannot remove, file permissions: /opt/miniconda3/pkgs/cache
Will remove 93 (1.30 GB) package(s).
Proceed ([y]/n)? y

WARNING: cannot remove, file permissions: /opt/miniconda3/pkgs/libcurl-8.16.0-heebcbe5_0
WARNING: cannot remove, file permissions: /opt/miniconda3/pkgs/conda-25.11.1-py313h06a4308_0
WARNING: cannot remove, file permissions: /opt/miniconda3/pkgs/libunistring-1.3-hb25bd0a_0
WARNING: cannot remove, file permissions: /opt/miniconda3/pkgs/libidn2-2.3.8-hf80d704_0
There are no tempfile(s) to remove.
There are no logfile(s) to remove.

Hello @jack2017,

It sounds like you had a Computer Experiences (tm). I'm sorry to hear that. This happens to me too sometimes.

The fix here is to install different versions of Qiime2 into different conda environments.

This would let you install qiime2-amplicon-2025.10 and rachis-qiime2-2026.7 side by side. Then you could conda activate rachis-qiime2-2026.7 just for the plugins that need the new Silva 144 classifiers.

At this point, I would clear the messed up conda environment, and install the two Qiime2 versions side by side. Then this should work!


I would claim you asked for help, which is quite different than giving up!

And you got all the details in the post, even when frustrated, which is something I struggle with.

Let me know if the two conda envs works for you.

Hi @jack2017 - sorry for the frustration. I have a couple of thoughts to share on this.

First off, the reasons for the failure. Making the pre-trained classifiers work across ranges of scikit-learn versions is an issue that we haven't yet solved. That is the major cross-version compatibility issue. The pre-trained classifiers are simply a convenience that we offer however (though I'll understand if you don't agree with that categorization!). It's not a requirement to use them. We now illustrate how to build these as part of our newest entry point tutorials - see this version of the gut-to-soil tutorial[1] (and specifically the Taxonomic Annotation section). If you design your workflows to integrate classifier training rather than use our pre-trained classifiers, you should have very few (if any) cross-version compatibility issues.

The other compatibility issue that you are likely to run into is forward-compatibility. If you create an artifact with the most recent version of QIIME 2 (for example) we can not guarantee that that artifact will work with older versions of QIIME 2. We guarantee that the other way around will work: an artifact created with an older version of QIIME 2 will work with newer versions of QIIME 2. This is because the new versions can know what the old versions did, but the old versions can't know what the new versions will do. (The classifier issue that you're running into isn't an issue with QIIME 2 not understanding the format - it's an issue with one version of scikit-learn not wanting to use a model that was created with a different version of scikit-learn, in case something changed with respect to how the model should be interpreted.)

Regarding an LTS version: a couple of things. First, we try really hard to not change interfaces between releases, and we document when we are planning interface changes. If you were to compare different versions of our tutorials, for example, you'd find that most of the commands are remarkably stable across releases. That's in part because we understand that most of our users are in your situation: occasional users who don't want to have to re-learn the tool every time they come back to it. We have to balance this though with being able to make improvements, so the software continues to improve over time.

Our Docker containers are effectively our LTS releases. You can find these for all previous versions, and you can always install old Docker containers. For example, if you want to get a 2026.7 Docker container, and just stick with that for a couple of years, that should be totally fine[2] and you will continue to be able to install it with the commands presented here today. Most of the changes between QIIME 2 releases are new feature additions, and if things are already doing what you want you don't need to use them.

All of that said, sorry for the frustration! We get it, and we try hard to deliver tools that just work because we know that, at the end of the day, what our users care most about is getting their analysis done efficiently and correctly. I hope this information helps you achieve those things!

:fire::fire:


  1. This is the latest development version of this tutorial, and it includes using RESCIPt to pull reference sequences. This is the easiest path toward obtaining data for training your own classifier. Note that this tutorial is getting a big overhaul in this development cycle, so the content on this page will be getting updated over the next few weeks. The commands in the Taxonomic Annotation section will stay as-is, but the text is being expanded. ↩︎

  2. The only thing you'd want to know is if there was a bug fixed in subsequent version of QIIME 2 that could be impacting your results with the version that you're using. This has proven to be fairly rare over the history of QIIME 2, and we do have relatively new functionality in QIIME 2 View that can alert you to issues. We maintain a database of known bugs, and when QIIME 2 View parses your data provenance for viewing it alerts you to whether there are any known issues with the workflow that you ran. You can see an example of a warning popping up in this system by selecting the Provenance tab for this Visualization loaded with QIIME 2 View - look for the yellow box. A true LTS would have us going back and patching old releases to fix these bugs, but alas we are an academia-based open source project and have exactly $0.00 in funding for that type of work, and the infrastructure and personnel time to make that a reality would be expensive. If we were Microsoft (eg), different story. In this critical bug scenario, we would recommend upgrading to the newest version where it has been fixed. ↩︎

Thanks Colin and Greg,

I actually thought that different versions of Qiime2 were separated in conda and that one could run analyses only within the environment that is activated. Such functionality may actually be a thing to consider in development. But personally I am also happy with having only the newest Qiime2 installed, provided that it can indeed work with older result files (at least https://view.qiime2.org/ understands all).

I think that this will be fastest: uninstall the old Qiime2, then install the new version and run the analyses with the downloaded classifiers.

Alternatively I could indeed build the classifier with the old Qiime2 version and run the analyses. Advantage: freedom of primer choice :slight_smile: .

And thanks for your kind words to cheer up :smile:

Note: I downloaded these classifiers: SILVA: Files

This worked :smiley: