QIIME 2 2025.4 is now available!
Hello QIIME 2 community! 
We have a BIG release for you, almost in time for the end of April 2025! You can think of this is as our way of zero indexing the scheduled release date.
There's a lot of new functionality and other improvements packed into this release, but we also have lots of big changes to our websites and documentation. This is all detailed below for your reading pleasure!
You can also now find a news page (and a corresponding RSS feed) where we plan to start sharing new content more regularly beginning this release cycle. We'll make an Announcement on the QIIME 2 Forum when this goes live with additional details on how you can stay up-to-date.
Important Announcements 
q2-vsearch Software Bug in Prior Releases 
Affected Releases
The 2023.9, 2024.2, and 2024.5 shotgun/metagenome environments.
Description
A bug was discovered in the vsearch dependency of q2-vsearch. The bug manifests as possibly incorrect numbers of chimeric and non-chimeric sequence classifications from the vsearch uchime-denovo action. The magnitude of error is small--see here for more detailed information.
Breaking Changes 
- The
--p-versionparameter in theget-unite-dataaction now uses release dates, rather than version number, to specify which version of the UNITE database to fetch. For example, the latest version of the UNITE database can be specified via--p-version '2025-02-19', rather than--p-version '10.0'. This enables the ability to fetch multiple releases that are listed under the same version number.
- The
q2-annotate (formerly q2-moshpit)
- @Vinzent_Risch Renamed inputs/outputs in the following actions:
classify_kraken2,collate_kraken2_reports,collate_kraken2_outputs,estimate_bracken,kraken2_to_mag_features,fetch_eggnog_db,fetch_diamond_db,search_orthologs_diamond,search_orthologs_hmmer,map_eggnog,collate_busco_result,evaluate_busco,predict_genes_prodigal,fetch_busco_db, andestimate_abundance. These changes ensure consistency between different actions
- @misialq updated the
ReferenceDB[BuscoDB]semantic type toReferenceDB[BUSCO]and removed an unnecessary level of directory nesting within the underlying directory format. BUSCO databases fetched with previous versions of q2-annotate (formerly q2-moshpit) will not work with theevaluate-buscoaction from this release on. They can be either re-fetched using the updatedfetch-busco-dbaction or re-imported into a new artifact using the new semantic type.
- @Vinzent_Risch Renamed inputs/outputs in the following actions:
2025.4 Release Highlights 
qiime2.org Updates ![]()
@ebolyen completely redesigned the QIIME 2 homepage - it was due for an update! Among the new features are a navigation bar that persists across the homepage, the (all new!) QIIME 2 Library, the Forum, and QIIME 2 View. We hope this will help you better discover and navigate all of the content and resources that we're building for the community. ![]()
QIIME 2 Library Updates ![]()
The QIIME 2 Library has also been entirely remade and redesigned by @ebolyen! The QIIME 2 Library will now house installation instructions for the Distributions (see the Quickstart page) and plugins, books and tutorials, videos, workshop listings, and data resources (such as taxonomy classifiers).
The following plugins have been added to the library, in addition to plugins from the teams in the Caporaso and Bokulich labs:
Plugin developers: learn how to add your plugins to the new library here.
QIIME 2 Data Resources are now accessible through the QIIME 2 Library. Additions in this cycle include:
- @lizgehret added the 2024.09 Greengenes2 classifiers (thanks to @wasade and team for the new release!)

