plugin development for the real dummies?


Can someone explain to a biologist how plugin development works? I have read the developers section in docs.qiime2, but I require more hand-holding. There is an existing script for a plugin which achieves 90% of what I need. My goal is to add functionality to that script (with developer’s blessing).

The two pressing questions I have are:

  1. How are data and parameters being passed into the plugins?
    When I read scripts which underpin the plugin of interest, I can’t seem to find the point of data and parameter entry.
  2. How do people troubleshoot their code? Normally, I use print statements to check the progress of a workflow, but I can’t get that to work in QIIME.
1 Like

Hey there @A_Bennett!

We actually have a separate documentation site for plugin development:

What plugin and/or action are you interested in contributing to?

Check out for more details. The TLDR is you define a QIIME 2 plugin, register actions on that plugin, and define the inputs, outputs, and parameters of that action. The last step is registering a particular function to run as part of that action’s definition - there are definitely a few moving parts here, so if you still have questions after reviewing the docs above, let us know.

Same as you - print statement, breakpoints, etc. My guess is if it didn’t work, there might be two separate issues:

  1. Did you install the plugin in development mode in your development environments? pip install -e . usually does the trick. Check out for a brief example.
  2. If you’re running those commands via q2cli, you’ll need to also pass the --verbose flag to the command to make sure everything is printed to stdout.

Keep us posted!