Verifying Your Installation#
Plugin registration failures do not appear until you invoke an action, and several of them raise errors that point somewhere other than the real cause. Run these five checks before starting the tutorial.
1. The framework#
qiime info
Expect QIIME 2 2026.7. The framework package has been called rachis since the
2026.1 rebrand, so qiime info reports that name. import qiime2 still works
through a compatibility shim.
2. Both plugins are registered#
qiime dev refresh-cache
qiime gglasso --help
qiime classo --help
qiime gglasso --help must list six actions:
build-groups build-groups
calculate-covariance calculate_covariance
pca Principal component analysis (PCA)
solve-problem solve_problem
summarize Summary table
transform-features transform-features
The one-line descriptions are not all English sentences: q2cli uses each action’s
registered name= as its short help, and four of the six register that field as
the action name itself. A description column that repeats the action name is
therefore expected, not a sign of a broken registration.
qiime classo --help must list eight: add-covariates, add-taxa,
classify, generate-data, predict, regress, summarize,
transform-features.
Note
If two actions are both shown as regress, your q2-classo predates the fix for
classify having been registered under the wrong name. The action works and is
only mislabelled. Update to a current checkout.
3. The scientific stack#
The most common failure mode is a wrong package rather than a missing one: pip
cannot see conda’s pins and will install a wheel over the distribution’s NumPy.
python -c "import numpy, pandas, scipy, numba, bokeh, zarr; \
print('numpy', numpy.__version__); print('pandas', pandas.__version__); \
print('scipy', scipy.__version__); print('numba', numba.__version__); \
print('bokeh', bokeh.__version__); print('zarr', zarr.__version__)"
Expected on a clean 2026.7 environment:
Package |
Expected |
Why it matters |
|---|---|---|
numpy |
2.4.x |
q2-gglasso previously pinned |
pandas |
2.3.x |
3.x changes Copy-on-Write semantics further |
scipy |
1.17.x |
distribution pin |
numba |
0.66.x |
compiles GGLasso’s JIT solver kernels |
bokeh |
3.x |
2.4.3 cannot render the visualizations |
zarr |
2.18.x |
must be < 3 — zarr 3 removed |
And the two solver libraries:
python -c "import gglasso, classo; print('gglasso', gglasso.__version__)"
Expect gglasso 0.3.0 or later.
4. The solver runs#
Registration succeeding does not mean the numerics work — the JIT kernels are compiled on first call, and that is where a numba/NumPy mismatch surfaces.
python - <<'PY'
import numpy as np
from gglasso.problem import glasso_problem
from gglasso.helper.data_generation import (
generate_precision_matrix, sample_covariance_matrix)
Sigma, Theta = generate_precision_matrix(p=20, M=2, style="erdos", prob=0.1, seed=1)
S, _ = sample_covariance_matrix(Sigma, 100)
P = glasso_problem(S, N=100, reg_params={"lambda1": 0.05}, latent=False)
P.solve()
print("solver OK")
PY
The first call is slow — that is numba compiling, not a hang.
Note
If this raises a TypingError or LoweringError, you have hit a numba/NumPy
incompatibility rather than a q2-gglasso bug. Re-run with NUMBA_DISABLE_JIT=1
to confirm: the kernels are valid pure Python and will run, more slowly.
5. Read an artifact#
qiime tools peek data/atacama-counts.qza
A successful peek confirms that the artifact API and the type system agree with what the tutorial expects.
Known rough edges#
Neither plugin declares Choices() on its string parameters, so the CLI accepts
a misspelled enum value and the call fails inside the function at runtime:
ValueError: Unknown transformation name, use clr and not 'clrr'
Affected: --p-transformation, --p-method, --p-reg, --p-path-scale and the
--p-*-numerical-method family. See
Troubleshooting for the full list.