Create an action with no output artifact

I want to register a function that uses XSLT to transform an XMLDirFmt artifact created by my QIIME 2 wrapper for ASAP (a pipeline that trims, aligns, and processes output) into various formats: HTML, XML, or even Excel. Since I want to allow users to create their own XSLT stylesheets, I don't want to strictly validate the data. Ideally, it makes sense to output the data into a specified folder for user viewing purposes. I considered using a QIIME 2 visualizer, but since XSLT can produce a wide variety of outputs, I can't ensure they will all convert nicely to HTML. Can I write the function to return no artifact but instead output arbitrary file types to a regular directory?

This formatOutput functionality for ASAP is important especially for users transitioning to QIIME 2, and I don't want to require them to install the formatOutput script separately, to extract the XML artifact, then run the formatOutput script on the extracted data. The XML output is otherwise parsable by users using their own code to generate their own analyses for their Amplicon sequencing data.

Hi @nicolesylvester,
It's not possible to output arbitrary file types directly to a directory on your user's computer. This is related to a topic I discuss in Developing with QIIME 2 here.

The typical way to achieve this would be to have your Action create a Visualization as output. You can add any files you want to the output directory that your Visualizer returns, and you can have it write an index.html file with links to any other included files. The user could then either view or download. Effectively your Visualization in this case is just a zip file with a user-friendly index into all of the files that it contains.

Does that make sense? Let me know if you have other questions.

3 Likes