[ PROMPT_NODE_26200 ]
anndata
[ SKILL_DOCUMENTATION ]
# AnnData
## 概述
AnnData 是一个用于处理带注释数据矩阵的 Python 包,它将实验测量值 (X) 与观测元数据 (obs)、变量元数据 (var) 以及多维注释 (obsm, varm, obsp, varp, uns) 存储在一起。最初通过 Scanpy 为单细胞基因组学设计,现在它已成为任何需要高效存储、操作和分析的带注释数据的通用框架。
## 何时使用此技能
在以下情况使用此技能:
- 创建、读取或写入 AnnData 对象
- 使用 h5ad、zarr 或其他基因组学数据格式
- 执行单细胞 RNA-seq 分析
- 使用稀疏矩阵或后端模式 (backed mode) 管理大数据集
- 连接多个数据集或实验批次
- 对带注释的数据进行子集化、过滤或转换
- 与 scanpy、scvi-tools 或其他 scverse 生态系统工具集成
## 安装
bash
uv pip install anndata
# 带有可选依赖项
uv pip install anndata[dev,test,doc]
## 快速入门
### 创建 AnnData 对象
python
import anndata as ad
import numpy as np
import pandas as pd
# 最小化创建
X = np.random.rand(100, 2000) # 100 个细胞 × 2000 个基因
adata = ad.AnnData(X)
# 带有元数据
obs = pd.DataFrame({
'cell_type': ['T cell', 'B cell'] * 50,
'sample': ['A', 'B'] * 50
}, index=[f'cell_{i}' for i in range(100)])
var = pd.DataFrame({
'gene_name': [f'Gene_{i}' for i in range(2000)]
}, index=[f'ENSG{i:05d}' for i in range(2000)])
adata = ad.AnnData(X=X, obs=obs, var=var)
### 读取数据
python
# 读取 h5ad 文件
adata = ad.read_h5ad('data.h5ad')
# 使用后端模式读取(用于大文件)
adata = ad.read_h5ad('large_data.h5ad', backed='r')
# 读取其他格式
adata = ad.read_csv('data.csv')
adata = ad.read_loom('data.loom')
adata = ad.read_10x_h5('filtered_feature_bc_matrix.h5')
### 写入数据
python
# 写入 h5ad 文件
adata.write_h5ad('output.h5ad')
# 写入并压缩
adata.write_h5ad('output.h5ad', compression='gzip')
# 写入其他格式
adata.write_zarr('output.zarr')
adata.write_csvs('output_dir/')
### 基本操作
python
# 按条件子集化
t_cells = adata[adata.obs['cell_type'] == 'T cell']
# 按索引子集化
subset = adata[0:50, 0:100]
# 添加元数据
adata.obs['quality_score'] = np.random.rand(adata.n_obs)
adata.var['highly_variable'] = np.random.rand(adata.n_vars) > 0.8
# 访问维度
print(f"{adata.n_obs} 个观测值 × {adata.n_vars} 个变量")