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 `.obs的adatas。- 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) 如果
NoneNoneTrue,来自子集对象的数组将始终具有与用于子集选择的索引相同的顺序。 如果返回数组中的顺序不重要,可以将此参数设置为False,例如,当将它们用于随机梯度下降时。 在这种情况下,子集的性能可能会稍微更好。
- adatas
示例
>>> 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
属性
所有可访问属性及其键的字典。
动态转换器,用于属性和数据矩阵的键。
NoneNoneTrue如果adatas已经支持 AnnData 对象,False否则。观察数量。
变量/特征的数量。
对观察结果的一维注释。
观测的多维注释。
惰性连接数据矩阵的形状
方法
iterate_axis(batch_size[, axis, shuffle, ...])在指定轴上对惰性对象进行迭代。
lazy_attr(attr[, key])从一个属性(类数组)或属性中获取一个可子集化的键。
to_adata()将此 AnnCollection 对象转换为 AnnData 对象。