Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

calculate_image_features() error with tutorial data #826

Open
kimsjune opened this issue May 14, 2024 · 2 comments
Open

calculate_image_features() error with tutorial data #826

kimsjune opened this issue May 14, 2024 · 2 comments
Assignees

Comments

@kimsjune
Copy link

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

@kimsjune
Copy link
Author

kimsjune commented May 17, 2024

The function in question runs without error when the for loop is removed:

sq.im.calculate_image_features(
        adata,
        img.compute(),
        features = "summary",
        key_added = "features",
        layer = "image",
        n_jobs = 4
)

From the documentation, scale doesn't seem to be one of available options. Any value for scale other than 1 results in an error.

@ansonkn
Copy link

ansonkn commented Aug 1, 2024

Thank you for developing this wonderful package. Having the same problem here. Using squidpy version 1.2.2

@timtreis timtreis assigned timtreis and unassigned michalk8 Oct 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants