# Error when saving adata with adata.write\_h5ad(): "Above error raised while writing key 'names' of to /"

**URL:** <https://discourse.scverse.org/t/error-when-saving-adata-with-adata-write-h5ad-above-error-raised-while-writing-key-names-of-to/1737>\
**Category:** scanpy\
**Created:** [September 1, 2023, 4:07pm UTC](https://discourse.scverse.org/t/error-when-saving-adata-with-adata-write-h5ad-above-error-raised-while-writing-key-names-of-to/1737 "2023-09-01T16:07:11Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hmnzo5gy](https://avatars.discourse-cdn.com/v4/letter/h/9e8a1a/32.png) [@hmnzo5gy](https://discourse.scverse.org/u/hmnzo5gy)\
**Post date:** [September 1, 2023, 4:07pm UTC](https://discourse.scverse.org/t/error-when-saving-adata-with-adata-write-h5ad-above-error-raised-while-writing-key-names-of-to/1737/1 "2023-09-01T16:07:11Z")

</div>

When I am trying to save anndata with adata.write\_h5ad(), I am encountering the following error:

```auto
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File ~/miniconda3/envs/scanpy/lib/python3.11/site-packages/anndata/_io/utils.py:246, in report_write_key_on_error..func_wrapper(*args, **kwargs)
    245 try:
--> 246 return func(*args, **kwargs)
    247 except Exception as e:

File ~/miniconda3/envs/scanpy/lib/python3.11/site-packages/anndata/_io/specs/registry.py:311, in Writer.write_elem(self, store, k, elem, dataset_kwargs, modifiers)
    310 else:
--> 311 return write_func(store, k, elem, dataset_kwargs=dataset_kwargs)

File ~/miniconda3/envs/scanpy/lib/python3.11/site-packages/anndata/_io/specs/registry.py:52, in write_spec..decorator..wrapper(g, k, *args, **kwargs)
     50 @wraps(func)
     51 def wrapper(g, k, *args, **kwargs):
---> 52 result = func(g, k, *args, **kwargs)
     53 g[k].attrs.setdefault("encoding-type", spec.encoding_type)

File ~/miniconda3/envs/scanpy/lib/python3.11/site-packages/anndata/_io/specs/methods.py:415, in write_recarray(f, k, elem, _writer, dataset_kwargs)
    412 @_REGISTRY.register_write(H5Group, (np.ndarray, "V"), IOSpec("rec-array", "0.2.0"))
    413 @_REGISTRY.register_write(H5Group, np.recarray, IOSpec("rec-array", "0.2.0"))
    414 def write_recarray(f, k, elem, _writer, dataset_kwargs=MappingProxyType({})):
--> 415 f.create_dataset(k, data=_to_hdf5_vlen_strings(elem), **dataset_kwargs)

File ~/miniconda3/envs/scanpy/lib/python3.11/site-packages/h5py/_hl/group.py:183, in Group.create_dataset(self, name, shape, dtype, data, **kwds)
    181 group = self.require_group(parent_path)
...
    233 ) from e

TypeError: Can't implicitly convert non-string objects to strings

Above error raised while writing key 'names' of to /

```

I don’t know what is the key **names** mentioned here and what may have caused the problem.  
Thanks.

---

<div class="post-metadata">

**Author:** ![hmnzo5gy](https://avatars.discourse-cdn.com/v4/letter/h/9e8a1a/32.png) [@hmnzo5gy](https://discourse.scverse.org/u/hmnzo5gy)\
**Post date:** [September 5, 2023, 11:44pm UTC](https://discourse.scverse.org/t/error-when-saving-adata-with-adata-write-h5ad-above-error-raised-while-writing-key-names-of-to/1737/2 "2023-09-05T23:44:54Z")

</div>

I found the source of the problem [here](https://github.com/scverse/anndata/issues/726).  
The problem arises when scanpy.tl.rank\_genes\_groups() and scanpy.tl.filter\_rank\_genes\_groups() are run. It’s resolved after deleting ‘rank\_gene\_groups\_filtered’ and ‘rank\_genes\_groups’.

```auto
del adata.uns['rank_genes_groups_filtered']
del adata.uns['rank_genes_groups']

```

---

<div class="post-metadata">

**Author:** ![shevo33](https://avatars.discourse-cdn.com/v4/letter/s/b19c9b/32.png) [@shevo33](https://discourse.scverse.org/u/shevo33)\
**Post date:** [December 3, 2023, 3:28am UTC](https://discourse.scverse.org/t/error-when-saving-adata-with-adata-write-h5ad-above-error-raised-while-writing-key-names-of-to/1737/4 "2023-12-03T03:28:38Z")

</div>

uns\_1 = adata.uns[‘rank\_genes\_groups\_filtered’]  
uns\_2 = adata.uns[‘rank\_genes\_groups’]

# Converting values to strings

adata.uns[‘rank\_genes\_groups\_filtered’]= {key: str(value) for key, value in uns\_1.items()}  
adata.uns[‘rank\_genes\_groups’]= {key: str(value) for key, value in uns\_2.items()}
