[Preview] QIIME 2 2020.2 development changelog

QIIME 2 2020.2 has been released!
Please see the official changelog for more details.

Original content of post

:exclamation: Important :exclamation:

The following is an early developer preview of the changes expected in 2020.2

This post is a live-document which will be updated throughout our development cycle. Any links will in this topic will be broken until the release is officially published. When we are ready for release, we’ll copy this changelog and create a new post in the Announcements category.

Important Developer Information

Dates (please keep an :eye: on this post, these :calendar: might change):

  • PRs must be submitted by: February 10, 2020
  • PRs must be merged by: February 17, 2020
  • Repo Freeze and Package Building: February 20, 2020
  • Release Day: February 21, 2020

Developer Project Board: https://github.com/orgs/qiime2/projects/18

:exclamation: BREAKING CHANGES

  • q2-alignment
    • mafft: 0 is no longer an acceptable value for n_threads. Please specify auto instead.
  • q2-phylogeny
    • fasttree: 0 is no longer an acceptable value for n_threads. Please specify auto instead.
    • iqtree: 0 is no longer an acceptable value for n_cores. Please specify auto instead.
    • iqtree_ultrafast_bootstrap: 0 is no longer an acceptable value for n_cores. Please specify auto instead.
    • align_to_tree_mafft_fasttree: 0 is no longer an acceptable value for n_threads. Please specify auto instead.
  • q2-gneiss
    • balance_taxonomy: this visualizer has been removed.
    • ols_regression: this visualizer has been removed.
    • lme_regression: this visualizer has been removed.

