Skip to content

calculate_image_features() error with tutorial data #826

@kimsjune

Description

@kimsjune

Description

Hi,
I'm seeing some errors when following Analyze Visium H&E data. In particular, calculate_image_features() returns this error message:

    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    Cell In[4], line 4
          2 for scale in [1.0, 2.0]:
          3     feature_name = f"features_summary_scale{scale}"
    ----> 4     sq.im.calculate_image_features(
          5         adata,
          6         img.compute(),
          7         features="summary",
          8         key_added=feature_name,
          9         scale=scale,
         10     )
         13 # combine features in one dataframe
         14 adata.obsm["features"] = pd.concat(
         15     [adata.obsm[f] for f in adata.obsm.keys() if "features_summary" in f],
         16     axis="columns",
         17 )
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_feature.py:91, in calculate_image_features(adata, img, layer, library_id, features, features_kwargs, key_added, copy, n_jobs, backend, show_progress_bar, **kwargs)
         88 n_jobs = _get_n_cores(n_jobs)
         89 start = logg.info(f"Calculating features `{list(features)}` using `{n_jobs}` core(s)")
    ---> 91 res = parallelize(
         92     _calculate_image_features_helper,
         93     collection=adata.obs_names,
         94     extractor=pd.concat,
         95     n_jobs=n_jobs,
         96     backend=backend,
         97     show_progress_bar=show_progress_bar,
         98 )(adata, img, layer=layer, library_id=library_id, features=features, features_kwargs=features_kwargs, **kwargs)
        100 if copy:
        101     logg.info("Finish", time=start)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/_utils.py:168, in parallelize.<locals>.wrapper(*args, **kwargs)
        165 else:
        166     pbar, queue, thread = None, None, None
    --> 168 res = jl.Parallel(n_jobs=n_jobs, backend=backend)(
        169     jl.delayed(runner if use_runner else callback)(
        170         *((i, cs) if use_ixs else (cs,)),
        171         *args,
        172         **kwargs,
        173         queue=queue,
        174     )
        175     for i, cs in enumerate(collections)
        176 )
        178 if thread is not None:
        179     thread.join()
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/joblib/parallel.py:1918, in Parallel.__call__(self, iterable)
       1916     output = self._get_sequential_output(iterable)
       1917     next(output)
    -> 1918     return output if self.return_generator else list(output)
       1920 # Let's create an ID that uniquely identifies the current call. If the
       1921 # call is interrupted early and that the same instance is immediately
       1922 # re-used, this id will be used to prevent workers that were
       1923 # concurrently finalizing a task from the previous call to run the
       1924 # callback.
       1925 with self._lock:
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/joblib/parallel.py:1847, in Parallel._get_sequential_output(self, iterable)
       1845 self.n_dispatched_batches += 1
       1846 self.n_dispatched_tasks += 1
    -> 1847 res = func(*args, **kwargs)
       1848 self.n_completed_tasks += 1
       1849 self.print_progress()
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_feature.py:119, in _calculate_image_features_helper(obs_ids, adata, img, layer, library_id, features, features_kwargs, queue, **kwargs)
        107 def _calculate_image_features_helper(
        108     obs_ids: Sequence[str],
        109     adata: AnnData,
       (...)
        116     **kwargs: Any,
        117 ) -> pd.DataFrame:
        118     features_list = []
    --> 119     for crop in img.generate_spot_crops(
        120         adata, obs_names=obs_ids, library_id=library_id, return_obs=False, as_array=False, **kwargs
        121     ):
        122         if TYPE_CHECKING:
        123             assert isinstance(crop, ImageContainer)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_container.py:830, in ImageContainer.generate_spot_crops(self, adata, spatial_key, library_id, spot_diameter_key, spot_scale, obs_names, as_array, squeeze, return_obs, **kwargs)
        828     y = int(y - self.data.attrs[Key.img.coords].y0)
        829     x = int(x - self.data.attrs[Key.img.coords].x0)
    --> 830 crop = self.crop_center(y=y, x=x, radius=radius, library_id=obs_library_ids[i], **kwargs)
        831 crop.data.attrs[Key.img.obs] = obs
        832 crop = crop._maybe_as_array(as_array, squeeze=squeeze, lazy=False)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_container.py:661, in ImageContainer.crop_center(self, y, x, radius, **kwargs)
        658 _assert_non_negative(yr, name="radius height")
        659 _assert_non_negative(xr, name="radius width")
    --> 661 return self.crop_corner(  # type: ignore[no-any-return]
        662     y=y - yr, x=x - xr, size=(yr * 2 + 1, xr * 2 + 1), **kwargs
        663 )
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_container.py:568, in ImageContainer.crop_corner(self, y, x, size, library_id, scale, cval, mask_circle, preserve_dtypes)
        565 else:
        566     crop.attrs[Key.img.padding] = _NULL_PADDING
        567 return self._from_dataset(
    --> 568     self._post_process(
        569         data=crop, scale=scale, cval=cval, mask_circle=mask_circle, preserve_dtypes=preserve_dtypes
        570     )
        571 )
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_container.py:602, in ImageContainer._post_process(self, data, scale, cval, mask_circle, preserve_dtypes, **_)
        600     attrs = data.attrs
        601     library_ids = data.coords["z"]
    --> 602     data = data.map(_rescale).assign_coords({"z": library_ids})
        603     data.attrs = _update_attrs_scale(attrs, scale)
        605 if mask_circle:
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/dataset.py:6931, in Dataset.map(self, func, keep_attrs, args, **kwargs)
       6929 if keep_attrs is None:
       6930     keep_attrs = _get_keep_attrs(default=False)
    -> 6931 variables = {
       6932     k: maybe_wrap_array(v, func(v, *args, **kwargs))
       6933     for k, v in self.data_vars.items()
       6934 }
       6935 if keep_attrs:
       6936     for k, v in variables.items():
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/dataset.py:6932, in <dictcomp>(.0)
       6929 if keep_attrs is None:
       6930     keep_attrs = _get_keep_attrs(default=False)
       6931 variables = {
    -> 6932     k: maybe_wrap_array(v, func(v, *args, **kwargs))
       6933     for k, v in self.data_vars.items()
       6934 }
       6935 if keep_attrs:
       6936     for k, v in variables.items():
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/squidpy/im/_container.py:597, in ImageContainer._post_process.<locals>._rescale(arr)
        591     shape[-2] = arr.shape[-2]
        592     return xr.DataArray(
        593         da.from_delayed(delayed(lambda arr: scaling_fn(arr).astype(dtype))(arr), shape=shape, dtype=dtype),
        594         dims=arr.dims,
        595     )
    --> 597 return xr.DataArray(scaling_fn(arr).astype(dtype), dims=arr.dims)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/skimage/_shared/utils.py:328, in channel_as_last_axis.__call__.<locals>.fixed_func(*args, **kwargs)
        324     raise ValueError(
        325         "only a single channel axis is currently supported")
        327 if channel_axis == (-1,) or channel_axis == -1:
    --> 328     return func(*args, **kwargs)
        330 if self.arg_positions:
        331     new_args = []
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/skimage/transform/_warps.py:289, in rescale(image, scale, order, mode, cval, clip, preserve_range, anti_aliasing, anti_aliasing_sigma, channel_axis)
        286 if multichannel:  # don't scale channel dimension
        287     output_shape[-1] = orig_shape[-1]
    --> 289 return resize(image, output_shape, order=order, mode=mode, cval=cval,
        290               clip=clip, preserve_range=preserve_range,
        291               anti_aliasing=anti_aliasing,
        292               anti_aliasing_sigma=anti_aliasing_sigma)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/skimage/transform/_warps.py:188, in resize(image, output_shape, order, mode, cval, clip, preserve_range, anti_aliasing, anti_aliasing_sigma)
        184 zoom_factors = [1 / f for f in factors]
        185 out = ndi.zoom(filtered, zoom_factors, order=order, mode=ndi_mode,
        186                cval=cval, grid_mode=True)
    --> 188 _clip_warp_output(image, out, mode, cval, clip)
        190 return out
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/skimage/transform/_warps.py:692, in _clip_warp_output(input_image, output_image, mode, cval, clip)
        689     min_val = min(min_val, cval)
        690     max_val = max(max_val, cval)
    --> 692 np.clip(output_image, min_val, max_val, out=output_image)
    
    File <__array_function__ internals>:180, in clip(*args, **kwargs)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/numpy/core/fromnumeric.py:2152, in clip(a, a_min, a_max, out, **kwargs)
       2083 @array_function_dispatch(_clip_dispatcher)
       2084 def clip(a, a_min, a_max, out=None, **kwargs):
       2085     """
       2086     Clip (limit) the values in an array.
       2087 
       (...)
       2150 
       2151     """
    -> 2152     return _wrapfunc(a, 'clip', a_min, a_max, out=out, **kwargs)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/numpy/core/fromnumeric.py:57, in _wrapfunc(obj, method, *args, **kwds)
         54     return _wrapit(obj, method, *args, **kwds)
         56 try:
    ---> 57     return bound(*args, **kwds)
         58 except TypeError:
         59     # A TypeError occurs if the object does have such a method in its
         60     # class, but its signature is not identical to that of NumPy's. This
       (...)
         64     # Call _wrapit from within the except clause to ensure a potential
         65     # exception has a traceback chain.
         66     return _wrapit(obj, method, *args, **kwds)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/numpy/core/_methods.py:159, in _clip(a, min, max, out, casting, **kwargs)
        156     return _clip_dep_invoke_with_casting(
        157         um.maximum, a, min, out=out, casting=casting, **kwargs)
        158 else:
    --> 159     return _clip_dep_invoke_with_casting(
        160         um.clip, a, min, max, out=out, casting=casting, **kwargs)
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/numpy/core/_methods.py:113, in _clip_dep_invoke_with_casting(ufunc, out, casting, *args, **kwargs)
        111 # try to deal with broken casting rules
        112 try:
    --> 113     return ufunc(*args, out=out, **kwargs)
        114 except _exceptions._UFuncOutputCastingError as e:
        115     # Numpy 1.17.0, 2019-02-24
        116     warnings.warn(
        117         "Converting the output of clip from {!r} to {!r} is deprecated. "
        118         "Pass `casting=\"unsafe\"` explicitly to silence this warning, or "
       (...)
        121         stacklevel=2
        122     )
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/arithmetic.py:85, in SupportsArithmetic.__array_ufunc__(self, ufunc, method, *inputs, **kwargs)
         76     raise NotImplementedError(
         77         "xarray objects are not yet supported in the `out` argument "
         78         "for ufuncs. As an alternative, consider explicitly "
         79         "converting xarray objects to NumPy arrays (e.g., with "
         80         "`.values`)."
         81     )
         83 join = dataset_join = OPTIONS["arithmetic_join"]
    ---> 85 return apply_ufunc(
         86     ufunc,
         87     *inputs,
         88     input_core_dims=((),) * ufunc.nin,
         89     output_core_dims=((),) * ufunc.nout,
         90     join=join,
         91     dataset_join=dataset_join,
         92     dataset_fill_value=np.nan,
         93     kwargs=kwargs,
         94     dask="allowed",
         95     keep_attrs=_get_keep_attrs(default=True),
         96 )
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/computation.py:1267, in apply_ufunc(func, input_core_dims, output_core_dims, exclude_dims, vectorize, join, dataset_join, dataset_fill_value, keep_attrs, kwargs, dask, output_dtypes, output_sizes, meta, dask_gufunc_kwargs, on_missing_core_dim, *args)
       1265 # feed DataArray apply_variable_ufunc through apply_dataarray_vfunc
       1266 elif any(isinstance(a, DataArray) for a in args):
    -> 1267     return apply_dataarray_vfunc(
       1268         variables_vfunc,
       1269         *args,
       1270         signature=signature,
       1271         join=join,
       1272         exclude_dims=exclude_dims,
       1273         keep_attrs=keep_attrs,
       1274     )
       1275 # feed Variables directly through apply_variable_ufunc
       1276 elif any(isinstance(a, Variable) for a in args):
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/computation.py:315, in apply_dataarray_vfunc(func, signature, join, exclude_dims, keep_attrs, *args)
        310 result_coords, result_indexes = build_output_coords_and_indexes(
        311     args, signature, exclude_dims, combine_attrs=keep_attrs
        312 )
        314 data_vars = [getattr(a, "variable", a) for a in args]
    --> 315 result_var = func(*data_vars)
        317 out: tuple[DataArray, ...] | DataArray
        318 if signature.num_outputs > 1:
    
    File ~/miniconda3/envs/squid/lib/python3.10/site-packages/xarray/core/computation.py:847, in apply_variable_ufunc(func, signature, exclude_dims, dask, output_dtypes, vectorize, keep_attrs, dask_gufunc_kwargs, *args)
        845 data = as_compatible_data(data)
        846 if data.ndim != len(dims):
    --> 847     raise ValueError(
        848         "applied function returned data with an unexpected "
        849         f"number of dimensions. Received {data.ndim} dimension(s) but "
        850         f"expected {len(dims)} dimensions with names {dims!r}, from:\n\n"
        851         f"{short_array_repr(data)}"
        852     )
        854 var = Variable(dims, data, fastpath=True)
        855 for dim, new_size in var.sizes.items():
    
    ValueError: applied function returned data with an unexpected number of dimensions. Received 4 dimension(s) but expected 0 dimensions with names (), from:
    
    array([[[[100.5   , ..., 111.375 ]],
    
            ...,
    
            [[ 91.75  , ...,  80.6875]]],
    
    
           ...,
    
    
           [[[116.    , ..., 114.    ]],
    
            ...,
    
            [[120.25  , ..., 112.25  ]]]])

