Report
Hi, I just noticed that the way the pseudobulk functionality is imported from decoupler does not work anymore for decoupler>=2.0.0. The package underwent large refactors for integration into scverse. It is now available as decoupler.pp.pseudobulk.
Just for completeness the error log:
from hnoca.stats.pseudobulk import create_pseudobulk
adata_pb = create_pseudobulk(
...
)
Returns:
File [/cluster/project/treutlein/USERS/aabouelela/miniforge3/envs/hnoca_py312/lib/python3.12/site-packages/hnoca/stats/pseudobulk.py:36](https://jupyter.euler.hpc.ethz.ch/user/aabouelela/server/cluster/project/treutlein/USERS/aabouelela/miniforge3/envs/hnoca_py312/lib/python3.12/site-packages/hnoca/stats/pseudobulk.py#line=35), in create_pseudobulk(adata, sample_key, group_key, layer, mode, min_cells, min_counts, **kwargs)
17 """
18 Create pseudobulk data from anndata object
19
(...) 33 AnnData object with pseudobulk data
34 """
35 check_deps("decoupler")
---> 36 from decoupler import get_pseudobulk
38 if layer is not None:
39 adata.X = adata.layers[layer].copy()
ImportError: cannot import name 'get_pseudobulk' from 'decoupler' ([/cluster/project/treutlein/USERS/aabouelela/miniforge3/envs/hnoca_py312/lib/python3.12/site-packages/decoupler/__init__.py](https://jupyter.euler.hpc.ethz.ch/user/aabouelela/server/cluster/project/treutlein/USERS/aabouelela/miniforge3/envs/hnoca_py312/lib/python3.12/site-packages/decoupler/__init__.py))
Versions
| Package | Version |
| ------------------ | ------- |
| hnoca | 0.2.1 |
| scanpy | 1.11.3 |
| pandas | 2.3.1 |
| amex_merfish_utils | 0.0.1 |
| anndata | 0.12.0 |
| Dependency | Version |
| ------------------------ | -------------- |
| Jinja2 | 3.1.6 |
| jaxlib | 0.6.2 |
| legacy-api-wrap | 1.4.1 |
| jax-cuda12-plugin | 0.6.2 |
| llvmlite | 0.44.0 |
| nvidia-nccl-cu12 | 2.27.6 |
| nvidia-nvjitlink-cu12 | 12.9.86 |
| scikit-learn | 1.7.1 |
| attrs | 25.3.0 |
| fastrlock | 0.8.3 |
| pyzmq | 27.0.0 |
| xarray | 2024.11.0 |
| jupyter_core | 5.8.1 |
| typing_extensions | 4.14.1 |
| rapids-dask-dependency | 25.8.0 |
| opt_einsum | 3.4.0 |
| stack_data | 0.6.3 |
| crc32c | 2.7.1 |
| toolz | 1.0.0 |
| jax-cuda12-pjrt | 0.6.2 |
| ipython | 9.4.0 |
| prompt_toolkit | 3.0.51 |
| nvidia-cusolver-cu12 | 11.7.5.82 |
| nvidia-cusparse-cu12 | 12.5.10.65 |
| platformdirs | 4.3.8 |
| parso | 0.8.4 |
| pycparser | 2.22 |
| jedi | 0.19.2 |
| rapids_singlecell | 0.13.2 |
| rich | 14.0.0 |
| numcodecs | 0.15.1 |
| msgpack | 1.1.1 |
| pyparsing | 3.2.3 |
| MarkupSafe | 3.0.2 |
| cloudpickle | 3.1.1 |
| pillow | 11.3.0 |
| comm | 0.2.2 |
| joblib | 1.5.1 |
| threadpoolctl | 3.6.0 |
| matplotlib | 3.10.3 |
| igraph | 0.11.9 |
| executing | 2.2.0 |
| nvidia-cuda-nvrtc-cu12 | 12.9.86 |
| python-dateutil | 2.9.0.post0 |
| nvidia-cublas-cu12 | 12.9.1.4 |
| tblib | 3.1.0 |
| psutil | 7.0.0 |
| Deprecated | 1.2.18 |
| tornado | 6.5.1 |
| nvidia-cudnn-cu12 | 9.11.0.98 |
| cupy-cuda12x | 13.6.0 |
| numba | 0.61.2 |
| patsy | 1.0.1 |
| defusedxml | 0.7.1 |
| charset-normalizer | 3.4.2 |
| Pygments | 2.19.2 |
| nvidia-curand-cu12 | 10.3.10.19 |
| nvidia-nvshmem-cu12 | 3.3.9 |
| ml_dtypes | 0.5.1 |
| jupyter_client | 8.6.3 |
| pyarrow | 19.0.1 |
| leidenalg | 0.10.2 |
| texttable | 1.7.0 |
| nvidia-cuda-cupti-cu12 | 12.9.79 |
| natsort | 8.4.0 |
| pytz | 2025.2 |
| six | 1.17.0 |
| zarr | 2.18.7 |
| kiwisolver | 1.4.8 |
| ipykernel | 6.29.5 |
| numpy | 2.2.6 |
| packaging | 25.0 |
| debugpy | 1.8.15 |
| nvidia-cuda-cccl-cu12 | 12.9.27 |
| asttokens | 3.0.0 |
| cycler | 0.12.1 |
| session-info2 | 0.1.2 |
| jax | 0.6.2 |
| cuda-pathfinder | 1.3.0 (12.9.2) |
| cuda-bindings | 12.9.2 |
| zstandard | 0.23.0 |
| setuptools | 80.9.0 |
| statsmodels | 0.14.5 |
| h5py | 3.14.0 |
| tqdm | 4.67.1 |
| wrapt | 1.17.2 |
| dask | 2025.7.0 |
| traitlets | 5.14.3 |
| nvidia-cufft-cu12 | 11.4.1.4 |
| cffi | 1.17.1 |
| asciitree | 0.3.3 |
| wcwidth | 0.2.13 |
| nvidia-cuda-nvcc-cu12 | 12.9.86 |
| scipy | 1.15.3 |
| decorator | 5.2.1 |
| pure_eval | 0.2.3 |
| nvidia-cuda-runtime-cu12 | 12.9.79 |
| pynndescent | 0.5.13 |
| utility_functions | 0.0.0 |
| PyYAML | 6.0.2 |
| Component | Info |
| --------- | ------------------------------------------------------------------------------ |
| Python | 3.12.11 | packaged by conda-forge | (main, Jun 4 2025, 14:45:31) [GCC 13.3.0] |
| OS | Linux-5.15.0-160-generic-x86_64-with-glibc2.35 |
| Updated | 2025-11-25 15:01 |
Report
Hi, I just noticed that the way the pseudobulk functionality is imported from
decouplerdoes not work anymore fordecoupler>=2.0.0. The package underwent large refactors for integration into scverse. It is now available asdecoupler.pp.pseudobulk.Just for completeness the error log:
Returns:
Versions