美文网首页单细胞测序
Annadata对象-数据结构简单记录

Annadata对象-数据结构简单记录

作者: 倪桦 | 来源:发表于2022-08-02 09:45 被阅读0次

anndata - Annotated data — anndata 0.9.0.dev7+gfd744d6 documentation

import numpy as np
import pandas as pd
import anndata as ad
from scipy.sparse import csr_matrix
print(ad.__version__)

建构一个 annadata 数据对象

counts = csr_matrix(np.random.poisson(1, size=(100, 2000)), dtype=np.float32) ### 初始化一个矩阵稀疏矩阵
adata = ad.AnnData(counts) ### 初始化一个 AnnData 对象

填充各个数据槽

adata.obs_names = [f"Cell_{i:d}" for i in range(adata.n_obs)] ### 为添加obs 轴添加索引名
adata.var_names = [f"Gene_{i:d}" for i in range(adata.n_vars)] ### 为添加vars 轴添加索引名
adata[["Cell_1", "Cell_10"], ["Gene_5", "Gene_1900"]] ###  
ct = np.random.choice(["B", "T", "Monocyte"], size=(adata.n_obs,))
adata.obs["cell_type"] = pd.Categorical(ct)  ### 细胞注释表添加细胞类型分类变量
adata.obsm["X_umap"] = np.random.normal(0, 1, size=(adata.n_obs, 2)) ### 随机嵌入一个细胞的umap表,obs ->  obs level metatada
adata.varm["gene_stuff"] = np.random.normal(0, 1, size=(adata.n_vars, 5)) ### 随机嵌入一个基因元数据,varm ->  vars level metatada
adata.uns["random"] = [1, 2, 3] ### .uns 存储非结构化的metadata,一般存储的是一些对我们分析有意义的数据, 数据类型可以是 list ,dictionary 等等,通过键来索引数据

数据槽:: Layers

#### 一般可以用来存储不同处理的  原始矩阵.X
adata.layers["log_transformed"] = np.log1p(adata.X)
adata.to_df(layer="log_transformed") ### 以DataFrames格式显示某一层的数据
adata.write('my_results.h5ad', compression="gzip") ### 以AnnData自带的存储格式h5ad保存出对象

数据索引与修改

### 提取子集注意使用 .copy() 方法才能提取出对象的完整子集,这种方式相当于拷贝出来一个adata副本,会为这个副本对象分配内存
adata_subset = adata[:5, ['Gene_1', 'Gene_3']].copy()
### 通过赋值的方法获取adata的一个"View"会自动拷贝对象
adata_subset = adata[:3, ['Gene_1', 'Gene_2']]
### 通过.[]方法索引修改adata是在原对象上进行修改,不会分配新的内存地址。
##### 注意调用.[]获取数据的时候,填写整数是根据索引编号索引数据,类似pandas的 .iloc;填写的是字符则根据添加的字符引数据,类似pandas的 .loc
adata[:3, 'Gene_1'].X = [0, 0, 0] 
### 通过.isin 方法条件化索引数据
adata[ adata.obs.cell_type.isin(["B", "T"]) ].obs.head()

大数据读取

### 大数据读取,防止爆内存,使用backed模式,即以只读的方式打开文件,所以不能对数据做任何修改
#### 每次只是将部分数据载入内存
adata = ad.read('my_results.h5ad', backed='r')
adata.isbacked
adata.filename ### AnnData对象与被读取的文件建立了一个连接
adata.file.close() ### 关闭与对象的连接

相关文章

  • Annadata对象-数据结构简单记录

    anndata - Annotated data — anndata 0.9.0.dev7+gfd744d6 do...

  • scanpy合并adata数据和随机采样

    加载datafram格式的rnacounts数据 添加分组信息 合并annadata对象

  • Redis专题

    1 数据结构与对象 1.Redis数据结构与对象——简单动态字符串2.Redis数据结构与对象——哈希3.Redi...

  • Redis数据结构与对象

    了解常见的对象的数据结构及其实现的特点掌握5种对象及其常见应用场景 1. Redis对象的数据结构 简单动态字符串...

  • 《Redis设计与实现》简读

    一、数据结构与对象 简单动态字符串(SDS) 相比C字符串增加记录字符串长度的,获取字符串长度复杂度为O(1) 相...

  • JavaScript面向对象(一)

    面向对象的意义 数据结构化:对于计算机,结构化才是最简单的 编程应该 简单 抽象 面向对象三要素 继承【子类继承父...

  • Redis简单数据结构及适用场景记录

    Redis简单数据结构及适用场景记录 1、五种基础数据结构Redis 所有的数据结构都是以唯一的 key 字符串作...

  • cleanCode之对象和数据结构

    1.对象和数据结构的区别 (1)数据结构中的对象只是数据,面向对象中的对象包括了数据和行为。 (2)数据结构暴露其...

  • js对象与继承

    对象:由多组无序属性组成的数据结构 (键值对) 成对出现:属性名 属性值字面量 简单对象也存在构造函数 (如:...

  • Python学习打call第二十九天:面向对象

    1.类和对象的定义 类:用来描述具有相同的属性和方法的对象的集合; 对象:通过类定义的数据结构实例; 简单来说就是...

网友评论

    本文标题:Annadata对象-数据结构简单记录

    本文链接:https://www.haomeiwen.com/subject/hqloirtx.html