单细胞分析Scanpy(一):Anndata数据结构
Scanpy是一个分析单细胞转录组数据的python库,AnnData是scanpy的数据存储格式。
一、AnnData数据结构
1、功能介绍
结构 | 功能 | 数据类型 |
---|---|---|
adata.X | 矩阵数据 | unmpy数组、scipy sparse矩阵 |
adata.obs | 观测值数据 | pandas Dataframe |
adata.var | 特征和高可变基因数据 | pandas Dataframe |
adata.uns | 非结构化数据 | 字典dict |
adata.X存储的是矩阵信息,它的结构虽然是一个数组,但是没有行名和列名信息。矩阵的行名信息存储在adata.obs中,列名信息存储在adata.var中。
一般情况,在单细胞处理中adata.obs存储的是细胞的数据(对应观测),adata.var存储的是基因的数据(对应特征)。
2、adata常用函数
# 数据数目统计
adata.n_obs # 返回细胞数 2695
adata.n_vars # 返回基因数 18270
adata.shape # (2695, 18270)# 数据键值提取
adata.obs_keys() # 细胞注释信息的keys,比如 ['ClusterID', 'ClusterName', 'SCT_snn_res_0_8', 'nCount_SCT', 'nCount_Spatial', 'nFeature_SCT', 'nFeature_Spatial', 'orig_ident', 'seurat_clusters', 'imagecol', 'imagerow'']
adata.obs_names # 返回细胞ID 数据类型是object
adata.var.index # 返回基因 数据类型是object
adata.var_names.to_list() # 返回基因 数据类型是list
adata.obs.head() # 查看前5行的数据# 其他的数据组成也可以使用
二、构造anndata数据
通过代码,手动创建一个Anndata数据:
import numpy as np
import pandas as pd
import anndata as ad
from string import ascii_uppercasen_obs = 1000 # 设置观测样本的数量
obs = pd.DataFrame() # obs用于保存观测量的信息# 生成观察时间
obs['time'] = np.random.choice(['day 1', 'day 2', 'day 4', 'day 8'], n_obs)
# 函数解释:numpy.random.choice(a, size = None)
# a是一维的数组,从a中随机抽取元素,并组成指定大小的数组# 设置特征名
var_names = [i*letter for i in range(1, 10) for letter in ascii_uppercase]
# print(var_names)
# 输出为['A'~'z',...'AAAAAAAAA'~'ZZZZZZZZZ'] 从一个字母到九个重复的字母,共26*9=234n_vars = len(var_names) # 输出大小为234个var = pd.DataFrame(index=var_names)X = np.arange(n_obs * n_vars).reshape(n_obs, n_vars)
X的输出为:
三、Anndata初始化
AnnData 对象默认采用数据类型 float32,可以更精确的存储数据,我们为了便于后期观察打印结果,设置数据类型为 int32:
adata=ad.AnnData(X,obs=obs,var=var,dtype='int32')
输出adata,得到: (列*行=1000*234)
四、函数学习
1、Anndata的切片特性
查看观测值和变量,也就是obs(列)的名字和var(行)的名字。
print(adata.obs_names[:10].tolist())
print(adata.obs_names[-10:].tolist())
print(adata.var_names[:10].tolist())
print(adata.var_names[-3:].tolist())
输出如下:
2、Anndata的view特性
我们每次操作 AnnData 时,并不是再新建一个 AnnData 来存储数据,而是直接找到已经在之前初始化好的 AnnData 的内存地址,通过内存地址来直接改变 AnnData 的值。这样做的好处是:无需分配多余的内存,可以直接修改已经初始后的Anndata对象。
获取与设置Anndata对象
print(adata[:3, 'A'].X) # 查看 'A' 列的头三个元素
adata[:3, 'A'].X = [0, 0, 0] # 设置 'A' 列的头三个元素
print(adata[:5, 'A'].X) # 查看 'A' 列的头五个元素
输出结果:
(因为在第二行代码的时候修改了对象的值,所以再次查看的时候,第A列的前三行都为0)
五、参考文章
1、http://t.csdn.cn/V9fZY
2、http://t.csdn.cn/WJvI4
3、Scanpy数据结构:AnnData - 何帅 - 博客园
单细胞分析Scanpy(一):Anndata数据结构相关推荐
- Scanpy(一)AnnData数据结构与一些API用法介绍
目录 Scanpy简介与安装 AnnData AnnData的结构 h5ad:AnnData的写入和读取 Scanpy中一些常用api的用法介绍 sc.pp.filter_cells sc.pp.fi ...
- Python单细胞分析数据结构——AnnData
文章目录 简介 安装 初始化AnnData 添加元数据 观察或变量的元数据 非结构化元数据 层 转换为DataFrame 保存结果 视图和副本 部分读取 pytorch模型与anndata接口 惰性连 ...
- 单细胞分析的 Python 包 Scanpy(图文详解)
文章目录 一.安装 二.使用 1.准备工作 2.预处理 过滤低质量细胞样本 3.检测特异性基因 4.主成分分析(Principal component analysis) 5.领域图,聚类图(Neig ...
- 如何使用Bioconductor进行单细胞分析?
最近的技术进步使得能够在单个细胞中分析全基因组特征.但是,单细胞数据为分析提出了独特的挑战,需要开发专用的方法和数据架构才能成功解析数据背后的生物问题.Bioconductor项目托管了社区开发的开源 ...
- 从Scanpy的Anndata对象提取信息并转成Seurat对象(适用于空间组且涉及h5文件读写)
关键字 Anndata对象转成Seurat对象 h5文件读写 空间组格式转换 已补充快速使用的函数整理版本,如果不想看细节可以直接看已整理好的版本. 适用背景 众所周知,单细胞数据分析有两大软件:基于 ...
- 单细胞分析Seurat使用相关的10个问题答疑精选!
NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述:三万字长文读 ...
- Seurat | 单细胞分析工具
Seurat是一个老牌的单细胞分析工具了(satija的力作),我之前测试过,但是没怎么用. 最近发现这个工具又publish在了NBT上,所以很有必要看一下这篇文章. Integrating sin ...
- 复现Cell附图 |类器官的单细胞分析
类器官的单细胞分析 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重 ...
- 中科院单细胞分析算法开发博士带你做单细胞转录组分析
" 福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组和Python课程的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次 ...
最新文章
- 用DCGAN训练并生成自己的图像集(含tensorflow代码)
- H盘由于IO设备错误,无法运行此项请求要怎样找到资料
- 7搭建zabbix_监控03分布式监控Zabbix
- tomcat CATALINA_HOME与CATALINA_BASE的区别
- Mybatis学习总结(二)——Mapper代理开发
- android eclipse自动更新,Android Eclipse 升级ADT到24.0.2完美解决方案
- 【Unity3d】使GUI适应屏幕分辨率
- 算法图解学习笔记01之二分查找
- 在线JSON转CSV格式文件工具
- 关于JS的面向对象总结
- 深度学习:Keras入门(二)之卷积神经网络(CNN)【转】
- JavaScript学习第八天笔记(Function)
- system verilog基础知识总结与复习(随机化)
- Python 生成excel表格
- 【操作系统】文件管理(三)—— 文件的目录结构
- Ubuntu安装xxx依赖错误解决方法
- Httpservletrequest获取上传文件
- bga焊盘怎么做_焊接焊盘和BGA设计规则
- IDEA中使用Git Reset进行回退
- 硬币翻转问题-c++