Writing spatialdata object fails in v0.7 #1108

Description

@lucas-diedrich

Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

Steps to reproduce

# python 3.12, 3.13
pip install spatialdata
importspatialdataassdsdata=sd.datasets.blobs()
sdata.write("./blobs.zarr")

Returns the following error:

python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
Traceback (most recent call last):
File "<string>", line 1, in<module>
File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
self._write_element(
File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
write_image(
File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
_write_raster(
File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
_write_raster_dataarray(
File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
write_single_scale_ngff(
File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
dask_delayed_jobs = _write_pyramid_to_zarr(
^^^^^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
da.to_zarr(
File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
z = root.create_array(name=array_name, **zarr_array_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
self._sync(
File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
return sync(
^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
raise return_result
File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
return await coro
^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
return await create_array(
^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
return await init_array(
^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
meta = AsyncArray._create_metadata_v3(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
chunk_shape_parsed = parse_shapelike(chunk_shape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
raise TypeError(msg)
TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

Session Info

spatialdata 0.7.2
---- ----
pyct 0.6.0
multipledispatch 1.0.0 (0.6.0)
pandas 2.3.3
wrapt 2.1.2
universal_pathlib 0.3.10
six 1.17.0
zstandard 0.25.0
pyproj 3.7.2
xarray-spatial 0.9.6
pytz 2026.1.post1
pooch 1.9.0 (v1.9.0)
shapely 2.1.2
scipy 1.17.1
cloudpickle 3.1.2
rich 15.0.0
Jinja2 3.1.6
charset-normalizer 3.4.7
h5py 3.16.0
spatial_image 1.2.3
numba 0.65.0
fsspec 2026.3.0
natsort 8.4.0
requests 2.33.1
typing_extensions 4.15.0
scverse-misc 0.0.3
idna 3.12
llvmlite 0.47.0
MarkupSafe 3.0.3
datashader 0.19.0
legacy-api-wrap 1.5
setuptools 82.0.1
dask 2026.1.1
scikit-image 0.26.0
psutil 7.2.2
platformdirs 4.9.6
dask-image 2025.11.0
tblib 3.2.2
anndata 0.12.11
tqdm 4.67.3
packaging 26.1
ome-zarr 0.15.0
urllib3 2.6.3
multiscale_spatial_image 2.0.3
donfig 0.8.1.post1
lazy-loader 0.5
numpy 2.4.4
session-info2 0.4.1
google-crc32c 1.8.0
narwhals 2.20.0
Deprecated 1.3.1
toolz 1.1.0
geopandas 1.1.3
python-dateutil 2.9.0.post0
pathlib_abc 0.5.2
zarr 3.1.6
PyYAML 6.0.3
pyarrow 24.0.0
networkx 3.6.1
annsel 0.1.2
more-itertools 11.0.2
xarray 2026.4.0
certifi 2026.4.22 (2026.04.22)
xarray-dataclass 3.0.0
msgpack 1.1.2
numcodecs 0.16.5
---- ----
Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
OS macOS-26.3-arm64-arm-64bit
Updated 2026-04-22 12:24

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

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Writing spatialdata object fails in v0.7 #1108

      Description

      @lucas-diedrich

      Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

      Steps to reproduce

      # python 3.12, 3.13
      pip install spatialdata
      importspatialdataassdsdata=sd.datasets.blobs()
      sdata.write("./blobs.zarr")

      Returns the following error:

      python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
      Traceback (most recent call last):
      File "<string>", line 1, in<module>
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
      return f(*args, **kwargs)
      ^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
      self._write_element(
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
      write_image(
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
      _write_raster(
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
      _write_raster_dataarray(
      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
      write_single_scale_ngff(
      File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
      dask_delayed_jobs = _write_pyramid_to_zarr(
      ^^^^^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
      da.to_zarr(
      File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
      z = root.create_array(name=array_name, **zarr_array_kwargs)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
      self._sync(
      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
      return sync(
      ^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
      raise return_result
      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
      return await coro
      ^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
      return await create_array(
      ^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
      return await init_array(
      ^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
      meta = AsyncArray._create_metadata_v3(
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
      chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
      chunk_shape_parsed = parse_shapelike(chunk_shape)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
      raise TypeError(msg)
      TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

      Session Info

      spatialdata 0.7.2
      ---- ----
      pyct 0.6.0
      multipledispatch 1.0.0 (0.6.0)
      pandas 2.3.3
      wrapt 2.1.2
      universal_pathlib 0.3.10
      six 1.17.0
      zstandard 0.25.0
      pyproj 3.7.2
      xarray-spatial 0.9.6
      pytz 2026.1.post1
      pooch 1.9.0 (v1.9.0)
      shapely 2.1.2
      scipy 1.17.1
      cloudpickle 3.1.2
      rich 15.0.0
      Jinja2 3.1.6
      charset-normalizer 3.4.7
      h5py 3.16.0
      spatial_image 1.2.3
      numba 0.65.0
      fsspec 2026.3.0
      natsort 8.4.0
      requests 2.33.1
      typing_extensions 4.15.0
      scverse-misc 0.0.3
      idna 3.12
      llvmlite 0.47.0
      MarkupSafe 3.0.3
      datashader 0.19.0
      legacy-api-wrap 1.5
      setuptools 82.0.1
      dask 2026.1.1
      scikit-image 0.26.0
      psutil 7.2.2
      platformdirs 4.9.6
      dask-image 2025.11.0
      tblib 3.2.2
      anndata 0.12.11
      tqdm 4.67.3
      packaging 26.1
      ome-zarr 0.15.0
      urllib3 2.6.3
      multiscale_spatial_image 2.0.3
      donfig 0.8.1.post1
      lazy-loader 0.5
      numpy 2.4.4
      session-info2 0.4.1
      google-crc32c 1.8.0
      narwhals 2.20.0
      Deprecated 1.3.1
      toolz 1.1.0
      geopandas 1.1.3
      python-dateutil 2.9.0.post0
      pathlib_abc 0.5.2
      zarr 3.1.6
      PyYAML 6.0.3
      pyarrow 24.0.0
      networkx 3.6.1
      annsel 0.1.2
      more-itertools 11.0.2
      xarray 2026.4.0
      certifi 2026.4.22 (2026.04.22)
      xarray-dataclass 3.0.0
      msgpack 1.1.2
      numcodecs 0.16.5
      ---- ----
      Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
      OS macOS-26.3-arm64-arm-64bit
      Updated 2026-04-22 12:24
      

      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

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Writing spatialdata object fails in v0.7 #1108

          Description

          @lucas-diedrich

          Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

          Steps to reproduce

          # python 3.12, 3.13
          pip install spatialdata
          importspatialdataassdsdata=sd.datasets.blobs()
          sdata.write("./blobs.zarr")

          Returns the following error:

          python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
          Traceback (most recent call last):
          File "<string>", line 1, in<module>
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
          return f(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
          self._write_element(
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
          write_image(
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
          _write_raster(
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
          _write_raster_dataarray(
          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
          write_single_scale_ngff(
          File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
          dask_delayed_jobs = _write_pyramid_to_zarr(
          ^^^^^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
          da.to_zarr(
          File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
          z = root.create_array(name=array_name, **zarr_array_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
          self._sync(
          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
          return sync(
          ^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
          raise return_result
          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
          return await coro
          ^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
          return await create_array(
          ^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
          return await init_array(
          ^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
          meta = AsyncArray._create_metadata_v3(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
          chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
          chunk_shape_parsed = parse_shapelike(chunk_shape)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
          raise TypeError(msg)
          TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

          Session Info

          spatialdata 0.7.2
          ---- ----
          pyct 0.6.0
          multipledispatch 1.0.0 (0.6.0)
          pandas 2.3.3
          wrapt 2.1.2
          universal_pathlib 0.3.10
          six 1.17.0
          zstandard 0.25.0
          pyproj 3.7.2
          xarray-spatial 0.9.6
          pytz 2026.1.post1
          pooch 1.9.0 (v1.9.0)
          shapely 2.1.2
          scipy 1.17.1
          cloudpickle 3.1.2
          rich 15.0.0
          Jinja2 3.1.6
          charset-normalizer 3.4.7
          h5py 3.16.0
          spatial_image 1.2.3
          numba 0.65.0
          fsspec 2026.3.0
          natsort 8.4.0
          requests 2.33.1
          typing_extensions 4.15.0
          scverse-misc 0.0.3
          idna 3.12
          llvmlite 0.47.0
          MarkupSafe 3.0.3
          datashader 0.19.0
          legacy-api-wrap 1.5
          setuptools 82.0.1
          dask 2026.1.1
          scikit-image 0.26.0
          psutil 7.2.2
          platformdirs 4.9.6
          dask-image 2025.11.0
          tblib 3.2.2
          anndata 0.12.11
          tqdm 4.67.3
          packaging 26.1
          ome-zarr 0.15.0
          urllib3 2.6.3
          multiscale_spatial_image 2.0.3
          donfig 0.8.1.post1
          lazy-loader 0.5
          numpy 2.4.4
          session-info2 0.4.1
          google-crc32c 1.8.0
          narwhals 2.20.0
          Deprecated 1.3.1
          toolz 1.1.0
          geopandas 1.1.3
          python-dateutil 2.9.0.post0
          pathlib_abc 0.5.2
          zarr 3.1.6
          PyYAML 6.0.3
          pyarrow 24.0.0
          networkx 3.6.1
          annsel 0.1.2
          more-itertools 11.0.2
          xarray 2026.4.0
          certifi 2026.4.22 (2026.04.22)
          xarray-dataclass 3.0.0
          msgpack 1.1.2
          numcodecs 0.16.5
          ---- ----
          Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
          OS macOS-26.3-arm64-arm-64bit
          Updated 2026-04-22 12:24
          

          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

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Writing spatialdata object fails in v0.7 #1108

              Description

              @lucas-diedrich

              Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

              Steps to reproduce

              # python 3.12, 3.13
              pip install spatialdata
              importspatialdataassdsdata=sd.datasets.blobs()
              sdata.write("./blobs.zarr")

              Returns the following error:

              python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
              Traceback (most recent call last):
              File "<string>", line 1, in<module>
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
              return f(*args, **kwargs)
              ^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
              self._write_element(
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
              write_image(
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
              _write_raster(
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
              _write_raster_dataarray(
              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
              write_single_scale_ngff(
              File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
              dask_delayed_jobs = _write_pyramid_to_zarr(
              ^^^^^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
              da.to_zarr(
              File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
              z = root.create_array(name=array_name, **zarr_array_kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
              self._sync(
              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
              return sync(
              ^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
              raise return_result
              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
              return await coro
              ^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
              return await create_array(
              ^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
              return await init_array(
              ^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
              meta = AsyncArray._create_metadata_v3(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
              chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
              chunk_shape_parsed = parse_shapelike(chunk_shape)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
              raise TypeError(msg)
              TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

              Session Info

              spatialdata 0.7.2
              ---- ----
              pyct 0.6.0
              multipledispatch 1.0.0 (0.6.0)
              pandas 2.3.3
              wrapt 2.1.2
              universal_pathlib 0.3.10
              six 1.17.0
              zstandard 0.25.0
              pyproj 3.7.2
              xarray-spatial 0.9.6
              pytz 2026.1.post1
              pooch 1.9.0 (v1.9.0)
              shapely 2.1.2
              scipy 1.17.1
              cloudpickle 3.1.2
              rich 15.0.0
              Jinja2 3.1.6
              charset-normalizer 3.4.7
              h5py 3.16.0
              spatial_image 1.2.3
              numba 0.65.0
              fsspec 2026.3.0
              natsort 8.4.0
              requests 2.33.1
              typing_extensions 4.15.0
              scverse-misc 0.0.3
              idna 3.12
              llvmlite 0.47.0
              MarkupSafe 3.0.3
              datashader 0.19.0
              legacy-api-wrap 1.5
              setuptools 82.0.1
              dask 2026.1.1
              scikit-image 0.26.0
              psutil 7.2.2
              platformdirs 4.9.6
              dask-image 2025.11.0
              tblib 3.2.2
              anndata 0.12.11
              tqdm 4.67.3
              packaging 26.1
              ome-zarr 0.15.0
              urllib3 2.6.3
              multiscale_spatial_image 2.0.3
              donfig 0.8.1.post1
              lazy-loader 0.5
              numpy 2.4.4
              session-info2 0.4.1
              google-crc32c 1.8.0
              narwhals 2.20.0
              Deprecated 1.3.1
              toolz 1.1.0
              geopandas 1.1.3
              python-dateutil 2.9.0.post0
              pathlib_abc 0.5.2
              zarr 3.1.6
              PyYAML 6.0.3
              pyarrow 24.0.0
              networkx 3.6.1
              annsel 0.1.2
              more-itertools 11.0.2
              xarray 2026.4.0
              certifi 2026.4.22 (2026.04.22)
              xarray-dataclass 3.0.0
              msgpack 1.1.2
              numcodecs 0.16.5
              ---- ----
              Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
              OS macOS-26.3-arm64-arm-64bit
              Updated 2026-04-22 12:24
              

              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

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Writing spatialdata object fails in v0.7 #1108

                  Description

                  @lucas-diedrich

                  Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

                  Steps to reproduce

                  # python 3.12, 3.13
                  pip install spatialdata
                  importspatialdataassdsdata=sd.datasets.blobs()
                  sdata.write("./blobs.zarr")

                  Returns the following error:

                  python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
                  Traceback (most recent call last):
                  File "<string>", line 1, in<module>
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
                  return f(*args, **kwargs)
                  ^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
                  self._write_element(
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
                  write_image(
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
                  _write_raster(
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
                  _write_raster_dataarray(
                  File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
                  write_single_scale_ngff(
                  File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
                  dask_delayed_jobs = _write_pyramid_to_zarr(
                  ^^^^^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
                  da.to_zarr(
                  File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
                  z = root.create_array(name=array_name, **zarr_array_kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
                  self._sync(
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
                  return sync(
                  ^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
                  raise return_result
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
                  return await coro
                  ^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
                  return await create_array(
                  ^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
                  return await init_array(
                  ^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
                  meta = AsyncArray._create_metadata_v3(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
                  chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
                  chunk_shape_parsed = parse_shapelike(chunk_shape)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                  File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
                  raise TypeError(msg)
                  TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

                  Session Info

                  spatialdata 0.7.2
                  ---- ----
                  pyct 0.6.0
                  multipledispatch 1.0.0 (0.6.0)
                  pandas 2.3.3
                  wrapt 2.1.2
                  universal_pathlib 0.3.10
                  six 1.17.0
                  zstandard 0.25.0
                  pyproj 3.7.2
                  xarray-spatial 0.9.6
                  pytz 2026.1.post1
                  pooch 1.9.0 (v1.9.0)
                  shapely 2.1.2
                  scipy 1.17.1
                  cloudpickle 3.1.2
                  rich 15.0.0
                  Jinja2 3.1.6
                  charset-normalizer 3.4.7
                  h5py 3.16.0
                  spatial_image 1.2.3
                  numba 0.65.0
                  fsspec 2026.3.0
                  natsort 8.4.0
                  requests 2.33.1
                  typing_extensions 4.15.0
                  scverse-misc 0.0.3
                  idna 3.12
                  llvmlite 0.47.0
                  MarkupSafe 3.0.3
                  datashader 0.19.0
                  legacy-api-wrap 1.5
                  setuptools 82.0.1
                  dask 2026.1.1
                  scikit-image 0.26.0
                  psutil 7.2.2
                  platformdirs 4.9.6
                  dask-image 2025.11.0
                  tblib 3.2.2
                  anndata 0.12.11
                  tqdm 4.67.3
                  packaging 26.1
                  ome-zarr 0.15.0
                  urllib3 2.6.3
                  multiscale_spatial_image 2.0.3
                  donfig 0.8.1.post1
                  lazy-loader 0.5
                  numpy 2.4.4
                  session-info2 0.4.1
                  google-crc32c 1.8.0
                  narwhals 2.20.0
                  Deprecated 1.3.1
                  toolz 1.1.0
                  geopandas 1.1.3
                  python-dateutil 2.9.0.post0
                  pathlib_abc 0.5.2
                  zarr 3.1.6
                  PyYAML 6.0.3
                  pyarrow 24.0.0
                  networkx 3.6.1
                  annsel 0.1.2
                  more-itertools 11.0.2
                  xarray 2026.4.0
                  certifi 2026.4.22 (2026.04.22)
                  xarray-dataclass 3.0.0
                  msgpack 1.1.2
                  numcodecs 0.16.5
                  ---- ----
                  Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
                  OS macOS-26.3-arm64-arm-64bit
                  Updated 2026-04-22 12:24
                  

                  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

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Writing spatialdata object fails in v0.7 #1108

                      Description

                      @lucas-diedrich

                      Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

                      Steps to reproduce

                      # python 3.12, 3.13
                      pip install spatialdata
                      importspatialdataassdsdata=sd.datasets.blobs()
                      sdata.write("./blobs.zarr")

                      Returns the following error:

                      python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
                      Traceback (most recent call last):
                      File "<string>", line 1, in<module>
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
                      return f(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
                      self._write_element(
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
                      write_image(
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
                      _write_raster(
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
                      _write_raster_dataarray(
                      File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
                      write_single_scale_ngff(
                      File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
                      dask_delayed_jobs = _write_pyramid_to_zarr(
                      ^^^^^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
                      da.to_zarr(
                      File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
                      z = root.create_array(name=array_name, **zarr_array_kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
                      self._sync(
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
                      return sync(
                      ^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
                      raise return_result
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
                      return await coro
                      ^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
                      return await create_array(
                      ^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
                      return await init_array(
                      ^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
                      meta = AsyncArray._create_metadata_v3(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
                      chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
                      chunk_shape_parsed = parse_shapelike(chunk_shape)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
                      raise TypeError(msg)
                      TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

                      Session Info

                      spatialdata 0.7.2
                      ---- ----
                      pyct 0.6.0
                      multipledispatch 1.0.0 (0.6.0)
                      pandas 2.3.3
                      wrapt 2.1.2
                      universal_pathlib 0.3.10
                      six 1.17.0
                      zstandard 0.25.0
                      pyproj 3.7.2
                      xarray-spatial 0.9.6
                      pytz 2026.1.post1
                      pooch 1.9.0 (v1.9.0)
                      shapely 2.1.2
                      scipy 1.17.1
                      cloudpickle 3.1.2
                      rich 15.0.0
                      Jinja2 3.1.6
                      charset-normalizer 3.4.7
                      h5py 3.16.0
                      spatial_image 1.2.3
                      numba 0.65.0
                      fsspec 2026.3.0
                      natsort 8.4.0
                      requests 2.33.1
                      typing_extensions 4.15.0
                      scverse-misc 0.0.3
                      idna 3.12
                      llvmlite 0.47.0
                      MarkupSafe 3.0.3
                      datashader 0.19.0
                      legacy-api-wrap 1.5
                      setuptools 82.0.1
                      dask 2026.1.1
                      scikit-image 0.26.0
                      psutil 7.2.2
                      platformdirs 4.9.6
                      dask-image 2025.11.0
                      tblib 3.2.2
                      anndata 0.12.11
                      tqdm 4.67.3
                      packaging 26.1
                      ome-zarr 0.15.0
                      urllib3 2.6.3
                      multiscale_spatial_image 2.0.3
                      donfig 0.8.1.post1
                      lazy-loader 0.5
                      numpy 2.4.4
                      session-info2 0.4.1
                      google-crc32c 1.8.0
                      narwhals 2.20.0
                      Deprecated 1.3.1
                      toolz 1.1.0
                      geopandas 1.1.3
                      python-dateutil 2.9.0.post0
                      pathlib_abc 0.5.2
                      zarr 3.1.6
                      PyYAML 6.0.3
                      pyarrow 24.0.0
                      networkx 3.6.1
                      annsel 0.1.2
                      more-itertools 11.0.2
                      xarray 2026.4.0
                      certifi 2026.4.22 (2026.04.22)
                      xarray-dataclass 3.0.0
                      msgpack 1.1.2
                      numcodecs 0.16.5
                      ---- ----
                      Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
                      OS macOS-26.3-arm64-arm-64bit
                      Updated 2026-04-22 12:24
                      

                      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

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Writing spatialdata object fails in v0.7 #1108

                          Description

                          @lucas-diedrich

                          Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

                          Steps to reproduce

                          # python 3.12, 3.13
                          pip install spatialdata
                          importspatialdataassdsdata=sd.datasets.blobs()
                          sdata.write("./blobs.zarr")

                          Returns the following error:

                          python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
                          Traceback (most recent call last):
                          File "<string>", line 1, in<module>
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
                          return f(*args, **kwargs)
                          ^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
                          self._write_element(
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
                          write_image(
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
                          _write_raster(
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
                          _write_raster_dataarray(
                          File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
                          write_single_scale_ngff(
                          File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
                          dask_delayed_jobs = _write_pyramid_to_zarr(
                          ^^^^^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
                          da.to_zarr(
                          File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
                          z = root.create_array(name=array_name, **zarr_array_kwargs)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
                          self._sync(
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
                          return sync(
                          ^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
                          raise return_result
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
                          return await coro
                          ^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
                          return await create_array(
                          ^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
                          return await init_array(
                          ^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
                          meta = AsyncArray._create_metadata_v3(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
                          chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
                          chunk_shape_parsed = parse_shapelike(chunk_shape)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                          File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
                          raise TypeError(msg)
                          TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

                          Session Info

                          spatialdata 0.7.2
                          ---- ----
                          pyct 0.6.0
                          multipledispatch 1.0.0 (0.6.0)
                          pandas 2.3.3
                          wrapt 2.1.2
                          universal_pathlib 0.3.10
                          six 1.17.0
                          zstandard 0.25.0
                          pyproj 3.7.2
                          xarray-spatial 0.9.6
                          pytz 2026.1.post1
                          pooch 1.9.0 (v1.9.0)
                          shapely 2.1.2
                          scipy 1.17.1
                          cloudpickle 3.1.2
                          rich 15.0.0
                          Jinja2 3.1.6
                          charset-normalizer 3.4.7
                          h5py 3.16.0
                          spatial_image 1.2.3
                          numba 0.65.0
                          fsspec 2026.3.0
                          natsort 8.4.0
                          requests 2.33.1
                          typing_extensions 4.15.0
                          scverse-misc 0.0.3
                          idna 3.12
                          llvmlite 0.47.0
                          MarkupSafe 3.0.3
                          datashader 0.19.0
                          legacy-api-wrap 1.5
                          setuptools 82.0.1
                          dask 2026.1.1
                          scikit-image 0.26.0
                          psutil 7.2.2
                          platformdirs 4.9.6
                          dask-image 2025.11.0
                          tblib 3.2.2
                          anndata 0.12.11
                          tqdm 4.67.3
                          packaging 26.1
                          ome-zarr 0.15.0
                          urllib3 2.6.3
                          multiscale_spatial_image 2.0.3
                          donfig 0.8.1.post1
                          lazy-loader 0.5
                          numpy 2.4.4
                          session-info2 0.4.1
                          google-crc32c 1.8.0
                          narwhals 2.20.0
                          Deprecated 1.3.1
                          toolz 1.1.0
                          geopandas 1.1.3
                          python-dateutil 2.9.0.post0
                          pathlib_abc 0.5.2
                          zarr 3.1.6
                          PyYAML 6.0.3
                          pyarrow 24.0.0
                          networkx 3.6.1
                          annsel 0.1.2
                          more-itertools 11.0.2
                          xarray 2026.4.0
                          certifi 2026.4.22 (2026.04.22)
                          xarray-dataclass 3.0.0
                          msgpack 1.1.2
                          numcodecs 0.16.5
                          ---- ----
                          Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
                          OS macOS-26.3-arm64-arm-64bit
                          Updated 2026-04-22 12:24
                          

                          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

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Writing spatialdata object fails in v0.7 #1108

                              Description

                              @lucas-diedrich

                              Hi! I currently get an error when trying to write spatialdata objects (version 0.7.2) on MacOS and Ubuntu. The write command fails for spatialdata 0.7.0 as well but not for spatialdata 0.6

                              Steps to reproduce

                              # python 3.12, 3.13
                              pip install spatialdata
                              importspatialdataassdsdata=sd.datasets.blobs()
                              sdata.write("./blobs.zarr")

                              Returns the following error:

                              python -c 'import spatialdata as sd; sdata = sd.datasets.blobs(); sdata.write("./blobs.sdata.zarr")'
                              Traceback (most recent call last):
                              File "<string>", line 1, in<module>
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_utils.py", line 263, in wrapper
                              return f(*args, **kwargs)
                              ^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1176, in write
                              self._write_element(
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_core/spatialdata.py", line 1229, in _write_element
                              write_image(
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 371, in write_image
                              _write_raster(
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 197, in _write_raster
                              _write_raster_dataarray(
                              File "mamba-env/lib/python3.12/site-packages/spatialdata/_io/io_raster.py", line 275, in _write_raster_dataarray
                              write_single_scale_ngff(
                              File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 648, in write_image
                              dask_delayed_jobs = _write_pyramid_to_zarr(
                              ^^^^^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/ome_zarr/writer.py", line 751, in _write_pyramid_to_zarr
                              da.to_zarr(
                              File "mamba-env/lib/python3.12/site-packages/dask/array/core.py", line 4101, in to_zarr
                              z = root.create_array(name=array_name, **zarr_array_kwargs)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 2739, in create_array
                              self._sync(
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 204, in _sync
                              return sync(
                              ^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 159, in sync
                              raise return_result
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/sync.py", line 119, in _runner
                              return await coro
                              ^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/group.py", line 1142, in create_array
                              return await create_array(
                              ^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4907, in create_array
                              return await init_array(
                              ^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 4721, in init_array
                              meta = AsyncArray._create_metadata_v3(
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/array.py", line 777, in _create_metadata_v3
                              chunk_grid_parsed = RegularChunkGrid(chunk_shape=chunk_shape)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/chunk_grids.py", line 185, in __init__
                              chunk_shape_parsed = parse_shapelike(chunk_shape)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                              File "mamba-env/lib/python3.12/site-packages/zarr/core/common.py", line 204, in parse_shapelike
                              raise TypeError(msg)
                              TypeError: Expected an iterable of integers. Got ((3,), (512,), (512,)) instead.

                              Session Info

                              spatialdata 0.7.2
                              ---- ----
                              pyct 0.6.0
                              multipledispatch 1.0.0 (0.6.0)
                              pandas 2.3.3
                              wrapt 2.1.2
                              universal_pathlib 0.3.10
                              six 1.17.0
                              zstandard 0.25.0
                              pyproj 3.7.2
                              xarray-spatial 0.9.6
                              pytz 2026.1.post1
                              pooch 1.9.0 (v1.9.0)
                              shapely 2.1.2
                              scipy 1.17.1
                              cloudpickle 3.1.2
                              rich 15.0.0
                              Jinja2 3.1.6
                              charset-normalizer 3.4.7
                              h5py 3.16.0
                              spatial_image 1.2.3
                              numba 0.65.0
                              fsspec 2026.3.0
                              natsort 8.4.0
                              requests 2.33.1
                              typing_extensions 4.15.0
                              scverse-misc 0.0.3
                              idna 3.12
                              llvmlite 0.47.0
                              MarkupSafe 3.0.3
                              datashader 0.19.0
                              legacy-api-wrap 1.5
                              setuptools 82.0.1
                              dask 2026.1.1
                              scikit-image 0.26.0
                              psutil 7.2.2
                              platformdirs 4.9.6
                              dask-image 2025.11.0
                              tblib 3.2.2
                              anndata 0.12.11
                              tqdm 4.67.3
                              packaging 26.1
                              ome-zarr 0.15.0
                              urllib3 2.6.3
                              multiscale_spatial_image 2.0.3
                              donfig 0.8.1.post1
                              lazy-loader 0.5
                              numpy 2.4.4
                              session-info2 0.4.1
                              google-crc32c 1.8.0
                              narwhals 2.20.0
                              Deprecated 1.3.1
                              toolz 1.1.0
                              geopandas 1.1.3
                              python-dateutil 2.9.0.post0
                              pathlib_abc 0.5.2
                              zarr 3.1.6
                              PyYAML 6.0.3
                              pyarrow 24.0.0
                              networkx 3.6.1
                              annsel 0.1.2
                              more-itertools 11.0.2
                              xarray 2026.4.0
                              certifi 2026.4.22 (2026.04.22)
                              xarray-dataclass 3.0.0
                              msgpack 1.1.2
                              numcodecs 0.16.5
                              ---- ----
                              Python 3.12.13 | packaged by conda-forge | (main, Mar 5 2026, 17:06:14) [Clang 19.1.7 ]
                              OS macOS-26.3-arm64-arm-64bit
                              Updated 2026-04-22 12:24
                              

                              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