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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions