Skip to content

Cannot import spateo due to dynamo-release incompatibility with anndata ≥ 0.10 #347

@NatalieCao323

Description

@NatalieCao323

Bug Description

Spateo-release v1.1.1 fails to import due to its dependency dynamo-release being incompatible with anndata v0.10+.

Error Message

ImportError: cannot import name 'read' from 'anndata'

Full Error Trace

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/anaconda3/lib/python3.11/site-packages/spateo/__init__.py", line 9, in <module>
    from . import align, cs, dd, io, pl, pp, sample_data, svg, tdr, tl
  File "/anaconda3/lib/python3.11/site-packages/spateo/pl.py", line 1, in <module>
    from .plotting import *
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/__init__.py", line 4, in <module>
    from .interactive import *
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/interactive/__init__.py", line 1, in <module>
    from .agg import cellbin_select, contours, select_polygon
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/interactive/agg.py", line 18, in <module>
    from ..static import imshow
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/static/__init__.py", line 21, in <module>
    from .three_d_plot import (
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/static/three_d_plot/__init__.py", line 1, in <module>
    from .align_plots import deformation, multi_models
  File "/anaconda3/lib/python3.11/site-packages/spateo/plotting/static/three_d_plot/align_plots.py", line 12, in <module>
    from spateo.tdr import (
  File "/anaconda3/lib/python3.11/site-packages/spateo/tdr/__init__.py", line 1, in <module>
    from .interpolations import (
  File "/anaconda3/lib/python3.11/site-packages/spateo/tdr/interpolations/__init__.py", line 3, in <module>
    from .interpolation_sparseVFC import kernel_interpolation
  File "/anaconda3/lib/python3.11/site-packages/spateo/tdr/interpolations/interpolation_sparseVFC.py", line 6, in <module>
    from dynamo.vectorfield.scVectorField import SparseVFC
  File "/anaconda3/lib/python3.11/site-packages/dynamo/__init__.py", line 13, in <module>
    from . import pp
  File "/anaconda3/lib/python3.11/site-packages/dynamo/pp.py", line 4, in <module>
    from .preprocessing import *
  File "/anaconda3/lib/python3.11/site-packages/dynamo/preprocessing/__init__.py", line 46, in <module>
    from .CnmfPreprocessor import CnmfPreprocessor
  File "/anaconda3/lib/python3.11/site-packages/dynamo/preprocessing/CnmfPreprocessor.py", line 8, in <module>
    from ..data_io import make_dir, read_h5ad
  File "/anaconda3/lib/python3.11/site-packages/dynamo/data_io.py", line 7, in <module>
    from anndata import read
ImportError: cannot import name 'read' from 'anndata'

Root Cause

This is an upstream issue in dynamo-release:

  1. dynamo-release v1.4.1 uses deprecated anndata.read() API
  2. anndata v0.10+ removed this function (Dec 2023)
  3. spateo-release v1.1.1 depends on dynamo-release
  4. Result: Spateo cannot import with modern anndata versions

The issue is in dynamo, not spateo, but it blocks all spateo users.

Environment

  • spateo-release: 1.1.1 (latest)
  • dynamo-release: 1.4.1 (dependency)
  • anndata: 0.12.2 (latest)
  • Python: 3.11.x
  • OS: macOS (also affects Linux/Windows)

Reproduction Steps

# Install latest versions
pip install spateo-release

# Try to import
import spateo as st  # Fails with ImportError

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions