anndata.AnnData

目录

anndata.AnnData#

class anndata.AnnData(X=None, obs=None, var=None, uns=None, obsm=None, varm=None, layers=None, raw=None, dtype=None, shape=None, filename=None, filemode=None, asview=False, *, obsp=None, varp=None, oidx=None, vidx=None)[source]#

一个带注释的数据矩阵。

../_images/anndata_schema.svg

AnnData 存储了一个数据矩阵 X,以及观察的注释 obs (obsm, obsp),变量 var (varm, varp),和无结构的注释 uns

An AnnData对象 adata 可以像一个 DataFrame那样被切片, 例如 adata_subset = adata[:, list_of_variable_names]AnnData 的基本结构类似于 R 的 ExpressionSet [Huber15]。 如果设置一个 .h5ad 格式的 HDF5 支持文件 .filename, 数据仍然保留在磁盘上,但如果需要会自动加载到内存中。

NoneNone
Parameters:
X ndarray | spmatrix | DataFrame | None (default: None)

一个 #observations × #variables 数据矩阵。如果数据类型匹配,则使用数据的视图,否则会创建一个副本。

obs DataFrame | Mapping[str, Iterable[Any]] | None (default: None)

长度为 #observations 的关键索引一维观察注释。

var DataFrame | Mapping[str, Iterable[Any]] | None (default: None)

长度为 #variables 的键索引一维变量注释。

uns Mapping[str, Any] | None (default: None)

键索引的非结构化注释。

obsm ndarray | Mapping[str, Sequence[Any]] | None (default: None)

关键索引多维观测的注释,长度为 #observations。
如果传入一个 ndarray,它需要具有结构化数据类型。

varm ndarray | Mapping[str, Sequence[Any]] | None (default: None)

键索引多维变量注释的长度为 #variables。 如果传递一个 ndarray,它需要有一个结构化的数据类型。

layers Mapping[str, ndarray | spmatrix] | None (default: None)

按维度对齐的关键索引多维数组 X

shape tuple[int, int] | None (default: None)

形状元组(#观察值,#变量)。只能在XNone时提供。

filename PathLike | None (default: None)

备用文件的名称。请参见 h5py.File

filemode Optional[Literal['r', 'r+']] (default: None)

备份文件的打开模式。请参阅 h5py.File

注意事项

AnnData 用于存储变量/特征的观测值(样本), 以矩阵的行的形式呈现。这是现代统计学 [Hastie09] 和机器学习 [Murphy12] 的惯例, 以及 R 和 Python 中数据框的惯例,这些都是 Python 中已经建立的统计学 和机器学习包 (statsmodels, scikit-learn)。

NoneNone

单维注释的观测值和变量存储在obsvar属性中,作为DataFrame。这用于计算其轴上的指标。多维注释存储在obsmvarm中,分别对齐到对象的观测和变量维度。表示图形的方阵存储在obspvarp中,它们各自的维度与其关联的轴对齐。跨观测值和变量的额外测量存储在layers中。

NoneNone

对AnnData对象的索引可以通过相对位置使用数字索引(如pandas的 iloc()),或者通过标签(如 loc())。为了避免在观察或变量中进行数字索引时产生歧义,AnnData对象的索引通过构造函数转换为字符串。

NoneNone

通过索引子集化AnnData对象也会根据其对齐的维度对子集化其元素。这意味着像 adata[list_of_obs, :] 这样的操作也会对子集化 obsobsmlayers

NoneNone

对AnnData对象的子集操作返回对原始对象的视图,这意味着在子集操作时使用的额外内存非常少。这是以延迟的方式实现的,这意味着组成数组在访问时被子集。复制一个视图会生成一个等效的“真实”AnnData对象。尝试修改视图(除了X的任何属性)是以复制修改的方式处理的,这意味着对象在原地初始化。下面是一个例子:

batch1 = adata[adata.obs["batch"] == "batch1", :]
batch1.obs["value"] = 0  # This makes batch1 a “real” AnnData object

在这个代码片段的末尾:adata没有被修改, batch1是它自己的AnnData对象,拥有自己的数据。

类似于 Bioconductor 的 ExpressionSetscipy.sparse 矩阵,子集化 AnnData 对象保留其组成数组的维度。因此,与 pandasnumpyxarray 暴露的类不同,没有一维 AnnData 对象的概念。AnnDatas 总是具有两个固有维度,obsvar。此外,保持 AnnData 对象的维度允许对 scipy.sparse 矩阵和 numpy 数组进行一致的处理。

属性

NoneNone NoneNone NoneNone

T

转置整个对象。

X

形状为 n_obs × n_vars 的数据矩阵。

filename

通过设置.h5ad文件的文件名来更改为备用模式。

is_view

True 如果对象是另一个AnnData对象的视图,False 否则。

isbacked

True 如果对象在磁盘上被支持,False 否则。

layers

类似字典的对象,其值的维度与 X 相同。

n_obs

观察数量。

n_vars

变量/特征的数量。

obs

观测的一维注释 (pd.DataFrame).

obs_names

观测名称(.obs.index的别名)。

obsm

观察的多维注释(可变结构的 ndarray)。

obsp

观察的成对注释,一个具有数组样式值的可变映射。

raw

Xvar的原始版本存储为.raw.X.raw.var

shape

数据矩阵的形状 (n_obs, n_vars).

uns

非结构化注释(有序字典)。

var

对变量/特征进行一维注释 (pd.DataFrame).

var_names

变量的名称(.var.index的别名)。

varm

变量/特征的多维注释(可变结构的 ndarray)。

varp

变量/特征的成对注释,一种带有类似数组值的可变映射。

方法

NoneNone NoneNone NoneNone NoneNone

chunk_X([select, replace])

返回数据矩阵 X 的一块,包含随机或指定索引。

chunked_X([chunk_size])

返回数据矩阵 X 的行的迭代器。

concatenate(*adatas[, join, batch_key, ...])

沿观察轴连接。

copy([filename])

完整复制,选择性地在磁盘上。

obs_keys()

列出观察注释的键 obs

obs_names_make_unique([join])

通过在每个重复的索引元素后附加一个数字字符串来使索引唯一:'1','2',等。

obs_vector(k, *[, layer])

便利函数,用于从 Xlayers[k]obs 返回一维 ndarray 的值。

obsm_keys()

列出观察注释 obsm 的键。

rename_categories(key, categories)

重命名注释中 key 的类别,位于 obsvaruns 中。

strings_to_categoricals([df])

将字符串注释转换为分类变量。

to_df([layer])

生成浅层 DataFrame

to_memory([copy])

返回一个新的 AnnData 对象,其中所有备份数组都加载到内存中。

transpose()

转置整个对象。

uns_keys()

列出非结构化注释的键。

var_keys()

列出变量注释的键 var

var_names_make_unique([join])

通过在每个重复的索引元素后附加一个数字字符串使索引唯一:'1','2',等。

var_vector(k, *[, layer])

方便的函数,用于从 Xlayers[k]obs 返回一维 ndarray 值。

varm_keys()

列出变量注释的键 varm.

write([filename, compression, ...])

写入 .h5ad 格式的 hdf5 文件。

write_csvs(dirname[, skip_data, sep])

将注释写入.csv文件。

write_h5ad([filename, compression, ...])

写入 .h5ad 格式的 hdf5 文件。

write_loom(filename[, write_obsm_varm])

写入 .loom 格式的 hdf5 文件。

write_zarr(store[, chunks])

写入一个层次化的 Zarr 数组存储。