Minimum system requirements? Per-analysis requirements?

Hi all,

I am wondering about how to convey to users the minimum system requirements for a plugin to work properly. I am developing software for shotgun sequence alignment which has large storage, memory, and computational requirements (i.e. supercomputer-level stuff). Would it be sufficient to include a blurb with the installation directions or on the plugin info page, or would it be possible to check the system it’s being installed on for a few things like free storage, RAM, number of processors as a routine part of the installation process?

Additional nuance: the same software can operate in “minimal” mode or on amplicon data with very minimal requirements, depending on the database size and the input data type (amplicon vs shotgun sequencing). If there was some soft of auto-checking mechanism in place, might there also be a mechanism for controlling the granularity of this checking (per database at database download time, and/or per datatype [shotgun/amplicon] at runtime)?

2 Likes

These are all really great ideas but unfortunately there isn’t a way to do install-time checks like this with conda (this is the officially supported way of installing QIIME 2). I think (for now at least) documenting your resource recommendations with the plugin is the way to go.

You could add some resource checks to your plugin that are executed at runtime (e.g. to produce a meaningful error or warning message) but that doesn’t solve your question about install-time checks.

Hi Gabe,

I think it might be possible to implement an install-time requirements-checking script through the build parameter in the conda build recipe. I don’t know for sure that this would work or is the best course of action, but it seems plausibly doable. I may be misunderstanding the meta-yaml documentation, though.

Another possibility is that you could code some sort of requirements checks into the optional script run_test.py, which will be run by conda automatically upon install if it is included in the recipe, or if you have multiple tests, to make a requirements check one of them.

For example, in meta.yaml:

test:
  run_test.sh

And then you could have some script run_test.sh that would check for the relevant minimum system requirements. This is step 10 in the conda build recipe.

Hope this helps!

Max

1 Like