The QIIME 2 2021.11 release is now available! Thanks to everyone involved for their hard work!
As a reminder, our next planned QIIME 2 release is scheduled for February, 2022 (QIIME 2 2022.2), but please stay tuned for updates.
Check out the QIIME 2 2021.11 docs for details on installing the latest QIIME 2 release, as well as tutorials and other resources. Get in touch on the QIIME 2 Forum if you run into any issues!
Virtual machine builds will be available sometime next week - watch this topic thread for an update!
Here’s the highlights of the release:
QIIME 2 Framework
We are really excited to formally announce the release of the new QIIME 2 Usage API! This is a set of tools targeting developers and documentation writers , that will allow them to write interface-agnostic "usage examples" - snippets of code that different QIIME 2 interfaces can turn into meaningful interface-specific examples! Speaking of examples, here is a simple one, this demonstrates how to merge two feature tables using q2-feature-table:
qiime feature-table merge \ --i-tables feature-table1.qza feature-table2.qza \ --o-merged-table merged-table.qza
import qiime2.plugins.feature_table.actions as feature_table_actions merged_table, = feature_table_actions.merge( tables=[feature_table1, feature_table2], )
The Usage API code that generated both of the interface-specific examples above is here:
# ft1_factory and ft2_factory are functions defined elsewhere that # create data for this example. def feature_table_merge_example(use): feature_table1 = use.init_artifact('feature_table1', ft1_factory) feature_table2 = use.init_artifact('feature_table2', ft2_factory) merged_table, = use.action( use.UsageAction('feature_table', 'merge'), use.UsageInputs(tables=[feature_table1, feature_table2]), use.UsageOutputNames(merged_table='merged_table'), )
So with one code snippet, plugin developers and tutorial authors can now write examples that users will be able to review and use in the interface of their choosing!
We ported the Moving Pictures Tutorial to this new system, here is a quick preview of what users can expect to see:
If you're interested in learning more, we have brand new developer documents. Also, here is the Moving Pictures Tutorial source, as well as an example of how to write and register Usage examples within an existing QIIME 2 Plugin.
- A brand new Usage API enabled version of the Moving Pictures tutorial is now available as a beta preview - in future release we plan to update the remaining tutorials as well!
- @ebolyen adjusted the terrible dark blue text to a nicer light blue color to reduce the incidence of eye bleeds amongst users of the default dark terminal color scheme.
@Keegan-Evans and @lizgehret added
assert-result-data, and some waffles to the dev tools. At-least two of those things anyways.
- q2cli now has full support for Usage API - you can see Usage examples for any actions that have any (which admittedly isn't many, but more soon!) by running
--helpon your favorite command. An example:
qiime feature-table merge --help ... Examples: # ### example: basic qiime feature-table merge \ --i-tables feature-table1.qza feature-table2.qza \ --o-merged-table merged-table.qza # ### example: three tables qiime feature-table merge \ --i-tables feature-table1.qza feature-table2.qza feature-table3.qza \ --p-overlap-method sum \ --o-merged-table merged-table.qza
- You can also save example data (
--example-data) to run these commands with!
Now you have data that can be used to "test out" the examples that are shown in the help text!
qiime feature-table merge --example-data example_data Saved FeatureTable[Frequency] to: example_data/basic/feature-table1.qza Saved FeatureTable[Frequency] to: example_data/basic/feature-table2.qza Saved FeatureTable[Frequency] to: example_data/three-tables/feature-table1.qza Saved FeatureTable[Frequency] to: example_data/three-tables/feature-table2.qza Saved FeatureTable[Frequency] to: example_data/three-tables/feature-table3.qza
- @wasade added a test for barcode trimming with the reverse complement and moved the trimming logic to occur prior to the reverse complement.