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数据结构相关推荐

  1. Scanpy(一)AnnData数据结构与一些API用法介绍

    目录 Scanpy简介与安装 AnnData AnnData的结构 h5ad:AnnData的写入和读取 Scanpy中一些常用api的用法介绍 sc.pp.filter_cells sc.pp.fi ...

  2. Python单细胞分析数据结构——AnnData

    文章目录 简介 安装 初始化AnnData 添加元数据 观察或变量的元数据 非结构化元数据 层 转换为DataFrame 保存结果 视图和副本 部分读取 pytorch模型与anndata接口 惰性连 ...

  3. 单细胞分析的 Python 包 Scanpy(图文详解)

    文章目录 一.安装 二.使用 1.准备工作 2.预处理 过滤低质量细胞样本 3.检测特异性基因 4.主成分分析(Principal component analysis) 5.领域图,聚类图(Neig ...

  4. 如何使用Bioconductor进行单细胞分析?

    最近的技术进步使得能够在单个细胞中分析全基因组特征.但是,单细胞数据为分析提出了独特的挑战,需要开发专用的方法和数据架构才能成功解析数据背后的生物问题.Bioconductor项目托管了社区开发的开源 ...

  5. 从Scanpy的Anndata对象提取信息并转成Seurat对象(适用于空间组且涉及h5文件读写)

    关键字 Anndata对象转成Seurat对象 h5文件读写 空间组格式转换 已补充快速使用的函数整理版本,如果不想看细节可以直接看已整理好的版本. 适用背景 众所周知,单细胞数据分析有两大软件:基于 ...

  6. 单细胞分析Seurat使用相关的10个问题答疑精选!

    NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述:三万字长文读 ...

  7. Seurat | 单细胞分析工具

    Seurat是一个老牌的单细胞分析工具了(satija的力作),我之前测试过,但是没怎么用. 最近发现这个工具又publish在了NBT上,所以很有必要看一下这篇文章. Integrating sin ...

  8. 复现Cell附图 |类器官的单细胞分析

    类器官的单细胞分析 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重 ...

  9. 中科院单细胞分析算法开发博士带你做单细胞转录组分析

    " 福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组和Python课程的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次 ...

最新文章

  1. 用DCGAN训练并生成自己的图像集(含tensorflow代码)
  2. H盘由于IO设备错误,无法运行此项请求要怎样找到资料
  3. 7搭建zabbix_监控03分布式监控Zabbix
  4. tomcat CATALINA_HOME与CATALINA_BASE的区别
  5. Mybatis学习总结(二)——Mapper代理开发
  6. android eclipse自动更新,Android Eclipse 升级ADT到24.0.2完美解决方案
  7. 【Unity3d】使GUI适应屏幕分辨率
  8. 算法图解学习笔记01之二分查找
  9. 在线JSON转CSV格式文件工具
  10. 关于JS的面向对象总结
  11. 深度学习:Keras入门(二)之卷积神经网络(CNN)【转】
  12. JavaScript学习第八天笔记(Function)
  13. system verilog基础知识总结与复习(随机化)
  14. Python 生成excel表格
  15. 【操作系统】文件管理(三)—— 文件的目录结构
  16. Ubuntu安装xxx依赖错误解决方法
  17. Httpservletrequest获取上传文件
  18. bga焊盘怎么做_焊接焊盘和BGA设计规则
  19. IDEA中使用Git Reset进行回退
  20. 硬币翻转问题-c++

热门文章

  1. Luckily general gradient for spherical harmonics is defined
  2. max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结
  3. Unity 数学基础
  4. 用程序实现:给一个不多于4位的正整数,求出它是几位数,逆序输出各位数字?
  5. Mingle 2.0 发布了
  6. Codeforces Edu Hacking
  7. 苹果官方首曝iOS 15!这些经典iPhone都要被弃
  8. 如何挖到人生当中第一本CNVD
  9. 英文名大全及含义(女)
  10. (转载)基于sklearn的iris数据集及简介