Following the tutorial, I met some trouble when saving results. I tried the sample data, it worked well. When I used my own spatial data and reference, it didn't seem to work.
# In this section, we export the estimated cell abundance (summary of the posterior distribution).
adata_vis = mod.export_posterior(
adata_vis, sample_kwargs={'num_samples': 1000, 'batch_size': mod.adata.n_obs, 'use_gpu': False}
)
# Save model
mod.save(f"{run_name}", overwrite=True)
# mod = cell2location.models.Cell2location.load(f"{run_name}", adata_vis)
# Save anndata object with results
adata_file = f"{run_name}/sp_sckidneyref.h5ad"
adata_vis.write(adata_file)
adata_file
Sampling local variables, batch: 100%|██████████| 1/1 [03:00<00:00, 180.86s/it]
Sampling global variables, sample: 100%|██████████| 999/999 [02:53<00:00, 5.75it/s]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/utils.py:214, in report_write_key_on_error.<locals>.func_wrapper(elem, key, val, *args, **kwargs)
213 try:
--> 214 return func(elem, key, val, *args, **kwargs)
215 except Exception as e:
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:175, in write_elem(f, k, elem, modifiers, *args, **kwargs)
174 else:
--> 175 _REGISTRY.get_writer(dest_type, t, modifiers)(f, k, elem, *args, **kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:24, in write_spec.<locals>.decorator.<locals>.wrapper(g, k, *args, **kwargs)
22 @wraps(func)
23 def wrapper(g, k, *args, **kwargs):
---> 24 result = func(g, k, *args, **kwargs)
25 g[k].attrs.setdefault("encoding-type", spec.encoding_type)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/methods.py:307, in write_basic(f, k, elem, dataset_kwargs)
306 """Write methods which underlying library handles nativley."""
--> 307 f.create_dataset(k, data=elem, **dataset_kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/h5py/_hl/group.py:159, in Group.create_dataset(self, name, shape, dtype, data, **kwds)
158 parent_path, name = name.rsplit(b'/', 1)
--> 159 group = self.require_group(parent_path)
161 dsid = dataset.make_new_dset(group, shape, dtype, data, name, **kwds)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/h5py/_hl/group.py:316, in Group.require_group(self, name)
315 if not isinstance(grp, Group):
--> 316 raise TypeError("Incompatible object (%s) already exists" % grp.__class__.__name__)
317 return grp
TypeError: Incompatible object (Dataset) already exists
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
Cell In[33], line 13
9 # mod = cell2location.models.Cell2location.load(f"{run_name}", adata_vis)
10
11 # Save anndata object with results
12 adata_file = f"{run_name}/sp_sckidneyref.h5ad"
---> 13 adata_vis.write(adata_file)
14 adata_file
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_core/anndata.py:1918, in AnnData.write_h5ad(self, filename, compression, compression_opts, force_dense, as_dense)
1915 if filename is None:
1916 filename = self.filename
-> 1918 _write_h5ad(
1919 Path(filename),
1920 self,
1921 compression=compression,
1922 compression_opts=compression_opts,
1923 force_dense=force_dense,
1924 as_dense=as_dense,
1925 )
1927 if self.isbacked:
1928 self.file.filename = filename
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/h5ad.py:100, in write_h5ad(filepath, adata, force_dense, as_dense, dataset_kwargs, **kwargs)
98 write_elem(f, "obs", adata.obs, dataset_kwargs=dataset_kwargs)
99 write_elem(f, "var", adata.var, dataset_kwargs=dataset_kwargs)
--> 100 write_elem(f, "obsm", dict(adata.obsm), dataset_kwargs=dataset_kwargs)
101 write_elem(f, "varm", dict(adata.varm), dataset_kwargs=dataset_kwargs)
102 write_elem(f, "obsp", dict(adata.obsp), dataset_kwargs=dataset_kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/utils.py:214, in report_write_key_on_error.<locals>.func_wrapper(elem, key, val, *args, **kwargs)
211 @wraps(func)
212 def func_wrapper(elem, key, val, *args, **kwargs):
213 try:
--> 214 return func(elem, key, val, *args, **kwargs)
215 except Exception as e:
216 if "Above error raised while writing key" in format(e):
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:175, in write_elem(f, k, elem, modifiers, *args, **kwargs)
171 _REGISTRY.get_writer(dest_type, (t, elem.dtype.kind), modifiers)(
172 f, k, elem, *args, **kwargs
173 )
174 else:
--> 175 _REGISTRY.get_writer(dest_type, t, modifiers)(f, k, elem, *args, **kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:24, in write_spec.<locals>.decorator.<locals>.wrapper(g, k, *args, **kwargs)
22 @wraps(func)
23 def wrapper(g, k, *args, **kwargs):
---> 24 result = func(g, k, *args, **kwargs)
25 g[k].attrs.setdefault("encoding-type", spec.encoding_type)
26 g[k].attrs.setdefault("encoding-version", spec.encoding_version)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/methods.py:281, in write_mapping(f, k, v, dataset_kwargs)
279 g = f.create_group(k)
280 for sub_k, sub_v in v.items():
--> 281 write_elem(g, sub_k, sub_v, dataset_kwargs=dataset_kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/utils.py:214, in report_write_key_on_error.<locals>.func_wrapper(elem, key, val, *args, **kwargs)
211 @wraps(func)
212 def func_wrapper(elem, key, val, *args, **kwargs):
213 try:
--> 214 return func(elem, key, val, *args, **kwargs)
215 except Exception as e:
216 if "Above error raised while writing key" in format(e):
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:175, in write_elem(f, k, elem, modifiers, *args, **kwargs)
171 _REGISTRY.get_writer(dest_type, (t, elem.dtype.kind), modifiers)(
172 f, k, elem, *args, **kwargs
173 )
174 else:
--> 175 _REGISTRY.get_writer(dest_type, t, modifiers)(f, k, elem, *args, **kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/registry.py:24, in write_spec.<locals>.decorator.<locals>.wrapper(g, k, *args, **kwargs)
22 @wraps(func)
23 def wrapper(g, k, *args, **kwargs):
---> 24 result = func(g, k, *args, **kwargs)
25 g[k].attrs.setdefault("encoding-type", spec.encoding_type)
26 g[k].attrs.setdefault("encoding-version", spec.encoding_version)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/specs/methods.py:514, in write_dataframe(f, key, df, dataset_kwargs)
511 write_elem(group, index_name, df.index._values, dataset_kwargs=dataset_kwargs)
512 for colname, series in df.items():
513 # TODO: this should write the "true" representation of the series (i.e. the underlying array or ndarray depending)
--> 514 write_elem(group, colname, series._values, dataset_kwargs=dataset_kwargs)
File /opt/conda/envs/cell2loc/lib/python3.9/site-packages/anndata/_io/utils.py:220, in report_write_key_on_error.<locals>.func_wrapper(elem, key, val, *args, **kwargs)
218 else:
219 parent = _get_parent(elem)
--> 220 raise type(e)(
221 f"{e}\n\n"
222 f"Above error raised while writing key {key!r} of {type(elem)} "
223 f"to {parent}"
224 ) from e
TypeError: Incompatible object (Dataset) already exists
Above error raised while writing key 'meanscell_abundance_w_sf_dPT/DTL' of <class 'h5py._hl.group.Group'> to /
I want to know if the "adata.varm['means_cell_abundance_w_sf']" is neccesary for downtream analysis, or I can just delete it and save others.
Following the tutorial, I met some trouble when saving results. I tried the sample data, it worked well. When I used my own spatial data and reference, it didn't seem to work.
I want to know if the "adata.varm['means_cell_abundance_w_sf']" is neccesary for downtream analysis, or I can just delete it and save others.