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]#
一个带注释的数据矩阵。
AnnData存储了一个数据矩阵X,以及观察的注释obs(obsm,obsp),变量var(varm,varp),和无结构的注释uns。An
NoneNoneAnnData对象adata可以像一个DataFrame那样被切片, 例如adata_subset = adata[:, list_of_variable_names]。AnnData的基本结构类似于 R 的 ExpressionSet [Huber15]。 如果设置一个.h5ad格式的 HDF5 支持文件.filename, 数据仍然保留在磁盘上,但如果需要会自动加载到内存中。- 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) 形状元组(#观察值,#变量)。只能在
X为None时提供。- filename
PathLike|None(default:None) 备用文件的名称。请参见
h5py.File。- filemode
Optional[Literal['r','r+']] (default:None) 备份文件的打开模式。请参阅
h5py.File。
- X
另请参阅
NoneNoneio.read_h5ad,io.read_csv,io.read_excel,io.read_hdf,io.read_loom,io.read_zarr,io.read_mtx,io.read_text,io.read_umi_tools注意事项
NoneNoneAnnData用于存储变量/特征的观测值(样本), 以矩阵的行的形式呈现。这是现代统计学 [Hastie09] 和机器学习 [Murphy12] 的惯例, 以及 R 和 Python 中数据框的惯例,这些都是 Python 中已经建立的统计学 和机器学习包 (statsmodels, scikit-learn)。单维注释的观测值和变量存储在
NoneNoneobs和var属性中,作为DataFrame。这用于计算其轴上的指标。多维注释存储在obsm和varm中,分别对齐到对象的观测和变量维度。表示图形的方阵存储在obsp和varp中,它们各自的维度与其关联的轴对齐。跨观测值和变量的额外测量存储在layers中。对AnnData对象的索引可以通过相对位置使用数字索引(如pandas的
NoneNoneiloc()),或者通过标签(如loc())。为了避免在观察或变量中进行数字索引时产生歧义,AnnData对象的索引通过构造函数转换为字符串。通过索引子集化AnnData对象也会根据其对齐的维度对子集化其元素。这意味着像
NoneNoneadata[list_of_obs, :]这样的操作也会对子集化obs、obsm和layers。对AnnData对象的子集操作返回对原始对象的视图,这意味着在子集操作时使用的额外内存非常少。这是以延迟的方式实现的,这意味着组成数组在访问时被子集。复制一个视图会生成一个等效的“真实”AnnData对象。尝试修改视图(除了X的任何属性)是以复制修改的方式处理的,这意味着对象在原地初始化。下面是一个例子:
batch1 = adata[adata.obs["batch"] == "batch1", :] batch1.obs["value"] = 0 # This makes batch1 a “real” AnnData object
在这个代码片段的末尾:
adata没有被修改,batch1是它自己的AnnData对象,拥有自己的数据。类似于 Bioconductor 的
ExpressionSet和scipy.sparse矩阵,子集化 AnnData 对象保留其组成数组的维度。因此,与pandas、numpy和xarray暴露的类不同,没有一维 AnnData 对象的概念。AnnDatas 总是具有两个固有维度,obs和var。此外,保持 AnnData 对象的维度允许对scipy.sparse矩阵和numpy数组进行一致的处理。属性
转置整个对象。
通过设置
.h5ad文件的文件名来更改为备用模式。True如果对象是另一个AnnData对象的视图,False否则。True如果对象在磁盘上被支持,False否则。 NoneNone类似字典的对象,其值的维度与
X相同。观察数量。
变量/特征的数量。
NoneNone观测的一维注释 (
pd.DataFrame).观测名称(
.obs.index的别名)。观察的多维注释(可变结构的
ndarray)。观察的成对注释,一个具有数组样式值的可变映射。
NoneNone非结构化注释(有序字典)。
对变量/特征进行一维注释 (
pd.DataFrame).变量的名称(
.var.index的别名)。变量/特征的多维注释(可变结构的
ndarray)。变量/特征的成对注释,一种带有类似数组值的可变映射。
方法
chunk_X([select, replace])返回数据矩阵
X的一块,包含随机或指定索引。chunked_X([chunk_size])返回数据矩阵
X的行的迭代器。concatenate(*adatas[, join, batch_key, ...])沿观察轴连接。
copy([filename])完整复制,选择性地在磁盘上。
NoneNoneobs_keys()列出观察注释的键
obs。obs_names_make_unique([join])通过在每个重复的索引元素后附加一个数字字符串来使索引唯一:'1','2',等。
obs_vector(k, *[, layer]) NoneNone列出观察注释
obsm的键。rename_categories(key, categories)strings_to_categoricals([df])将字符串注释转换为分类变量。
to_df([layer])生成浅层
DataFrame。to_memory([copy])返回一个新的 AnnData 对象,其中所有备份数组都加载到内存中。
转置整个对象。
uns_keys()列出非结构化注释的键。
var_keys()列出变量注释的键
var。var_names_make_unique([join])通过在每个重复的索引元素后附加一个数字字符串使索引唯一:'1','2',等。
var_vector(k, *[, layer])列出变量注释的键
varm. NoneNonewrite([filename, compression, ...])写入
.h5ad格式的 hdf5 文件。write_csvs(dirname[, skip_data, sep])将注释写入
.csv文件。write_h5ad([filename, compression, ...])写入
.h5ad格式的 hdf5 文件。 NoneNonewrite_loom(filename[, write_obsm_varm])写入
.loom格式的 hdf5 文件。write_zarr(store[, chunks])写入一个层次化的 Zarr 数组存储。