anndata.experimental.read_elem_as_dask#
- anndata.experimental.read_elem_as_dask(elem, chunks=None)[source]#
懒惰地从存储中读取一个元素。
假设元素使用anndata编码。这项功能将使用存储在elem属性中的编码元数据确定编码类型。
- Parameters:
- elem
Array|Dataset|Group|Group 存储的元素。
- chunks
tuple[int,...] |None(default:None) 长度
n,与基础数组的大小相同n。注意,次要轴维度必须与稀疏的形状匹配。默认情况下,对于CSR稀疏,设置为(1000, adata.shape[1]),对于CSC稀疏,设置为(adata.shape[0], 1000),而对于密集情况则使用磁盘上的分块。可以使用-1或None来表示使用相应维度的大小。- optional
长度
n,与基础数组的大小相同n。注意,次要轴维度必须与稀疏的形状匹配。默认为(1000, adata.shape[1])对于 CSR 稀疏,(adata.shape[0], 1000)对于 CSC 稀疏,其他情况下则为密集型的磁盘分块。可以使用-1或None来表示使用相应维度的大小。
- elem
- Return type:
DaskArray- Returns:
Dask数组
示例
设置我们的示例:
>>> from scanpy.datasets import pbmc3k >>> import tempfile >>> import anndata as ad >>> import zarr
>>> tmp_path = tempfile.gettempdir() >>> zarr_path = tmp_path + "/adata.zarr"
>>> adata = pbmc3k() >>> adata.layers["dense"] = adata.X.toarray() >>> adata.write_zarr(zarr_path)
从zarr存储中延迟读取一个稀疏矩阵,使用自定义块大小和默认值:
>>> g = zarr.open(zarr_path) >>> adata.X = ad.experimental.read_elem_as_dask(g["X"]) >>> adata.X dask.array<make_dask_chunk, shape=(2700, 32738), dtype=float32, chunksize=(1000, 32738), chunktype=scipy.csr_matrix> >>> adata.X = ad.experimental.read_elem_as_dask( ... g["X"], chunks=(500, adata.shape[1]) ... ) >>> adata.X dask.array<make_dask_chunk, shape=(2700, 32738), dtype=float32, chunksize=(500, 32738), chunktype=scipy.csr_matrix>
从 zarr 存储惰性读取稠密矩阵:
>>> adata.layers["dense"] = ad.experimental.read_elem_as_dask(g["layers/dense"]) >>> adata.layers["dense"] dask.array<from-zarr, shape=(2700, 32738), dtype=float32, chunksize=(169, 2047), chunktype=numpy.ndarray>
从磁盘创建一个新的 anndata 对象,使用自定义块:
>>> adata = ad.AnnData( ... obs=ad.io.read_elem(g["obs"]), ... var=ad.io.read_elem(g["var"]), ... uns=ad.io.read_elem(g["uns"]), ... obsm=ad.io.read_elem(g["obsm"]), ... varm=ad.io.read_elem(g["varm"]), ... ) >>> adata.X = ad.experimental.read_elem_as_dask( ... g["X"], chunks=(500, adata.shape[1]) ... ) >>> adata.layers["dense"] = ad.experimental.read_elem_as_dask(g["layers/dense"])
我们还支持使用 -1 和 None 作为块大小,以表示读取整个轴:
>>> adata.X = ad.experimental.read_elem_as_dask(g["X"], chunks=(500, -1)) >>> adata.X = ad.experimental.read_elem_as_dask(g["X"], chunks=(500, None))