Singularity error: cannot cache function 'sparse_mean_var_minor_axis'
crichgriffin opened this issue · 7 comments
Description of the bug
Tried to run the singularity wrapper after downloading it today, got the error below:
Minimal reproducible example
# the public data I am using
curl -O https://cf.10xgenomics.com/samples/cell-vdj/6.1.2/10k_PBMC_TBNK_connect_10k_PBMC_TBNK_connect/10k_PBMC_TBNK_connect_10k_PBMC_TBNK_connect_vdj_b_filtered_contig_annotations.csv
curl -O https://cf.10xgenomics.com/samples/cell-vdj/6.1.2/10k_PBMC_TBNK_connect_10k_PBMC_TBNK_connect/10k_PBMC_TBNK_connect_10k_PBMC_TBNK_connect_vdj_b_filtered_contig.fasta
#
singularity run -B $PWD sc-dandelion_latest.sif dandelion-preprocess --file_prefix 10k_PBMC_TBNK_connect_10k_PBMC_TBNK_connect_vdj_b_filtered
The error message produced by the code above
Traceback (most recent call last):
File "/share/dandelion_preprocess.py", line 4, in <module>
import dandelion as ddl
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/__init__.py", line 7, in <module>
from . import preprocessing as pp
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/__init__.py", line 7, in <module>
from . import external
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/external/__init__.py", line 7, in <module>
from ._preprocessing import (
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/external/_preprocessing.py", line 13, in <module>
import scanpy as sc
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/__init__.py", line 14, in <module>
from . import tools as tl
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/tools/__init__.py", line 1, in <module>
from ..preprocessing import pca
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/preprocessing/__init__.py", line 1, in <module>
from ._recipes import recipe_zheng17, recipe_weinreb17, recipe_seurat
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/preprocessing/_recipes.py", line 8, in <module>
from ._deprecated.highly_variable_genes import (
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/preprocessing/_deprecated/highly_variable_genes.py", line 11, in <module>
from .._utils import _get_mean_var
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/preprocessing/_utils.py", line 46, in <module>
def sparse_mean_var_minor_axis(data, indices, major_len, minor_len, dtype):
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/decorators.py", line 212, in wrapper
disp.enable_caching()
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/dispatcher.py", line 863, in enable_caching
self._cache = FunctionCache(self.py_func)
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/caching.py", line 613, in __init__
self._impl = self._impl_class(py_func)
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/caching.py", line 350, in __init__
raise RuntimeError("cannot cache function %r: no locator available "
RuntimeError: cannot cache function 'sparse_mean_var_minor_axis': no locator available for file '/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/preprocessing/_utils.py'
OS information
No response
Version information
No response
Additional context
No response
hi @crichgriffin, thank you for your interest in dandelion
and raising this issue.
I've previously encountered this issue, but can't exactly remember how i dealt with it. It's got to do with numba
being unable to create its default cache in your compute environment/location when scanpy is being imported.
See here for default NUMBA_CACHE_DIR
locations.
Can you try and move to a different location when you have full read/write access (or add sudo to the front of call) and see if that works?
Heya,
I also have this same issue. After (I think) fixing by placing a .numba_config.yaml
in my root directory with NUMBA_CACHE_DIR=~/scratch/tmp/dandelion
, I now get this next error.
Traceback (most recent call last):
File "/share/dandelion_preprocess.py", line 6, in <module>
import dandelion as ddl
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/__init__.py", line 2, in <module>
from dandelion import preprocessing as pp
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/__init__.py", line 2, in <module>
from dandelion.preprocessing import external
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/external/__init__.py", line 2, in <module>
from ._preprocessing import (
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/dandelion/preprocessing/external/_preprocessing.py", line 8, in <module>
import scanpy as sc
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/__init__.py", line 6, in <module>
from ._utils import check_versions
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/_utils/__init__.py", line 28, in <module>
from .compute.is_constant import is_constant
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/scanpy/_utils/compute/is_constant.py", line 5, in <module>
from numba import njit
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/__init__.py", line 69, in <module>
from numba.core import config
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/config.py", line 527, in <module>
_env_reloader = _EnvReloader()
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/config.py", line 86, in __init__
self.reset()
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/config.py", line 90, in reset
self.update(force=True)
File "/opt/conda/envs/sc-dandelion-container/lib/python3.9/site-packages/numba/core/config.py", line 107, in update
for k, v in y_conf.items():
AttributeError: 'str' object has no attribute 'items'
This is my first time running a singularity container, so apologies if I have a naive perspective on things...!
Thanks so much for all of your help!
All the best
Ollie
Hi Ollie,
i think your issue now is that the .numba_config.yaml
isn't in the format that numba wants:
Not sure how to fix it. perhaps looking at the source code can help: