anndata.experimental.AnnCollection

目录

anndata.experimental.AnnCollection#

class anndata.experimental.AnnCollection(adatas, join_obs='inner', join_obsm=None, join_vars=None, label=None, keys=None, index_unique=None, convert=None, harmonize_dtypes=True, indices_strict=True)[source]#

惰性地沿着 obs 轴连接 AnnData 对象。

这个类不会从底层的 AnnData 对象中复制数据,而是使用观察和变量的联合索引进行惰性子集化。它还允许对 AnnData 对象的 .obs 属性即时应用预先指定的转换器。

该对象的子集返回一个 AnnCollectionView,它提供了对 .obs.obsm.layers.X 的视图,来自底层的 AnnData 对象。

Parameters:
adatas Sequence[AnnData] | dict[str, AnnData]

要懒惰地连接的对象。 如果传递了一个映射,键将用于 keys 参数,值则被连接。

join_obs Optional[Literal['inner', 'outer']] (default: 'inner')

如果指定“inner”,所有 .obs 属性将从 adatas 进行内连接并复制到此对象。 如果指定“outer”,所有 .obsm 属性将从 adatas 进行外连接并复制到此对象。 对于“inner”和“outer”,子集对象将访问此对象的 .obs,而不是原始的 .obs 属性的 adatas。 如果 None,则不复制任何内容到此对象的 .obs,子集对象将直接访问 adatas.obs 属性(经过适当的重索引和数据类型转换)。 对于 None`the inner join rule is used to select columns of `.obsadatas

join_obsm Optional[Literal['inner']] (default: None)

如果指定了“inner”,所有 .obsm 属性来自 adatas 将被内连接并复制到该对象。子集对象将访问该对象的 .obsm,而不是原始的 .obsm 属性来自 adatas。如果 None,那么没有任何内容被复制到该对象的 .obsm,子集对象将直接访问 adatas.obsm 属性(经过适当的重新索引和数据类型转换)。对于这两种选项,底层 .obsm 属性使用内连接规则。

join_vars Optional[Literal['inner']] (default: None)

指定如何沿变量轴连接 adatas。如果 None,则假定所有 adatas 具有相同的变量。如果为“inner”,则将使用所有 adatas 中变量的交集。

label str | None (default: None)

.obs中放置批次信息的列。 如果为None,则不添加列。

keys Sequence[str] | None (default: None)

为每个被添加对象的名称。这些值用于label的列值,或者如果index_unique不是None,则附加到索引上。默认为递增的整数标签。

index_unique str | None (default: None)

是否通过使用键使索引唯一。如果提供,这是“{orig_idx}{index_unique}{key}”之间的分隔符。当 None 时,原始索引将被保留。

convert Callable | dict[str, Callable | dict[str, Callable]] | None (default: None)

您可以传递一个函数或一个函数的映射,这些函数将应用于属性的值 (.obs, .obsm, .layers, .X) 或这些属性在子集对象中的特定键。指定一个属性和一个键(如有需要)作为传递映射的键,并将要应用的函数作为值。

harmonize_dtypes bool (default: True)

如果 True,从子集对象检索的所有数组将具有相同的 dtype。

indices_strict bool (default: True)

如果 True,来自子集对象的数组将始终具有与用于子集选择的索引相同的顺序。 如果返回数组中的顺序不重要,可以将此参数设置为 False,例如,当将它们用于随机梯度下降时。 在这种情况下,子集的性能可能会稍微更好。

NoneNone

示例

>>> from scanpy.datasets import pbmc68k_reduced, pbmc3k_processed
>>> adata1, adata2 = pbmc68k_reduced(), pbmc3k_processed()
>>> adata1.shape
(700, 765)
>>> adata2.shape
(2638, 1838)
>>> dc = AnnCollection([adata1, adata2], join_vars='inner')
>>> dc
AnnCollection object with n_obs × n_vars = 3338 × 208
  constructed from 2 AnnData objects
    view of obsm: 'X_pca', 'X_umap'
    obs: 'n_genes', 'percent_mito', 'n_counts', 'louvain'
>>> batch = dc[100:200] # AnnCollectionView
>>> batch
AnnCollectionView object with n_obs × n_vars = 100 × 208
    obsm: 'X_pca', 'X_umap'
    obs: 'n_genes', 'percent_mito', 'n_counts', 'louvain'
>>> batch.X.shape
(100, 208)
>>> len(batch.obs['louvain'])
100

属性

NoneNone

attrs_keys

所有可访问属性及其键的字典。

convert

动态转换器,用于属性和数据矩阵的键。

has_backed

True 如果 adatas 已经支持 AnnData 对象, False 否则。

n_obs

观察数量。

n_vars

变量/特征的数量。

obs

对观察结果的一维注释。

obsm

观测的多维注释。

shape

惰性连接数据矩阵的形状

方法

iterate_axis(batch_size[, axis, shuffle, ...])

在指定轴上对惰性对象进行迭代。

lazy_attr(attr[, key])

从一个属性(类数组)或属性中获取一个可子集化的键。

to_adata()

将此 AnnCollection 对象转换为 AnnData 对象。