# QIIME 2 2019.4 is now available!

**URL:** <https://forum.qiime2.org/t/qiime-2-2019-4-is-now-available/9513>\
**Category:** Announcements\
**Created:** [May 3, 2019, 6:28pm UTC](https://forum.qiime2.org/t/qiime-2-2019-4-is-now-available/9513 "2019-05-03T18:28:14Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![q2d2](https://forum.qiime2.org/user_avatar/forum.qiime2.org/q2d2/32/613_2.png) [@q2d2](https://forum.qiime2.org/u/q2d2)\
**Post date:** [May 3, 2019, 6:28pm UTC](https://forum.qiime2.org/t/qiime-2-2019-4-is-now-available/9513/1 "2019-05-03T18:28:14Z")

</div>

The QIIME 2 2019.4 release is now available! Thanks to everyone involved for their hard work!

As a reminder, our next planned QIIME 2 release is scheduled for late July 2019 (QIIME 2 2019.7), but please stay tuned. Other proposed releases this year include:

- QIIME 2 2019.7
- QIIME 2 2019.10

Check out the [QIIME 2 2019.4 docs](https://docs.qiime2.org/2019.4/) for details on installing the latest QIIME 2 release, as well as tutorials and other resources. Get in touch on the QIIME 2 forum 2 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](https://github.com/qiime2/qiime2)
  - @ChrisKeefe fixed a bug caused by invalid primitive arguments 3️⃣🙅‍♂️. Expanded type mismatch error messages to better describe various invalid-input situations. 🗣
  - @ChrisKeefe fixed some pretty confusing language in the `SemanticType` docstring.
  - [`@Sleightly (GH)`](https://github.com/Sleightly/) has added a new SDK utility named `build_graph` to `qiime2.sdk.actiongraph`. This will generate a directed NetworkX graph of QIIME 2 plugin actions and types. The graph is bipartite, with types on one conceptual side, and actions on the other. Edges between them indicate parameters.
  - The implementation of QIIME 2 types has been reworked by @ebolyen 🥋 . Some minor changes include:
    - `Properties(['a', 'b'])` =\> `Properties('a', 'b')`
    - `Range(X, None)` can be optionally written as `Start(X)` (it is converted to a `Range`)
    - `Range(None, X)` can be optionally written as `End(X)` (also converted to `Range`)
    - `Choices({'a', 'b'})` =\> `Choices('a', 'b')` (this means order is now retained as well)

  - Unions of primitive types are now possible, thanks to @ebolyen! This means you can create a plugin with a parameter such as: `Int % Start(0) | Str % Choices("ALL", "SOME", "NONE")`
  - Intersection (`&`) of types is now possible 🛑 however most intersections will result in a "bottom" type - thanks for that, @ebolyen! (This operator is primarily for implementing internal type solving algorithms.)
    - real intesection: `Start(0) & End(10)` =\> `Range(0, 10)`
    - contradiction: `FeatureTable[Frequency] & Phylogeny[Rooted]` =\> `UnionExp([])` (an empty union is the smallest, emptiest, type in QIIME 2)

  - The framework now supports different output types based on the received input type 🍇 . This feature is called `TypeMap` (and it has a sibling `TypeMatch`, and was created by @ebolyen):
    - This allows expressions such as:

```python
T, P, R = TypeMap({
    (TypeA, Bool % Choices(True)): OutputA,
    (TypeB, Bool % Choices(False)): OutputB
})

```

    - For a direct example of TypeMatch, see implementation for [feature-table filter-samples](https://github.com/qiime2/q2-feature-table/blob/163e838ea29c3416fb5c14f1ef1cc2f2fc81b921/q2_feature_table/plugin_setup.py#L239).

  - A utility to parse a type from the result of a `to_ast()` call now exists: `qiime2.sdk.util.type_from_ast`. This and `parse_type` are now significantly faster as loading plugins are no longer required to reconstruct the type. `type_from_ast` is capable of completely reconstructing a `TypeMap`.
  - @thermokarst added a new utility to `qiime2.sdk.util` named `parse_primitive` which takes on the role of `<sometype>.decode(val)`, however it can handle collection types of varying style.
  - Other type utilities exposed in `qiime2.sdk.util` include: `is_semantic_type`, `is_primitive_type`, `is_metadata_type`, `is_visualization_type`, and `interrogate_collection_type`.

- [Library](https://library.qiime2.org)
  - @thermokarst fixed a bug that prevented admins from editing plugins (due to an over-specified database rule).

- [docs](https://docs.qiime2.org/2019.4)
  - @Nicholas_Bokulich fixed a typo in one of the overview tutorial images.
  - @Nicholas_Bokulich added an example using `q2-sample-classifier`'s new `heatmap` pipeline to the `q2-sample-classifier` tutorial. 📑

- [dev-docs](https://dev.qiime2.org/latest/)
  - @ChrisKeefe busted out his editor's red pencil on the dev docs.
  - @cduvallet updated the plugin development tutorial to reflect the latest versions of the packages used in the document! 🗃

- [q2cli](https://docs.qiime2.org/2019.4/interfaces/q2cli/)
  - @epruesse cleaned up the `--version` output when looking at a plugin's details! 🌸
  - @ebolyen put many hours of blood (💉), sweat (💦), and tears (😢) into cleaning up the q2cli experience, changes include:
    - `--cmd-config` has been removed (it was underdocumented and added a lot of complexity). We encourage users of QIIME 2 who need programmatic control to use the Python API instead which is significantly more flexible.
    - `--py-packages` has been removed from `qiime info` (it was already broken). Use `conda list` instead. 🐉
    - `--output-dir` and `--o-<name>` options now ensure the path is _writable_ before executing the command. ✍
    - `--output-dir` no longer creates the directory before running the command. This means no more `rm -rf`'ing because there was a typo in a different parameter. 📂
    - The underlying parser has been significantly improved. The following is now possible:
      - Missing arguments will now be recognized instead of swallowing the next option (very confusing for beginners). 😮
      - `--help` is now "hyper-greedy", if it appears anywhere in the command, the help text will be shown (no matter how many errors exist otherwise).
      - Options that are repeatable may also now receive an arbitrary number of arguments:

```bash
--p-something 1 --p-something 2 --p-something 3

```

can now also be written as:

```bash
--p-something 1 2 3 # the original form is still supported

```

This means that shell-expansion (like `*.qza`) will become more useful:

```bash
qiime feature-table merge --i-tables dada2-outputs/*.qza ...

```

    - The CLI cache is now optimistically 🦋 stored in your conda environment. If q2cli is not running in a conda environment, then it will fall back to `XDG_CONFIG_HOME` as before. This means that switching between multiple QIIME 2 installations will not constantly refresh the cache.
    - `difflib` is now used to recommend options when a typo is made in a command. 🤷‍♀️
    - Error handling has been made significantly more consistent between plugin commands and builtins (such as `tools`, `dev`, and `info`):
    - Errors are now enumerated. Parsing errors such as malformed commands will be re-parsed multiple times to collect as many errors as q2cli can (these are an incomplete list, and will be printed as `(1/5?)` instead of `(1/5)`) 💯
    - In order to support TypeMap, the `--help` text has a new layout system which includes the QIIME 2 type whenever relevant (this is especially helpful for ranged primitives). TypeMaps are indicated with a superscript number which will match between inputs and outputs. (In the future, a table may be a better way to represent this).
    - Help text is now colorized to improve readability 🌈 :

https:/uploads/qiime21/original/2X/c/c83b5c662898d9addfee797017d1e087171042b8.webm

- [q2-diversity](https://docs.qiime2.org/2019.4/plugins/available/diversity/)
  - @thermokarst fixed a bug 🐛 in the `adonis` visualizer that prevented some metadata headers from working as expected.
  - @Nicholas_Bokulich fixed a bug in the `adonis` visualizer that caused an error if metadata values contained single quotes (e.g., apostrophes). 🦋
  - @Nicholas_Bokulich fixed a typo in the `adonis` visualizer help text. ⚗

- [q2-longitudinal](https://docs.qiime2.org/2019.4/plugins/available/longitudinal/)
  - @Nicholas_Bokulich added a new `anova` visualizer to the plugin! 🎉
  - The heatmap generated by `maturity-index` can now be controlled to limit the number of important features displayed. (Thanks @Nicholas_Bokulich!) 🚒

- [q2-deblur](https://docs.qiime2.org/2019.4/plugins/available/deblur/)
  - @thermokarst added a new `left_trim_len` parameter to the denoising methods of this plugin! 🚵‍♂️

- [q2-demux](https://docs.qiime2.org/2019.4/plugins/available/demux/)
  - Fixed the per-sample sequence count table layout (that thing sure was bothering @ChrisKeefe!) 🍥
  - @wasade brought Golay barcode correction to `emp-single` and `emp-paired` - the future is _now_! ⚾

- [q2-cutadapt](https://docs.qiime2.org/2019.4/plugins/available/cutadapt/)
  - @thermokarst added a new `minimum_length` parameter to `trim_single` and `trim_paired`! ✂
  - The ability to `discard_untrimmed` reads has been added to `trim_single` and `trim_paired` by @thermokarst. 🍇
  - @thermokarst fixed a bug related to too many files being opened when demuxing datasets with many samples in it. Check out the new `batch_size` parameter on `demux-paired` and `demux-single` to control how many samples are demultiplexed at a time! 🥦
  - @ChrisKeefe & @thermokarst added support for dual-index demultiplexing! This functionality is enabled by preparing a second column in your Metadata file that contains the barcodes for the reverse reads. Check out [the docs](https://docs.qiime2.org/2019.4/plugins/available/cutadapt/demux-paired/) for more info!

- [q2-feature-classifier](https://docs.qiime2.org/2019.4/plugins/available/feature-classifier/)
  - @BenKaehler & @Nicholas_Bokulich updated the default value for the `reads_per_batch` parameter, in an effort to reduce memory usage! 🧠

- [q2-sample-classifier](https://docs.qiime2.org/2019.4/plugins/available/sample-classifier/)
  - @Nicholas_Bokulich added a `heatmap` pipeline to display the (normalized) abundances of predictive features per sample or per group, using `FeatureData[Importance]` scores output by supervised classifiers and regressors. 🧯
  - @Nicholas_Bokulich updated the citation information to include the report describing this plugin in the Journal of Open Source Software.

- [q2-feature-table](https://docs.qiime2.org/2019.4/plugins/available/feature-table/)
  - [`@gwarmstrong (GH)`](https://github.com/gwarmstrong) added a feature to allow disabling of clustering on both the sample and feature axes when creating a `heatmap`! 🔥
  - `merge-taxa` now supports multi-column `FeatureData[Taxonomy]` artifacts, e.g., to preserve classification confidence scores in the merged output. (thanks @Nicholas_Bokulich) 👹
  - @turanoo overhauled the interactive even-sampling depth visualization --- it is now built with [vega](https://vega.github.io/)! There were several improvements/bugfixes related:
    - Sample count summaries for each metadata group are now displayed in the plot
    - SVG and PNG exports are enabled for the plot
    - The visualization can be customized in the interactive vega editor
    - A bug related to scrolling in the visualization's tabs was fixed

  - As a result of TypeMap, it is now possible to filter out samples (`feature-table filter-samples`) of feature tables with the variant types of: `RelativeFrequency`, `PresenceAbsence`, and `Composition` (`Frequency` is of course still supported). The output type will match the input type provided.

- [q2-quality-control](https://docs.qiime2.org/2019.4/plugins/available/quality-control/)
  - @Nicholas_Bokulich fixed a bug in `evaluate-composition` that caused linear regression R values of zero to be reported when observed and expected feature tables contain only a single observation at any taxonomic level. (the correct answer is no R value should be reported). 🐛

- [q2-dada2](https://docs.qiime2.org/2019.4/plugins/available/dada2/)
  - @benjjneb updated this plugin to use DADA2 1.10 - users can expect to see speed improvements from 2x to 20x! 🏎 🔥 🍠! Check out the [DADA2 docs](https://benjjneb.github.io/dada2/) for more details on this version of DADA2.

- [q2-emperor](https://docs.qiime2.org/2019.4/plugins/available/emperor/)
  - This plugin now uses the latest version of emperor (`1.0.0-beta.19`)
  - Miscellaneous bug fixes: 🐛
    - Fixes a bug where re-centering the camera wouldn't re-center the view.
    - Fixes a bug where two dimensional plots would fail to load.
    - Fixes a bug where sample metadata would fail to load if only sample identifiers were included.

  - Experimental support for exporting 2D [vega plots](https://vega.github.io/vega/) has been added by @thermokarst ! This is currently only available for a subset of the [available plot types](https://docs.qiime2.org/2019.4/plugins/available/emperor/plot/), and can be accessed through the menu:  
 ![image](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/2X/d/d26bad33adacce4729b6272d7210c6f049f07f39.png)  
Any customization to the 3D plot should be inherited in the vega plot. For example, here is a customized 3D plot:  
 ![image](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/2X/f/f2748bbb42e39670a82141fbce97771578edb0ef.png)  
And here is the [2D vega version](https://vega.github.io/editor/#/url/vega/N4KABGBEAkDODGALApgWwIaQFxUQFzwAdYsB6UgN2QHN0A6agSz0QFcAjOxge1IRQyUa6SgFY6AK1jcAdpAA04KIXQATVYxnVsYUYoiR26eAGtqAJ26sZqnZADEAM2cuFSyPFmPG2nKAgG6AAejLA6wJAANujsyJEAwtyR3OZ29gAMmVkKUHjMkciJyak4DlnZAL76AZB5eAXhHkkpaeWZkBVKVe51DaUAoqiEyJbmYAAKiQCCbgaq6HiYOADaShD+AQYy6KjIdruL84uzm1AU6JGsyGEra6cbpzUAyjuEBQCSACJ2ADIAjE8-ulRCdHgYAELocyeVTIJ7IACOVxk8D2pSmAHEACoY+IYqY4vFY0FgyA-TQmEbjcyMXbmeFI5AotFQbG4+KY+IAWXZuIx2KmM2qYKg4O4qgAnk9mCzINRWHgSY9IABNZBQuwAJkyAE46OkladIFzZCw7ABmfWGzaQT7oCV2P4AditwtJTw4EmQ8EVpVgnu9eAAtH9rTUAErIQgpPDIVRTGR5dg8PLwACqsHQ1FlADluGGDHaJbBpcz+kFhjTdomnotzL6oH8ACzpV13ZWfa7wGmEPKyOz+9hen0hhgKuja9I6oPmkNOyDtgLdEUPd2vD7fUr-QEtguiqEwuGI5GouwE-kc3FY+JYoWLm3kmSU8zU2kjBkn2Vs+KX7m8vECneIoQuKUoynY8qKm6ypqhqpSTgAHG2wFQCaiaII6rYGtBRpFlqSHYfezwBj6A4kcGmp7pAkbRvWcYJkmKaMOmmbZnYaphDhNpFiWmiouWlZvjWdYNpAWFUZ2CA9n2ch+uRQaamOeATpkCEhukCkIQuIrLmCq7Ki8Qwbr8ALalpXE1JC0LikejLMnYN74vit54niVGPs+r50h+TKnqU36-jyP58oBVFipK0qxhBCpUbBJRQJOeqEShxqmhhpR-MhwG2vaWriRZBgekOgZkcVI6UQVUA0TG9GJowybcKmGZZrm+aVTlxalvxFYjEJeC1lCokIU2WUiraXbSTwslQIOw4UUpKlTiGCkGkRumPPpRqGW8yBfCZTyaqI87tVZh4+fZpTBVMjmYue7kUlSVbvsevlfoSgX-vyt5Adl4VgVFpSQbF6rxZAiWjaSaFmqUlrJdleEZS6cNjUVc2lXNClUdVdHxnVDVNaxrUSfavFlj1T3CYNjothDHYTYwvZTejgYKQtiUznO2lgut9xEYV667ZuUDbpqCGhidB42edflQD+17XmyBLxPdT6PW+9IvRdrLvZyQWuV9gphaBkWykD7VxXlU600aUPpVAI3I6SCONg7VGoyVcllRRWNRjVuOMY1zHNWxpR5sTnV8cgAm9dW-UiY6ABsBESfTjP9p7GOKZBi3Tk2IZNlzjw85sm02ttxlbgCR1hZLsLS7K12Nze564irnlPRrdky5AAW659oUncb4GAzF5sg5bSVUbbjrW9xuXwflfNQO7pEZyz4tL9Rvs4wx9VMSxLV2GH7U8V1Ufk31A31nYw2zzUkndgzMnMyOmXZ+zfwrYXpzFwEpfPALPalcnhOgTjXayddNbd2ui5NkOJsRtzVt5KBb12R92CgBb6RsIrDygGbTeFsF5W0dsqae8E76Fnno2JGbtyIv2DBvFK2NYz+z3oHA+IcoDH03qfSO0cKZxyphlP4ikSG4VTs-Ner82a6gUpzNaFl-78yMoLfa5lN6nSligs8V58TN2xMrdqHkkHPS7qgn86D9YDw0UPAGeDR4EPHkQ5O7UyGNkXilZ2YMXGbxXqJWa68fa0RYbvfGQdCbsWuOHUm3VBKxyvqJDx8MJFMykQwmR6Q1JAk0t-TYv91i+MAULMkmpASiBBBLCBtlPxnjxOeOpFjEEvg7vXOwvdcR6xClgweOC7FRGQI4PAYAVCRFQMDOCCVdQUNQmlGeYi54OgXtMyAfj6EhiCX7UJ+9g5ExPiTM+-DL7x1KLfeZ98UnpxmvJTKBRBlBhGagHOy1tS5KXIowpKigHC1Kc6CpGja7VNejo5u14OR1KaV5UxNT-I6w6f3bpNjemyluUMh54zQbgzOQYNxYNlleOdMs1ZaT1ntWYbVAOBND6hzajw-ZfCL7xOOY2EReKLnTUgAE6RKL7kXEeezTU8idLvJSuXVRW5SnagLpUs62j0SEk5NeTExIjEPWaerVpMK0FwowQbH6Y0-omzsCi4ZvL0UT2WTi2G4dHQ0PakSq5XsSWbzJawsJHDdm0ojmTOJTJBHXwyjTLFUAH6TUuRy65dBuUPKebOZ0ryID5LAEo5eRTfgSs1BVf5VSNWy2uorDkOJlWb2MWq5BZi2mwr-Dq6xKUDW4P6YMk1oyzVEMnq42ZpRXZ7MWS7QldDiWMOyi6rZ7CdlHxpZ4ul3qY6+oSYnHxni2VrJuQM4M0b2Z52bPGsAibk0rNTeKg6u5pVaPLZdAkStcRKqLSlEtkLO7Qu1lqqtViEW1tsci1dTaxljwmWDVSFqO3uLxVQ7xfavZrMzUw7eIS8bbIiaUDi0SDkMtnUysSrKpJP1SQ6zOkbV08tGYtLJGlRbbt3R8naXySlPHNFOcBMqz2y2-ASW8iqIUtNlU+ix2rX2Gx6f9T9ja0W-oxVMoNqV0JzOtUsiT9rw2Oqg0OmD5K2GUs4ZAbhk6vWxJnZTf1UBTkpyw2ndlnL5pRt5U8z+LyFFET3aK6jPxSnmmrieyBTHIDNzzZedjKrValqhUCzVPGX1dP44iwTRqv0iccX+zFU8gOQCtd2m14G0bEqU2NYdcHR0Ia4RO+GU7dMCLnQGpJY0Q3YbDeZ1mlmiPs1jfOOzK5KMV2+bRhCWXSSaI84+rzirzwwI5Bx9VXGe6Vs6ZgiL76kXReE6a0T5qJM4q7Z66m6WPa4ZZt15UOWKXhKpQV5D9KfX6dEn8JOmHH6mcg-hu567ZGboLi1vSbWxXC3NAdHUUqs2Mf62CvRmIrx6tJHezjnn2lhem6D5Uda+k0moPgb9LbJnEMS1JjKIGe3-s26vbbr8Nk71y+pj12mYnnzO36oaa3F0mckQT9JiP8CEb5bImzq0hX2fe05r75o-jmgY6e-rSqDF5rZKNst-WodTd1dgqLpRmeosW3FsT6P22Y4StjtLcn+2M6ddB4Jqm3VjupSd6dpX0N-BZRJqrt2B10CV6zp5Aq42vY2jz4pPw+dOnUbWgFObICXqVoW-kkugtawm8+2XNbfofrsErlHS3nGAc15AIE2v4ILuyvJ2ru2jT7bU4djTSHu0U8OYyoRUAKtOyXZlx3PgWePcyepHJ7veYioPcLJsgIRFC768F1kRIXJN1h0acHY3IeTfhTNuPc3FeN+V825PaO22b0tZn6heP-HyXzzaQvJv8uacK5V4rlO9PU+pjXum9OcMKbw075v04mvkeFTnrvZIe8C+On94Xg+e6CiORsY3iGLFqqr3qB4y4z5j42jw6yiJ6xYpSEKr6p7Qz2yb7p6045567347ZE6wYHburjrm4lZHJV7p5Xa251766KSP5WYbr5yv7c6d6fJe494JyC7uaAqR4gFshOS3gYjh4Pr-5QHVpvpz4K5QAIEq5IFOIoErZJaZS26gbajb6Qb4HG7wZHbH4kHn6W7kFGYnzUG4HlQN5I5rr0Hs5fzt4lye6-CiCAjpC-b+7Zrja+Zi78jXRCGQHT5iGz76rx6lB4CyDyh7Ar7-qZKoF2zp7X64QqHZ4ow4G1aDrZYqaupaEl5RJl4oZU5lbV7XahpmYRrBFaBXDEat5kY2F-x2FbgOF-DlL97cHQLywCEwKtz+btyT7S6+F8YwGWSBG5AhFXCo4RFr4pQ4pKEyaTJqEDoaHpF5baFaZFY6Z6FkEGaQCGE8LGHJF0AlGhHWbWFc6tYsFUZe51FOjOG-QB5uG3QFqEgIIdEmLCGR6iG9Hy6GpBFDFhGq7LYY5oG4rKE44Eq64QazGkppEjqk7EHZGnYX55Hp427GY3YM4mHpJ7FlH8qCrcxv4owf4-AOHaicG-4D48HORXo8Z9EGAT5S4iE9HhaUmigDG1BfEjEJYa7-EpbraIwzH64pGkgH4ZFk7LHl6obnZX4FHVZFGOqZTonIAxpYlFw4lrisH2EHQZqNGB76K3EtHeHjavH0nvH1qymsniZ-HRFYGn5AkWnuhJHXJzGQnF5CmWkim5FW6UFImFHLq7FfFPLPZMHHHv4qm1FHoSa9ZNGyiOR6KKoCG6lT7R7QGGl9LGnhGIRRGYQYGiw8momYzglG7zFQmIZZGeoulwnoaxHcTbG77emlFymIQVFaRVEFInHtZkgJwHShnXGQ7A4gFKwEixndHxl+EMmQBwF2DJk-GtpplY6Al5RZl572kk6OnQnFk5GlkGHWk37Il3557Vn7EfyHHYnMGBmnG-BtlJwal6kXpEhyz4j9m0mDlvECYfGDE1kmnq7r5JacnaY660Kgk0ELmEGm7HYwkW5rEXaBoemSl3aynylu5HFvbNkfatlPA6hEkuH-YiGsacjDY3rZTUkR7dz6kw6JmyjjmyHxamnsnmkYHNhzm74AVF5EFm4gWkGV7rGXYJG16341ZVkwUMFbprSLgAC6dwPMm0kA2wuwdg0YmgeAnEi4kA5wlwUStwAZY0jAtgwCQIfyKUQQOgQYWECEqFYsIi6QmoLYTo9RTo7UPaWEQICE5omoOozlmSP2mS5o1lm8ngxQCe1A7AAAFIdHoOkPIOkAAJRUQpA+CaAXBPCIDoDDB2BPCEAoDmDfEpSwDxWJWlDwCMDQgNDtQIAXAsgRB6U4CajyBQA9qaiJoGDcAqC5V4A9p-CNlJqbwaX7TNgSZlVgB2VHROiuaiAJxNg-ZNgJzpBOieUpQ9oGV0D1HmgOVixThNhOjpAJwJxOg6jtTeUtCK5+WBXlKhWhURXtRRVMDbCRBxUJURmyDpXZSZXXVjk0joBaAFBBiqDcAADucghV8AxVjQPVTYlVkAPaTYtVUA9VxgzAzVrVe6HVwCZkVEPVs1mozoCECEoCOoCEog1uk1XWegm8tl+o6Nw0k1ONzY5oG1Oom121zQoM5g+1QVR14VkViOMVl1WVsoyVqVd1Y0D12VUAuV+VvNpIRVfQSakAPV5owNPa5o4NkAkNjVMN8FHuKU8Nwspkbmm8yNrY2oq1w1vuScONWNTYR0NlOgWE-VdGG1mQAu5lToh0tNPle1AVTNIVLNp1bNF1V1AtKyKVIwItyo-NsoQt8ABVm8YtJVktOgFVVVMd8tit0NOgLVKtHe2U6tZIpkYsSN+luta1lNoC+tIiIiRlCc5tOAWEDtmS5SCEE1WNjlR0W1XldNvlrth17tJ1m8Z17NPtXN-taVVEwddgod4dGVf14tpVydMtydCdDVSdOAKdh5alpIGd24WtuludE45oY1TYK1ThzYQIHFFVhNFt+oY16Q29TYGa5l6QzY6NCcBNKUO19NjN7dx1rN0V3tnNSV-dgdRoQ9OVeVYdf9NokdANOg0tcdOActp1c9TVydsN7VmlGtICYC7UOtc141zlmom1HBw0jljlZdJ9FdZ9oCogOoZllNY1TlZlU12Uz9rdB1wV79ntn9sV39pQ3NAdg9HDgtQDo99149UdPVsdIN8dsDUN8DC9iDatyDmdTwfu2UGDThosGallogVDhtzl5dYAs1AuOol29R5SzlzolDx9T9LdLtTDzNndKU3dX9j1l0t1PDjjuQz1r1yA71X1P1EdQj4DOAQNUDYAYNEjStCDqdthsjaaZSOlSjm9HBog+NGjO9qNiTOjejzoOD5ojlos6NvuB9Ttu1Uh+17t8gQVtj2U9j7DrjftPNLjvtI9IDNQYDfg0d0D090Ds9kjytS9CF6dcjzmgITosTY0GDu9YsogmSF9zoFDw0fw6TrYzoI1TY9lwzqF29CcoshTL9AVpT5TH9511TvtXDA9hVvDHg-DTTBgLTEtIjHTYANVoT89YAi9ipR56lAzEqThOdOAs1FxwIGjIiu9Jdl9Czc11DBj1uCcBjD9fw6N0tzdztxTuzR1+zrDhzHNNTJzVzM05zjTg9fjrTdzQTjzXdcDPTbzy9yoq96ae+NQGDvu5liTwzR05l5o1NTd01p9GjsLw1szWD6j2zjDez5SFTY0VTmLxzv99TIdlzBL-1RLU9QTfwXTYT0jET1RUTh6N9PzvVdAONmzNDQ1F9ZlRlOjWE29llA1TYHla1G1D9j99DljyL-lIrogYrpIErvdDkzjZzNTeA7j1Ab1H1318rE9bTwT9zITZL3T4TvTqt-T0TdGOours161ogV9h0OoTlkzD9RDXLvzutGNI1A1B961qFjrY0DDVjbrHryoXr5z2LMrw9crv1CrtzED9zMDMbarLzMjibh6rmP+G9hbW9qFU4JlQL0LC15j2UM1rYlNaNWNt9w0xbF9QrNbqLorBzPdjb0rfrDTrbvj7bk95V9zpLdj5LcblLfTHzSbXWurizzYCc1ut9q1Q1rmOoogs7Y0RNfw1NdGy12NLY-7R0lbpI1bLrtbO7DjUrdTB7srwtYbwjSrYjC9qrzzrzP8Sp1LAzX2Tllxozm9rm9RALiTHlBja1CEYLK1llcLqkMzu9LY4HyokHkADNrtV98g1uegTYdbRoDbWL+7EdeLR7Y9J7EbkDaHYA3bl7sb6r8badd7W4fOAuqbWEptY1XW1u2TmoScYsP7pI87dAKzNrRlOo41NrwIFDE1G7Lr5lFVPH8gfHMHRzfd8HInNT+Lbb4bxL0nF7lTV7CnN7Cbynn2tGvuj7c1ThF92NkzLl2bh0dDv7m9l2lnm1Tl-O2TEzLHRobHHHgVXHTnLn6Lu7NTiQMgOLHK5zAbjAL1QbnjIbPj4nvnOggT0n0bcnvbWHeSOHRoq9X+fe6D8Ta1+tiTu9U4en8zxDujdl29-7K15lw15S5l2bdn7HjNRX9Rzn-HNogncH3DCHLbSHPnKHZ7JLGHUjfbGrTZA73egIHlUXmQ61httdvuBjxjC15r+o1Ny3TlmNTLY163BXDn3H23JXXdXtbnP9HnGVonJ3x7rXC99zKrTzV3PXby7zK9Az7BaFcTo7GXiTJtoCTY2N2NnLc7p9oCB9wLDt-OcLZriLRTG3nHjn4Pu3NQ+37nh3nnh7CPLXZ3MnXbl3FL2HWPuHqpQIhHpIPVrYON2oHBRjh9moHlYLE1lN-3HBjlpnt9+bTrSLLPrr3HWzHtkPbDkrN1lXzbQRgbwb3jyH-jkbQTnXgX8n13inkTd3ZIdRDRw3JDG1-Ow1hDpP5Sw11HM3s1wIzojlwzD99tYsLYQNTPOzRvJdLDZvGL3rnDwncPXnYngjEnUtwvaPovvX4v-XAz5x0vyosvdAq1FnGbfLFxq123M3hlwHGaHB+d2nD9wPJTxv1HpvdjUPFvMPPPuffPwDDvir53-nIv17YvVLFfqphJUX5DCXdPAuCEScKv33ttE1zozfWTRlHlpPffKLafQ-lTI-Wfy8Of918PU-p3jvoj1V8-wXi-t72PK-6pfver610LTatk2BZDVv2FPFLiQ1vpwsGemSF9gNXl5rdk+wrAfun2H7m9b+tTcfg-zz788C+SPF5ij3f7u8QuSnb-sGR1Z-9Ww61U-ljQGpQCOC2jCPnZVNoTUrWlNWupTQs7gCIOzrQ3iFUv4c86qN-c5hVyq4AM3GdXDxl41DbP8Z+TvDrkQIx4Jo+uNoVem2ReSUC6AmzOjLvR5bkMVmcLPXhAL1YZplmKvUWJZQxrU0k+FjA3gV34Em9BBENYQUJ1h7YDJ+AjPmoSw7btMgmsnV3t137ZhdkK55TQcNRGqHRLsk3Xegr2+71ExqeDBvjg1FhTgjBPAuwf3wEGudR+2fNwXzUf6eDRa3g09g83PaKCghZA4WG2VQpRcX2WvNal+wFxUcbBlPEhvUSxpb9nK2-G1j9mGjn9U+jg7IRgKbZHdAGuArwYX1Q7NVyhOkYSjhFqDmAXqsARwCkDGSqUv+yoJqr7WSDcATArAQgFREcCWA1hUAA4GoAWCYB2olIHHI5m+DtRvAcQVQDcDADLBIAHVISu1HQDPDXhZwo4JgBEqzDHgAIpcEoA+HuBYAPgC6t8LuDiVJKsoT6hpTNDzD9hRwWULXXSBgAAAVGAH8qus6+qQxviWz3r1EwqujHEX82zZE9SaYfRJuQzCoRVRKboWETsFlAoBF8hoSACiIWBojMgWInEXiOp6mcVmm-BnjqFJFBhyRrYWjtbnRFixNqTHYEPSO-idAIAYI65kI2hGe8bQcIuwEECeB+N5hiwrQPCMREYR5hH1DAJoB0DLAKRh0IytSJD7k9KqrYevg-R3rWCW+ogYEcoJhEKUdRpQKUAaIUpGiNMbI8whyItHoArRKwWatKPo6ZJGOE3PQHq0FHNhhRKvGUUZW9E7pQR1QSAMEBUovCYRCtGkL6jsDsBGowRH9DNG8GS19R-1YGr0AbghBYADzHEYdBM4YiAApBFTEoljGAZY0oCihyAcpaxgYhsbkHyDNjQgMnHEQnH1CrUwAPYjoLmPcAYBzAJgTUZqyNBbDZQsACUKgArGRAORRw7gCcIiB-DpK3AWSmEF-iQBfINkcIERHvGJgRgT4lKN4EiDHjWmDwyIHIwYby0eqEQG5nWINFQBfxcjPSvLR7TASxx9YgquBIHF-i7ADoeWuIIiAQSBw39NCYwAABeUdCEdQAup2AjgrAR5JHToBBA+RpE8iUIzoASg+RQIA0EQIwlIS5GideBiqI941AuRdiCIMESSB5ADhrTQicRNKA0S6Avwi4R0C4l5JRKoIkABUCAA/view):  
 ![visualization](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/2X/2/2c137ad8af6f9ffd8dd81d2d08e0c13c5af2c074.png)  
This functionality is still experimental --- please try it out and let us know how it goes for you! 🎈

- [q2-types](https://docs.qiime2.org/2019.4/plugins/available/types/)
  - @thermokarst & @gregcaporaso revamped the FASTQ manifest formats! The [new formats](https://docs.qiime2.org/2019.4/tutorials/importing/#fastq-manifest-formats) are TSV based, and produce files that are _compatible_ with the [Metadata specification](https://docs.qiime2.org/2019.4/tutorials/metadata/).

Keep on QIIME-ing! 🌞 :qiime2: 🦖

---

_[View the full topic](https://forum.qiime2.org/t/qiime-2-2019-4-is-now-available/9513)._