Please update scripts, workflows, etc. as appropriate. Stuck? Reach out here on the forum for help. Want to test this prior to the next release of QIIME 2? Check on the Dev Env instructions here:



  • QIIME 2 Framework
    • @David-Rod added a new check to better handle misconfigured timezones in a QIIME 2 environment. If QIIME 2 and tzlocal are unable to determine the machine’s current timezone (or, if it determines that there are multiple conflicting definitions), QIIME 2 will fall back to using UTC as the timezone when stamping out provenance. :timer_clock:
    • @thermokarst added a new type-checking utility is_metadata_column_type. :skull_and_crossbones:
    • @ebolyen & @thermokarst revised the way that plugins are registered on an instance of PluginManager - it is now possible to register plugins on-demand, which can be particularly helpful for testing and development. :corn:
    • @thermokarst & @ebolyen added a new Usage API, allowing plugin developers to register interface-agnostic usage examples as part of their plugins. We are still working on interface support for this, so while the API exists, it is of limited utility at the moment - keep your eyes peeled for a full launch later this year! :moon_cake:
    • @ebolyen fixed a minor issue with parse_primitive which caused incorrect coercion on some TypeMaps. :bug:
  • docs
    • @fedarko fixed a typo in the Overview Tutorial! :bug:
    • The gneiss tutorial has been updated to reflect the breaking changes noted above.
    • @thermokarst added a tutorial demonstrating common utility functions in QIIME 2. :wrench:
  • q2view
    • @ebolyen remove some logic that was limiting certain requests from happening, these checks were intended as part of a broader plan of work that has yet to be tackled :football:
  • q2cwl
    • @David-Rod corrected a bug that prevented q2cwl from handling primitive union types. q2cwl can once again render all QIIME 2 actions as CWL tools. :hammer_and_wrench: (Note: this QIIME 2 interface is not part of the standard distribution, and must be installed separately at this time.)
  • q2-emperor
    • @mortonjt added a --p-invert flag to the biplot visualizer which allows you to swap arrows and points (useful for exploring microbe-metabolite data).
    • Updated the dependencies to the latest release of Emperor (1.0.0 :penguin: :partying_face: ) .
    • Fixed a bug that would fail to produce the SVG legend for a plot.
    • Fixed a bug that caused the table of categories to only update when the window was resized.
    • Fixed a bug that would create duplicated axes when changing visible dimensions.
  • q2-sample-classifier
    • @jwchen fixed a graphical glitch which would cause the legend of the confusion matrices to be repeatedly plotted when executed multiple times in the Artifact API.
    • @ChrisKeefe cleaned up the heatmap visualizer to better handle a variety of matrix sizes! :maté:
    • @Oddant1 optimized and modularized unit tests.
    • @Oddant1 added a type check to change the data type of the confusion_matrix prediction values to match the data type of the truth values.
  • q2-demux
    • @EmFord (GH) added an additional suggestion (modifying the new golay correction parameter) to the error that occurs if emp-single/emp-paired are unable to map any reads.
  • q2-feature-classifier
    • @David-Rod created a much nicer error message for when classify-sklearn runs out of memory (a common occurrence).
    • @Oddant1 added a new extract_reads parameter: read_orientation! This allows the user to specify the orientation of the primers relative to the sequences. :arrow_backward: :arrow_forward:
    • @Nicholas_Bokulich added maxhits, maxrejects, output_no_hits, and weak_id parameters to classify-consensus-vsearch and classify_hybrid_vsearch_sklearn :magnet:
  • q2-phylogeny
    • @SoilRotifer added the pipelines align-to-tree-mafft-iqtree and align-to-tree-mafft-raxml . These are similar to align-to-tree-mafft-fasttree, but uses IQ-TREE / RAxML for phylogenetic inference.:roller_coaster: :evergreen_tree:
      • The --parttree option was only added align-to-tree-mafft-fasttree and the align-to-tree-mafft-raxml pipelines. This option addresses the case for which alignments of over 1 million reads are requested. :woman_climbing:
    • :exclamation: BREAKING :exclamation: @thermokarst changed the allowed values for the several method method’s n_threads and n_cores parameters from Int % Range(0, None) to Int % Range(1, None) | Str % Choices(['auto']). This disallows the use of the value 0 for specifying automatic number of threads/cores, instead, users should use the value auto instead. :handbag:
  • q2-alignment
    • :exclamation: BREAKING :exclamation: @thermokarst changed the allowed values for the mafft method’s n_threads parameter from Int % Range(0, None) to Int % Range(1, None) | Str % Choices(['auto']). This disallows the use of the value 0 for specifying automatic number of threads, instead, users should use the value auto instead. :stuffed_flatbread:
  • q2-dada2
    • @Oddant1 fixed up the description text in the denoise_paired method to reflect the new minimum overlap of 12 nts, verus the older 20 nt requirement. This change isn’t new, we just forgot to update the help text! :brain:
  • q2-deblur
    • @thermokarst fixed a regression :eye: that caused q2-deblur to explode on certain sample ID schemas. :exploding_head:
  • q2-types
    • @David-Rod fixed a bug that prevented the CasavaOneEightLanelessPerSampleDirFmt format from being used. :fortune_cookie:
    • @Oddant1 Improved error message when invalid characters are found in DNAFASTAFormat
  • q2-longitudinal
    • @Nicholas_Bokulich fixed a bug in the pairwise-differences action that prevented the user from successfully generating a t-value when there is no between-group variance. :handshake:
  • q2-composition
    • @thermokarst fixed a minor bug that caused the ancom visualization’s mouseover to break. :mouse:
  • q2-gneiss
    • :exclamation: BREAKING :exclamation: @thermokarst removed three deprecated visualizers: balance_taxonomy, ols_regression, and lme_regression.
  • q2-quality-control
    • @gwarmstrong GH added a new exclude_seqs parameter for use with vsearch: left_justify! This allows the user to reject matches if the pairwise alignment starts with gaps.
  • qiime2.org
    • @David-Rod added a link to our Community Code of Conduct! :squid:
  • Misc.

Happy QIIME-ing! :sun_with_face:

1 Like

Hey all, just a brief note on our release schedule for 2020, we are planning on four releases, corresponding with the following months of 2020:

  1. February
  2. May
  3. August
  4. November

These are shifted one month off from our “usual” release schedule, but we think that they will prove to be more convenient for developer schedules :crossed_fingers:. As always, this is subject to change - keep an eye on the forum for more details in the coming weeks and months.


Just a friendly reminder - today is the deadline for PR submission for consideration in the 2020.2 release cycle. Thanks!

1 Like

We are working hard on getting this release out, but our timeline is slipping a bit — we are tentatively aiming for a release some time next week, please stay tuned!

1 Like