美文网首页
单细胞数据整合函数sc.AnnData.concatenate语

单细胞数据整合函数sc.AnnData.concatenate语

作者: 云养江停 | 来源:发表于2022-09-20 21:59 被阅读0次
单细胞不同数据整合时会用到concatenate函数,这里的batch尤其要小心处理:
import scanpy as sc 
import numpy as np
np.random.seed(1)#设置随机种子
x=np.random.randn(3000,100)#
y=np.random.randn(2000,100)# 
z=np.random.randn(1000,100)
adata1=sc.AnnData(x)
adata2=sc.AnnData(y)
adata3=sc.AnnData(z)
adata =sc.AnnData.concatenate(adata1,adata2,adata3)

print(adata.obs)

如果各自的adata没有batch属性,那么sc.AnnData.concatenate就会自动创建最终的结果如下:

adata.obs['batch']

image.png
如果起初的各个adata已经具有batch的标示,那么sc.AnnData会重新覆盖,且取值只会是0,1,2....... 特别要注意的是,如果你在整合不同批次的样本预先设定了批次(adata[i].obs['batch'] = batch[i]),但是在concatenate后batch将被重新排序为从0开始增大。那么导致的最终结果是你的batch并不是你预期的那样。
解决方法是再创建一个batch,命名为BATCH (类似于adata[i],obs['BATCH'] = batch[i],然后adata = adata1.concatenate(adata2,adata3,batch_key='BATCH')

如图所示:


image.png
然后:

adata = sc.AnnData.concatenate(adata1,adata2,adata3,batch_key = 'BATCH')
或者adata = adata1.concatenate(adata2,adata3,batch_key = 'BATCH')
得到的结果是:

image.png

相关文章

网友评论

      本文标题:单细胞数据整合函数sc.AnnData.concatenate语

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