QIIME 2 View Updates ![]()
@Oddant1 added a new Metadata tab (example) to QIIME 2 View that lists all of the Metadata contained within your provenance and provides information about why this metadata may be important.
@Oddant1 added the ability to search provenance for specific keys and (key, value) pairs on the provenance tab (example) of QIIME 2 View. This can help find Actions, Results, or other content in complex provenance graphs.
@Oddant1 adapted QIIME 2 View to make it easier to host from other locations (e.g., from a server behind your firewall, or out of a Docker container).
qiime tools viewnow uses this on your machine, allowing you to interact with your visualizations offline exactly as you could through QIIME 2 View. See the q2cli section for more details.
Documentation Updates ![]()
Microbiome marker gene analysis with QIIME 2:
- @gregcaporaso led the transition from the "old docs" to the new QIIME 2 Amplicon Distribution documentation, now located at: https://amplicon-docs.qiime2.org/. Changes made in this transition include:
- Re-organization under the Diataxis framework
- Lots of content from the old docs was updated
- The Plugin Index was completely rewritten, which can now be automatically generated for other plugins and distributions (example here)
- An all new end-to-end analysis tutorial was added, the Gut-to-Soil Microbiome Axis Tutorial
MOSHPIT tutorials:
- @misialq introduced many updates to the MOSHPIT (formerly QIIME 2 metagenome distribution) documentation, which is now available at https://moshpit.qiime2.org. If you haven't started using the MOSHPIT Distribution for metagenomic analysis yet, we would love for you to try it out and provide any feedback that you might have!
At this stage, we now have distribution-specific documentation that you can use to learn how to use the current distributions, including Microbiome marker gene analysis with QIIME 2 and MOSHPIT tutorials. Additionally, we have plugin-specific documentation for plugins that are not included in a distribution, including genome-sampler and q2-fmt. We have dataset focused tutorials that may ultimately cross distributions (e.g., to illustrate how to integrate metagenome and marker gene data), including the gut-to-soil microbiome axis tutorial. And finally, we have framework-level documentation for power users (Using QIIME 2) and developers (Developing with QIIME 2). You can find all of this linked from the Books section of the QIIME 2 Library.
TL;DR: There are a lot of docs out there - if you're looking for something and can't find it, reach out to us on the Forum! ![]()
- the MOSHPIT distribution got a significant upgrade:
- q2-moshpit plugin was renamed to q2-annotate to make a clear distinction between the plugin and the distribution itself
- some actions and action inputs/outputs were renamed to ensure consistency across the distribution (please see "Plugin Updates" section below for details)
- many new actions were added and the inputs to the existing actions were, in many cases, expanded by allowing additional input types
- a new tutorial page was published
@lizgehret added support for semantic versioning of our Archive Formats (i.e., the format used to write
.qzaand.qzvfiles).
Beginning with this release, our Archive Formats will now be versioned in {major}.{minor}format (e.g.,7.0) where previous there was no minor version (e.g.,6). This will allow us to make minor changes that are ensured to be backwards compatible within their major version (i.e. versions 7.0 -> 7.n will all be backwards compatible within 7.*, while versions 8.0+ won't be).@lizgehret added the new v7.0 Archive Format
. Additions in this new format include:- Artifacts and Visualizations can now include annotations!
We imagine these being used to store information like licenses for how data can be used, or other notes (e.g., information such as a reference database version, which wouldn't be stored in data provenance if its obtained before using QIIME 2).- Annotations of type
Notecan now be added to any QIIME 2 Result (of version v7.0+). - Notes can contain up to 10MB of utf-8 parsable text, and just require a unique name per Result that they are attached to.
- The following annotation-specific actions have been added to the Python 3 API:
Result.add_annotation(Note())Result.remove_annotation(name)Result.iter_annotations()Result.get_annotation(name)
- The following annotation-specific commands have been added under
toolsto the cli:qiime tools annotation-createqiime tools annotation-removeqiime tools annotation-listqiime tools annotation-fetch- Note: The q2cli commands associated with annotations are still considered to be in a beta release, so please reach out if you encounter any unexpected errors or you have any suggestions/feature requests! These may change slightly between versions.
- Annotations of type
- An all-new
conda-env.yamlfile that contains all dependencies within the environment where the Artifact or Visualization was created from.
- Calculated checksums have been updated from md5 to sha512

- Total file size calculation for all files within the
datadirectory can be found under the top-level (and provenance-level)metadata.yaml
- Artifacts and Visualizations can now include annotations!
Plugin Updates ![]()
@lizgehret completed the following maintenance/modernization work for all plugins within QIIME 2 Distributions:
- Transitioned all plugins' Python setup files from
setup.pytopyproject.toml
This update simplifies and modernizes a plugin's setup, making it easier to read and maintain. - Replaced all uses of the deprecated
pkg_resourcespackage actions with the supportedimportlib-*equivalent actions.
These updates align with the broader Python packaging ecosystem's push for modernization, ensuring compatibility with evolving tools and workflows ![]()
q2-annotate (formerly q2-moshpit)
- @cherman2 fixed a
where kraken2-to-featuresaction would fail if an infra-clade was the terminal taxon
- @colinvwood updated how we handle the Kraken 2 report directory formats

- @lizgehret did a lot of great maintenance work

- DorielaGrabocka updated the
search-orthologs-diamondaction to useprodigalfor gene prediction
- DorielaGrabocka added a new
GenomeData[Loci]output to thesearch-orthologs-*actions which contains the GFF files with coordinates of genes identified by eggNOG mapper
- @Vinzent_Risch introduced the following updates:
- Added the possibility to use BUSCO metrics during MAG dereplication by the
dereplicate-magsaction
- Expanded the BUSCO directory format to allow additional lineage files included in the newer database versions

- Updated the
predict-genes-prodigalaction to allow gene prediction onSampleData[Contigs]
- Added a new
filter-kraken2-resultsaction to enable filtering of Kraken 2 reports and outputs
- Expanded the
get-feature-lengthsaction to allow length calculation from additional inputs (i.e.:FeatureData[Sequence],SampleData[MAGs],SampleData[Contigs])
- Renamed a bunch of inputs/outputs to ensure consistency between different actions

- Fixed a
where the evaluate-buscoaction would mysteriously fail if no lineage dataset was provided. - Added
completenessandcontaminationmetrics to the BUSCO results
- Added the possibility to use BUSCO metrics during MAG dereplication by the
- @SoilRotifer added the ability to fetch the GTDB Kraken2 database

- @misialq introduced the following changes:
- Disabled the
estimate-brackenaction on macOS due to the underlying Bracken version not being available through conda
- Added the
nt_coreKraken 2 database to the list of downloadable databases available through thebuild-kraken-dbaction
- Added
SampleData[Contigs]to the list of allowed inputs to theestimate-abundanceaction
- Renamed a couple of actions
:estimate-mag-abundance
estimate-abundanceeggnog-annotate
map-eggnogeggnog-diamond-search
search-orthologs-diamondeggnog-hmmer-search
search-orthologs-hmmer
- Fixed a
in the kraken2-to-mag-featureswhich caused the action to fail if the Kraken 2 reports for an unclassified MAG had an "unexpected" number of additional lines. - Added functionality allowing fetching BUSCO databases for specific lineages, rather than entire domains

- Disabled the
- @cherman2 fixed a
- @misialq introduced the following changes:
- Updated supported
spadesversion to 4.0
- Introduced a new
filter-contigsaction to allow filtering samples based on the contig content
- Removed the
metaoption from theassemble-megahitaction presets
- Updated supported
- @lizgehret did a lot of great maintenance work

- @Vinzent_Risch renamed a bunch of inputs/outputs to ensure consistency between different actions

- @misialq introduced the following changes:
- @salias made an improvement to
da-barplotsuch that consistent coloring is used for enriched and depleted features, regardless of whether any enriched features are presented
The colors used here are blue (for enriched features) and orange (for depleted features). Previously, if no features were enriched, depleted features would be presented in blue. This is inconvenient when comparing these plots side-by-side. - @colinvwood added the
ancombc2action which wraps the ANCOM-BC2 R software, a newer iteration of the ANCOM-BC software. Anancombc2-visualizerthat plots the log-fold change data returned byancombc2and allows interactive filtering was also added. Learn how to use it here, in the new gut-to-soil microbiome axis tutorial!
- @salias made an improvement to
- @colinvwood added parameters that allow unconditional removal of bases from the beginning and ends of reads to the
trim-singleandtrim-pairedactions
- @colinvwood added parameters that allow unconditional removal of bases from the beginning and ends of reads to the
- @Vinzent_Risch added the ability to pass a random seed to
rarefy, supporting improved reproducibility.
- @Vinzent_Risch added a new action,
normalize, which supports normalization ofFeatureTable[Frequency]artifacts with common RNA-seq methods (usingRNAnormunder the hood).
- @Vinzent_Risch added the ability to pass a random seed to
- @jordenrabasco improved the input validation, error messages, and help text for the
decontam-identify-batchesmethod
- @jordenrabasco added a deprecation flag for
decontam-remove
- @jordenrabasco improved the input validation, error messages, and help text for the
- @colinvwood updated the
q-scoreaction to now process and return paired end reads
- @colinvwood modified the
q-scoreaction to allow parallel execution, making the action feasible for use with larger datasets, such as metagenomic ones
- @colinvwood updated the
- @misialq fixed a
where the MANIFEST file in SampleData[MAGs]artifacts generated by thecollate-sample-data-magsaction would contain only entries from the last artifact which was being collated (i.e. the manifests were being overwritten). Instead, the entries will now be appended to the MANIFEST found in the first artifact
- @cherman2 added a distance-matrix to pd.Series transformer
This should make exploration of qiime2 distance-matrices in python easier 
- DorielaGrabocka added the
collate_lociaction. This action collates loci from multiple loci directories into a single LociDirectoryFormat and returns a single GenomeData[Loci] artifact
- @misialq fixed a
- @lizgehret made the following improvements:
- Minor cosmetic improvements to all plots

- Added an
includeZerocheckbox for scatterplot, lineplot, and boxplot
- Added a scroll bar for resizing circular marks in scatterplot, lineplot, and boxplot

- Added a color palette drop-down for scatterplot, lineplot, and boxplot

- Modified the
y_measureto be an optional input in lineplot
- Minor cosmetic improvements to all plots
- @lizgehret made the following improvements:
- @colinbrislawn added support for newer versions of the
uchime_denovoalgorithm to thevsearch uchime-denovoaction, namelyuchime2_denovoanduchime3_denovo. According to the vsearch manual these options are ideal for denoised amplicons, as pointed out by @SoilRotifer. - @colinvwood fixed a bug in the
dereplicate-sequencesaction that prevented any successful usage of the--p-min-unique-sizeparameter - @michoug added the
qmin,qminout,qmaxandqmaxoutparameters tomerge-pairs, enabling users to override these values when merging paired end reads with vsearch.
- @colinbrislawn added support for newer versions of the
@SoilRotifer added the options
--p-keep-primer-locationand--p-no-keep-primer-locationto thetrim-alignmentaction. These flags will toggle the option to retain the alignment positions of the primer binding location. Note: the primers themselves will always be removed, but the alignment positions where the primers align can be optionally retained or removed from the alignment.@SoilRotifer added the action
get-pr2-data. This action allows users to fetch recent versions of the PR2 database for use in taxonomy assignment.@SoilRotifer updated the action
get-gtdb-data. Can now download the most recent GTDB reference files, via--p-version '226.0', for use in taxonomy assignment. Also, added the parameter--p-url-typein which the user can toggle downloading data from the GTDBPrimaryorMirrorsite.@SoilRotifer the
--p-versionparameter ofget-unite-datanow uses release dates, rather than version number, to specify which version of the UNITE database to fetch. For example, the latest version of the UNITE database can be specified via--p-version '2025-02-19', rather than--p-version '10.0'. This allows the ability to fetch multiple releases that are listed under the same version number.
This is a breaking change!
@Nicholas_Bokulich added the action
orient-reads. This action is similar to the existingorient-seqsaction, except that it can handle the following types:SampleData[PairedEndSequencesWithQuality], andSampleData[JoinedSequencesWithQuality]. This is will help in cases where sequenced amplicons are in a mixed orientation. That is, forward and reverse reads are present in both the R1 and R2 read files. This action also requires that a reference file, i.e.FeatureData[Sequence], be provided to help with re-orienting the reads.
Docker Container Updates ![]()
We now provide a Docker container that includes a Jupyter Lab server and some other niceties, which we use for teaching workshops. Learn how to use it to teach your own events here.
Coming up next! 
Interface Changes in QIIME 2 2025.10 
Plugin-Specific Changes 
- @jordenrabasco will integrate some changes into the Decontam functionality. These changes include:
decontam-removeaction will be removed in favor of existing qiime actionsqiime feature-table filter-featuresandqiime feature-table filter-seqs.decontam-score-vizwill now generate a report with feature-id, Determination, P-score, Abundance, and prevalence, regardless if therepresentative-sequencesobject is passed into the action or not (blastable sequence link will still require therepresentative-sequencesobject).
- @jordenrabasco will integrate some changes into the Decontam functionality. These changes include:
- The plugin's name will change to
q2-ancombc, to reflect that all actions in the plugin are related toancombc2,ancombc, andancom. - The
ancombc2-visualizeraction will be removed, in favor ofda-barplot. da-barplotwill be updated to produce the visualization now produced byancombc2-visualizer, and it will be updated to accept results ofancombcandancombc2as inputs.- Some other action(s) and parameter name(s) may be changed.
- The plugin's name will change to
Distribution-Specific Changes 
- MOSHPIT Distribution
- Plugins within the MOSHPIT Distribution (formerly the Metagenome Distribution) will have some interface changes throughout.
- NOTE: While
moshpitis still in beta release, you can expect some breaking changes between releases so we can quickly adapt to user needs. Be sure to check out the moshpit pre-print if you haven't already!
- NOTE: While
- Plugins within the MOSHPIT Distribution (formerly the Metagenome Distribution) will have some interface changes throughout.
Python Versioning Changes 
- Target for 2025.10: Python 3.10 or 3.11, with a final decision posted on our mid-cycle dependency update announcement
- Target for 2026.4: Python 3.12
Thank you! 
As always, thanks to our amazing community of developers, forum moderators, and users! We couldn't do it without you! If you're a QIIME 2 user and want to get more involved in the community, check out some content that @gregcaporaso put together on the topic in Using QIIME 2.
Have fun, and see you on the QIIME 2 Forum! ![]()
![]()