This is my environment.yml.

name: squid
channels:
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - aiohttp=3.9.5=py310h2372a71_0
  - aiosignal=1.3.1=pyhd8ed1ab_0
  - anndata=0.8.0=pyhd8ed1ab_1
  - anyio=4.3.0=pyhd8ed1ab_0
  - aom=3.9.0=hac33072_0
  - argon2-cffi=23.1.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py310h2372a71_4
  - arpack=3.7.0=hdefa2d7_2
  - arrow=1.3.0=pyhd8ed1ab_0
  - asciitree=0.3.3=py_2
  - asttokens=2.4.1=pyhd8ed1ab_0
  - async-lru=2.0.4=pyhd8ed1ab_0
  - async-timeout=4.0.3=pyhd8ed1ab_0
  - attrs=23.2.0=pyh71513ae_0
  - aws-c-auth=0.7.20=h5f1c8d9_0
  - aws-c-cal=0.6.12=h2ba76a8_0
  - aws-c-common=0.9.17=h4ab18f5_0
  - aws-c-compression=0.2.18=h36a0aea_4
  - aws-c-event-stream=0.4.2=h161de36_10
  - aws-c-http=0.8.1=h63f54a0_13
  - aws-c-io=0.14.8=h96d4d28_0
  - aws-c-mqtt=0.10.4=hcc7299c_2
  - aws-c-s3=0.5.8=h10bd90f_3
  - aws-c-sdkutils=0.1.16=h36a0aea_0
  - aws-checksums=0.1.18=h36a0aea_4
  - aws-crt-cpp=0.26.8=h02fd9b4_10
  - aws-sdk-cpp=1.11.267=h51dfee4_8
  - babel=2.14.0=pyhd8ed1ab_0
  - beautifulsoup4=4.12.3=pyha770c72_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - blosc=1.21.5=hc2324a3_1
  - bokeh=3.4.1=pyhd8ed1ab_0
  - brotli=1.1.0=hd590300_1
  - brotli-bin=1.1.0=hd590300_1
  - brotli-python=1.1.0=py310hc6cd4ac_1
  - brunsli=0.1=h9c3ff4c_0
  - bzip2=1.0.8=hd590300_5
  - c-ares=1.28.1=hd590300_0
  - c-blosc2=2.14.4=hb4ffafa_1
  - ca-certificates=2024.2.2=hbcca054_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - certifi=2024.2.2=pyhd8ed1ab_0
  - cffi=1.16.0=py310h2fee648_0
  - charls=2.4.2=h59595ed_0
  - charset-normalizer=3.3.2=pyhd8ed1ab_0
  - click=8.1.7=unix_pyh707e725_0
  - cloudpickle=3.0.0=pyhd8ed1ab_0
  - colorama=0.4.6=pyhd8ed1ab_0
  - comm=0.2.2=pyhd8ed1ab_0
  - contourpy=1.2.1=py310hd41b1e2_0
  - cycler=0.12.1=pyhd8ed1ab_0
  - cytoolz=0.12.3=py310h2372a71_0
  - dask=2024.2.1=pyhd8ed1ab_0
  - dask-core=2024.2.1=pyhd8ed1ab_1
  - dask-image=2023.3.0=pyhd8ed1ab_0
  - dav1d=1.2.1=hd590300_0
  - debugpy=1.8.1=py310hc6cd4ac_0
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - distributed=2024.2.1=pyhd8ed1ab_0
  - docrep=0.3.2=pyh44b312d_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - exceptiongroup=1.2.0=pyhd8ed1ab_2
  - executing=2.0.1=pyhd8ed1ab_0
  - fasteners=0.17.3=pyhd8ed1ab_0
  - fonttools=4.51.0=py310h2372a71_0
  - fqdn=1.5.1=pyhd8ed1ab_0
  - freetype=2.12.1=h267a509_2
  - frozenlist=1.4.1=py310h2372a71_0
  - fsspec=2024.3.1=pyhca7485f_0
  - gflags=2.2.2=he1b5a44_1004
  - giflib=5.2.2=hd590300_0
  - glog=0.7.0=hed5481d_0
  - glpk=5.0=h445213a_0
  - gmp=6.3.0=h59595ed_1
  - h11=0.14.0=pyhd8ed1ab_0
  - h2=4.1.0=pyhd8ed1ab_0
  - h5py=3.11.0=nompi_py310h65828d5_100
  - hdf5=1.14.3=nompi_h4f84152_101
  - hpack=4.0.0=pyh9f0ad1d_0
  - httpcore=1.0.5=pyhd8ed1ab_0
  - httpx=0.27.0=pyhd8ed1ab_0
  - hyperframe=6.0.1=pyhd8ed1ab_0
  - icu=73.2=h59595ed_0
  - idna=3.7=pyhd8ed1ab_0
  - igraph=0.10.7=h27e60f0_0
  - imagecodecs=2024.1.1=py310h06b5df7_6
  - imageio=2.34.1=pyh4b66e23_0
  - importlib-metadata=7.1.0=pyha770c72_0
  - importlib_metadata=7.1.0=hd8ed1ab_0
  - importlib_resources=6.4.0=pyhd8ed1ab_0
  - inflect=7.2.1=pyhd8ed1ab_0
  - ipykernel=6.29.3=pyhd33586a_0
  - ipython=8.24.0=pyh707e725_0
  - ipywidgets=8.1.2=pyhd8ed1ab_1
  - isoduration=20.11.0=pyhd8ed1ab_0
  - jedi=0.19.1=pyhd8ed1ab_0
  - jinja2=3.1.4=pyhd8ed1ab_0
  - joblib=1.4.2=pyhd8ed1ab_0
  - json5=0.9.25=pyhd8ed1ab_0
  - jsonpointer=2.4=py310hff52083_3
  - jsonschema=4.22.0=pyhd8ed1ab_0
  - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0
  - jsonschema-with-format-nongpl=4.22.0=pyhd8ed1ab_0
  - jupyter=1.0.0=pyhd8ed1ab_10
  - jupyter-lsp=2.2.5=pyhd8ed1ab_0
  - jupyter_client=8.6.1=pyhd8ed1ab_0
  - jupyter_console=6.6.3=pyhd8ed1ab_0
  - jupyter_core=5.7.2=py310hff52083_0
  - jupyter_events=0.10.0=pyhd8ed1ab_0
  - jupyter_server=2.14.0=pyhd8ed1ab_0
  - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0
  - jupyterlab=4.1.8=pyhd8ed1ab_0
  - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1
  - jupyterlab_server=2.27.1=pyhd8ed1ab_0
  - jupyterlab_widgets=3.0.10=pyhd8ed1ab_0
  - jxrlib=1.1=hd590300_3
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.5=py310hd41b1e2_1
  - krb5=1.21.2=h659d440_0
  - lazy_loader=0.4=pyhd8ed1ab_0
  - lcms2=2.16=hb7c19ff_0
  - ld_impl_linux-64=2.40=h55db66e_0
  - leidenalg=0.10.1=py310hc6cd4ac_1
  - lerc=4.0.0=h27087fc_0
  - libabseil=20240116.2=cxx17_h59595ed_0
  - libaec=1.1.3=h59595ed_0
  - libarrow=16.0.0=hefa796f_1_cpu
  - libarrow-acero=16.0.0=hac33072_1_cpu
  - libarrow-dataset=16.0.0=hac33072_1_cpu
  - libarrow-substrait=16.0.0=h7e0c224_1_cpu
  - libavif16=1.0.4=hfa3d5b6_3
  - libblas=3.9.0=20_linux64_openblas
  - libbrotlicommon=1.1.0=hd590300_1
  - libbrotlidec=1.1.0=hd590300_1
  - libbrotlienc=1.1.0=hd590300_1
  - libcblas=3.9.0=20_linux64_openblas
  - libcrc32c=1.1.2=h9c3ff4c_0
  - libcurl=8.7.1=hca28451_0
  - libdeflate=1.20=hd590300_0
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=hd590300_2
  - libevent=2.1.12=hf998b51_1
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=13.2.0=h77fa898_7
  - libgfortran-ng=13.2.0=h69a702a_7
  - libgfortran5=13.2.0=hca663fb_7
  - libgomp=13.2.0=h77fa898_7
  - libgoogle-cloud=2.23.0=h9be4e54_1
  - libgoogle-cloud-storage=2.23.0=hc7a4891_1
  - libgrpc=1.62.2=h15f2491_0
  - libhwloc=2.10.0=default_h2fb2949_1000
  - libhwy=1.1.0=h00ab1b0_0
  - libiconv=1.17=hd590300_2
  - libjpeg-turbo=3.0.0=hd590300_1
  - libjxl=0.10.2=hcae5a98_0
  - liblapack=3.9.0=20_linux64_openblas
  - libleidenalg=0.11.1=h00ab1b0_0
  - libllvm11=11.1.0=he0ac6c6_5
  - libnghttp2=1.58.0=h47da74e_1
  - libnsl=2.0.1=hd590300_0
  - libopenblas=0.3.25=pthreads_h413a1c8_0
  - libparquet=16.0.0=h6a7eafb_1_cpu
  - libpng=1.6.43=h2797004_0
  - libprotobuf=4.25.3=h08a7969_0
  - libre2-11=2023.09.01=h5a48ba9_2
  - libsodium=1.0.18=h36c2ea0_1
  - libsqlite=3.45.3=h2797004_0
  - libssh2=1.11.0=h0841786_0
  - libstdcxx-ng=13.2.0=hc0a3c3a_7
  - libthrift=0.19.0=hb90f79a_1
  - libtiff=4.6.0=h1dd3fc0_3
  - libutf8proc=2.8.0=h166bdaf_0
  - libuuid=2.38.1=h0b41bf4_0
  - libwebp-base=1.4.0=hd590300_0
  - libxcb=1.15=h0b41bf4_0
  - libxcrypt=4.4.36=hd590300_1
  - libxml2=2.12.7=hc051c1a_0
  - libzlib=1.2.13=hd590300_5
  - libzopfli=1.0.3=h9c3ff4c_0
  - llvmlite=0.38.1=py310h58363a5_0
  - locket=1.0.0=pyhd8ed1ab_0
  - lz4=4.3.3=py310h350c4a5_0
  - lz4-c=1.9.4=hcb278e6_0
  - markupsafe=2.1.5=py310h2372a71_0
  - matplotlib-base=3.8.4=py310h62c0568_0
  - matplotlib-inline=0.1.7=pyhd8ed1ab_0
  - matplotlib-scalebar=0.8.1=pyhd8ed1ab_0
  - metis=5.1.0=h59595ed_1007
  - mistune=3.0.2=pyhd8ed1ab_0
  - more-itertools=10.2.0=pyhd8ed1ab_0
  - mpfr=4.2.1=h9458935_1
  - msgpack-python=1.0.8=py310h25c7140_0
  - multidict=6.0.5=py310h2372a71_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - natsort=8.4.0=pyhd8ed1ab_0
  - nbclient=0.10.0=pyhd8ed1ab_0
  - nbconvert=7.16.4=hd8ed1ab_0
  - nbconvert-core=7.16.4=pyhd8ed1ab_0
  - nbconvert-pandoc=7.16.4=hd8ed1ab_0
  - nbformat=5.10.4=pyhd8ed1ab_0
  - ncurses=6.5=h59595ed_0
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - networkx=3.3=pyhd8ed1ab_1
  - notebook=7.1.3=pyhd8ed1ab_0
  - notebook-shim=0.2.4=pyhd8ed1ab_0
  - numba=0.55.2=py310ha5257ce_0
  - numcodecs=0.12.1=py310h76e45a6_1
  - numpy=1.22.4=py310h4ef5377_0
  - omnipath=1.0.8=pyhd8ed1ab_0
  - openjpeg=2.5.2=h488ebb8_0
  - openssl=3.3.0=hd590300_0
  - orc=2.0.0=h17fec99_1
  - overrides=7.7.0=pyhd8ed1ab_0
  - packaging=24.0=pyhd8ed1ab_0
  - pandas=1.5.1=py310h769672d_1
  - pandoc=3.2=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.8.4=pyhd8ed1ab_0
  - partd=1.4.2=pyhd8ed1ab_0
  - patsy=0.5.6=pyhd8ed1ab_0
  - pexpect=4.9.0=pyhd8ed1ab_0
  - pickleshare=0.7.5=py_1003
  - pillow=10.3.0=py310hf73ecf8_0
  - pims=0.6.1=pyhd8ed1ab_1
  - pip=24.0=pyhd8ed1ab_0
  - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
  - platformdirs=4.2.1=pyhd8ed1ab_0
  - prometheus_client=0.20.0=pyhd8ed1ab_0
  - prompt-toolkit=3.0.42=pyha770c72_0
  - prompt_toolkit=3.0.42=hd8ed1ab_0
  - psutil=5.9.8=py310h2372a71_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pure_eval=0.2.2=pyhd8ed1ab_0
  - pyarrow=16.0.0=py310h17c5347_0
  - pyarrow-core=16.0.0=py310h6f79a3a_0_cpu
  - pyarrow-hotfix=0.6=pyhd8ed1ab_0
  - pycparser=2.22=pyhd8ed1ab_0
  - pygments=2.18.0=pyhd8ed1ab_0
  - pynndescent=0.5.7=pyh6c4a22f_0
  - pyparsing=3.1.2=pyhd8ed1ab_0
  - pysocks=1.7.1=pyha2e5f31_6
  - python=3.10.14=hd12c33a_0_cpython
  - python-dateutil=2.9.0=pyhd8ed1ab_0
  - python-fastjsonschema=2.19.1=pyhd8ed1ab_0
  - python-igraph=0.10.2=py310h18f4e01_1
  - python-json-logger=2.0.7=pyhd8ed1ab_0
  - python_abi=3.10=4_cp310
  - pytz=2024.1=pyhd8ed1ab_0
  - pywavelets=1.4.1=py310h1f7b6fc_1
  - pyyaml=6.0.1=py310h2372a71_1
  - pyzmq=26.0.3=py310h6883aea_0
  - qtconsole-base=5.5.2=pyha770c72_0
  - qtpy=2.4.1=pyhd8ed1ab_0
  - rav1e=0.6.6=he8a937b_2
  - re2=2023.09.01=h7f4b329_2
  - readline=8.2=h8228510_1
  - referencing=0.35.1=pyhd8ed1ab_0
  - requests=2.31.0=pyhd8ed1ab_0
  - rfc3339-validator=0.1.4=pyhd8ed1ab_0
  - rfc3986-validator=0.1.1=pyh9f0ad1d_0
  - rpds-py=0.18.1=py310he421c4c_0
  - s2n=1.4.13=he19d79f_0
  - scanpy=1.9.2=pyhd8ed1ab_0
  - scikit-image=0.22.0=py310hcc13569_2
  - scikit-learn=1.1.3=py310h0c3af53_1
  - scipy=1.9.3=py310hdfbd76f_2
  - seaborn=0.13.2=hd8ed1ab_2
  - seaborn-base=0.13.2=pyhd8ed1ab_2
  - send2trash=1.8.3=pyh0d859eb_0
  - session-info=1.0.0=pyhd8ed1ab_0
  - setuptools=69.5.1=pyhd8ed1ab_0
  - six=1.16.0=pyh6c4a22f_0
  - slicerator=1.1.0=pyhd8ed1ab_0
  - snappy=1.2.0=hdb0a2a9_1
  - sniffio=1.3.1=pyhd8ed1ab_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.5=pyhd8ed1ab_1
  - squidpy=1.2.3=pyhd8ed1ab_0
  - stack_data=0.6.2=pyhd8ed1ab_0
  - statsmodels=0.13.2=py310hde88566_0
  - stdlib-list=0.10.0=pyhd8ed1ab_0
  - suitesparse=5.10.1=h5a4f163_3
  - svt-av1=2.0.0=h59595ed_0
  - tbb=2021.12.0=h00ab1b0_0
  - tblib=3.0.0=pyhd8ed1ab_0
  - terminado=0.18.1=pyh0d859eb_0
  - texttable=1.7.0=pyhd8ed1ab_0
  - threadpoolctl=3.5.0=pyhc1e730c_0
  - tifffile=2024.5.10=pyhd8ed1ab_0
  - tinycss2=1.3.0=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - tomli=2.0.1=pyhd8ed1ab_0
  - toolz=0.12.1=pyhd8ed1ab_0
  - tornado=6.4=py310h2372a71_0
  - tqdm=4.66.4=pyhd8ed1ab_0
  - traitlets=5.14.3=pyhd8ed1ab_0
  - typeguard=4.2.1=pyhd8ed1ab_0
  - types-python-dateutil=2.9.0.20240316=pyhd8ed1ab_0
  - typing-extensions=4.11.0=hd8ed1ab_0
  - typing_extensions=4.11.0=pyha770c72_0
  - typing_utils=0.1.0=pyhd8ed1ab_0
  - tzdata=2024a=h0c530f3_0
  - umap-learn=0.5.5=py310hff52083_1
  - unicodedata2=15.1.0=py310h2372a71_0
  - uri-template=1.3.0=pyhd8ed1ab_0
  - urllib3=2.2.1=pyhd8ed1ab_0
  - validators=0.28.1=pyhd8ed1ab_0
  - wcwidth=0.2.13=pyhd8ed1ab_0
  - webcolors=1.13=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - websocket-client=1.8.0=pyhd8ed1ab_0
  - wheel=0.43.0=pyhd8ed1ab_1
  - widgetsnbextension=4.0.10=pyhd8ed1ab_0
  - wrapt=1.16.0=py310h2372a71_0
  - xarray=2023.12.0=pyhd8ed1ab_0
  - xorg-libxau=1.0.11=hd590300_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xyzservices=2024.4.0=pyhd8ed1ab_0
  - xz=5.2.6=h166bdaf_0
  - yaml=0.2.5=h7f98852_2
  - yarl=1.9.4=py310h2372a71_0
  - zarr=2.17.1=pyhd8ed1ab_0
  - zeromq=4.3.5=h75354e8_4
  - zfp=1.0.1=h59595ed_0
  - zict=3.0.0=pyhd8ed1ab_0
  - zipp=3.17.0=pyhd8ed1ab_0
  - zlib=1.2.13=hd590300_5
  - zlib-ng=2.0.7=h0b41bf4_0
  - zstd=1.5.6=ha6fb4c9_0

I would have liked to import the environment.yml, but the link to it is broken. I'd appreciate it greatly if anyone could advise.

Version

squidpy==1.2.3

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions