1AnnData 介绍与结构
在做单细胞分析之前,先了解用于单细胞数据分析的一种数据结构--AnnData。
它一般作为 scanpy 单细胞分析包的数据存储格式。
主要由以下几部分构成:
下面我们动手构建一个用于创建 AnnoData 的虚拟数据
2AnnoData 初始化
3AnnoData 切片特性
可以看到 AnnData 具有和 dataframe 或 Array 相似的长相,同样具备相似的特性,比如切片:
4AnnoData 的 view 特性
AnnoData 可以实现与 numpy 中的 view 相似的功能。
换句话说就是,我们每次操作 AnnoData 时,并不是再新建一个 AnnoData 来存储数据,而是直接找到已经之前初始化好的 AnnoData 的内存地址,通过内存地址来直接改变 AnnoData 的值。这样做的好处是:
view 可以使用 .copy() 来得到 AnnoData 对象。
其实我们在调用 .[] 时,AnnoData已经在内部实现了该操作,也就是说该 view 会成为保存数据的 AnnoData 对象。
但是,如果将 AnnoData 对象的 view 中的一部分赋值,该内容会复制一份并生成新的数据存储对象。
可以看到,这时赋值会直接将 AnnoData 对象复制一份。现在 adata_subset 会重新得到一块内存用于存储实际数据,而不再仅仅是对 adata 的内存地址引用。
5读取数据
6备份到本地
可以看到,我们的 adata 对象已经备份成功,而且就在本地 'https://cloud.tencent.com/developer/article/write/test.h5ad' 目录。
前边提到的 view 特性在这里同样适用,我们来看看 adata_subset 是否备份成功。
adata_subset 并没有被启用备份模式,重新设置备份模式。
需要注意的是:备份仅影响数据矩阵 X,所有注释信息都保留在内存中。如果想对全部数据的更改保存,则必须将导出到本地。
9保存数据