scanpy adata保存为h5ad时报错

```

AnnData object with n_obs × n_vars = 88862 × 26206

    obs: 'group', 'patient_id', 'batch', 'nUMIs', 'mito_perc', 'detected_genes', 'cell_complexity', 'n_genes', 'doublet_score', 'predicted_doublet', 'passing_mt', 'passing_nUMIs', 'passing_ngenes'

    var: 'mt', 'n_cells'

    uns: 'scrublet', 'layers_counts'

·

---------------------------------------------------------------------------

TypeError                                Traceback (most recent call last)

Cell In[36], line 1

----> 1 sc.write(adata=adata_all,filename='./h5ad/adata_all.h5ad',compression=True)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/legacy_api_wrap/__init__.py:80, in legacy_api.<locals>.wrapper.<locals>.fn_compatible(*args_all, **kw)

    77 @wraps(fn)

    78 def fn_compatible(*args_all: P.args, **kw: P.kwargs) -> R:

    79    if len(args_all) <= n_positional:

---> 80        return fn(*args_all, **kw)

    82    args_pos: P.args

    83    args_pos, args_rest = args_all[:n_positional], args_all[n_positional:]

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/scanpy/readwrite.py:665, in write(filename, adata, ext, compression, compression_opts)

    663    adata.write_csvs(filename)

    664 else:

--> 665    adata.write(

    666        filename, compression=compression, compression_opts=compression_opts

    667    )

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_core/anndata.py:1863, in AnnData.write_h5ad(self, filename, compression, compression_opts, as_dense)

  1860 if filename is None:

  1861    filename = self.filename

-> 1863 write_h5ad(

  1864    Path(filename),

  1865    self,

  1866    compression=compression,

  1867    compression_opts=compression_opts,

  1868    as_dense=as_dense,

  1869 )

  1871 if self.isbacked:

  1872    self.file.filename = filename

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/h5ad.py:100, in write_h5ad(filepath, adata, as_dense, dataset_kwargs, **kwargs)

    96    write_elem(

    97        f, "raw/varm", dict(adata.raw.varm), dataset_kwargs=dataset_kwargs

    98    )

    99 elif adata.raw is not None:

--> 100    write_elem(f, "raw", adata.raw, dataset_kwargs=dataset_kwargs)

    101 write_elem(f, "obs", adata.obs, dataset_kwargs=dataset_kwargs)

    102 write_elem(f, "var", adata.var, dataset_kwargs=dataset_kwargs)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:378, in write_elem(store, k, elem, dataset_kwargs)

    354 def write_elem(

    355    store: GroupStorageType,

    356    k: str,

  (...)

    359    dataset_kwargs: Mapping[str, Any] = MappingProxyType({}),

    360 ) -> None:

    361    """

    362    Write an element to a storage group using anndata encoding.

    363

  (...)

    376        E.g. for zarr this would be `chunks`, `compressor`.

    377    """

--> 378    Writer(_REGISTRY).write_elem(store, k, elem, dataset_kwargs=dataset_kwargs)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/utils.py:247, in report_write_key_on_error.<locals>.func_wrapper(*args, **kwargs)

    245    raise ValueError("No element found in args.")

    246 try:

--> 247    return func(*args, **kwargs)

    248 except Exception as e:

    249    path = _get_display_path(store)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:328, in Writer.write_elem(self, store, k, elem, dataset_kwargs, modifiers)

    325 write_func = self.find_write_func(dest_type, elem, modifiers)

    327 if self.callback is None:

--> 328    return write_func(store, k, elem, dataset_kwargs=dataset_kwargs)

    329 return self.callback(

    330    write_func,

    331    store,

  (...)

    335    iospec=self.registry.get_spec(elem),

    336 )

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:71, in write_spec.<locals>.decorator.<locals>.wrapper(g, k, *args, **kwargs)

    69 @wraps(func)

    70 def wrapper(g: GroupStorageType, k: str, *args, **kwargs):

---> 71    result = func(g, k, *args, **kwargs)

    72    g[k].attrs.setdefault("encoding-type", spec.encoding_type)

    73    g[k].attrs.setdefault("encoding-version", spec.encoding_version)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/methods.py:323, in write_raw(f, k, raw, _writer, dataset_kwargs)

    321 g = f.require_group(k)

    322 _writer.write_elem(g, "X", raw.X, dataset_kwargs=dataset_kwargs)

--> 323 _writer.write_elem(g, "var", raw.var, dataset_kwargs=dataset_kwargs)

    324 _writer.write_elem(g, "varm", dict(raw.varm), dataset_kwargs=dataset_kwargs)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/utils.py:247, in report_write_key_on_error.<locals>.func_wrapper(*args, **kwargs)

    245    raise ValueError("No element found in args.")

    246 try:

--> 247    return func(*args, **kwargs)

    248 except Exception as e:

    249    path = _get_display_path(store)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:328, in Writer.write_elem(self, store, k, elem, dataset_kwargs, modifiers)

    325 write_func = self.find_write_func(dest_type, elem, modifiers)

    327 if self.callback is None:

--> 328    return write_func(store, k, elem, dataset_kwargs=dataset_kwargs)

    329 return self.callback(

    330    write_func,

    331    store,

  (...)

    335    iospec=self.registry.get_spec(elem),

    336 )

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:71, in write_spec.<locals>.decorator.<locals>.wrapper(g, k, *args, **kwargs)

    69 @wraps(func)

    70 def wrapper(g: GroupStorageType, k: str, *args, **kwargs):

---> 71    result = func(g, k, *args, **kwargs)

    72    g[k].attrs.setdefault("encoding-type", spec.encoding_type)

    73    g[k].attrs.setdefault("encoding-version", spec.encoding_version)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/methods.py:830, in write_dataframe(f, key, df, _writer, dataset_kwargs)

    825 _writer.write_elem(

    826    group, index_name, df.index._values, dataset_kwargs=dataset_kwargs

    827 )

    828 for colname, series in df.items():

    829    # TODO: this should write the "true" representation of the series (i.e. the underlying array or ndarray depending)

--> 830    _writer.write_elem(

    831        group, colname, series._values, dataset_kwargs=dataset_kwargs

    832    )

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/utils.py:247, in report_write_key_on_error.<locals>.func_wrapper(*args, **kwargs)

    245    raise ValueError("No element found in args.")

    246 try:

--> 247    return func(*args, **kwargs)

    248 except Exception as e:

    249    path = _get_display_path(store)

File ~/anaconda3/envs/scanpy/lib/python3.10/site-packages/anndata/_io/specs/registry.py:318, in Writer.write_elem(self, store, k, elem, dataset_kwargs, modifiers)

    316 # Normalize k to absolute path

    317 if not PurePosixPath(k).is_absolute():

--> 318    k = str(PurePosixPath(store.name) / k)

    320 if k == "/":

    321    store.clear()

File ~/anaconda3/envs/scanpy/lib/python3.10/pathlib.py:562, in PurePath.__new__(cls, *args)

    560 if cls is PurePath:

    561    cls = PureWindowsPath if os.name == 'nt' else PurePosixPath

--> 562 return cls._from_parts(args)

File ~/anaconda3/envs/scanpy/lib/python3.10/pathlib.py:594, in PurePath._from_parts(cls, args)

    589 @classmethod

    590 def _from_parts(cls, args):

    591    # We need to call _parse_args on the instance, so as to get the

    592    # right flavour.

    593    self = object.__new__(cls)

--> 594    drv, root, parts = self._parse_args(args)

    595    self._drv = drv

    596    self._root = root

File ~/anaconda3/envs/scanpy/lib/python3.10/pathlib.py:578, in PurePath._parse_args(cls, args)

    576    parts += a._parts

    577 else:

--> 578    a = os.fspath(a)

    579    if isinstance(a, str):

    580        # Force-cast str subclasses to str (issue #21127)

    581        parts.append(str(a))

TypeError: expected str, bytes or os.PathLike object, not NoneType

Error raised while writing key 'mt' of <class 'h5py._hl.group.Group'> to /??

原因不知为何,找寻了很久仍然存在这个问题

但是adata对象的下游所有分析都能正常进行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容