cytof数据处理难点之细胞数量平衡

前面我们已经完成了cytof数据处理的主要步骤,读入文件,质量控制,降维聚类分群,生物学注释和细胞亚群比例差异分析。 目录如下:

其实跟纯粹的单细胞转录组就非常类似了,不过单细胞转录组数据分析的细节以及背景我就不赘述了,看我在《单细胞天地》的单细胞基础10讲:

以及各式各样的个性化汇总教程,差不多就明白了。

基本流程走完了,仅仅是万里长征第一步而已。我们可以开始尝试分析一些文献的公共数据集啦,不过在处理那些数据的过程中,我们还需要传授给大家几个小技巧。

绝大部分情况下cytof样品的细胞数量差异非常大!

比如数据集 This experiment contains 8 mass cytometry files of adjacent normal pancreas tissue and 9 mass cytometry files of pancreatic tumor tissue (from pancreatic ductal adenocarcinoma patients)

链接是:https://flowrepository.org/id/FR-FCM-Z2S4 很容易下载文件,大小如下:

 871M Aug 2 10:19 DS20191253_Tissue_Tumor_PDA.fcs
 574M Aug 2 09:59 DS20191196_Tissue_PancNAdj_DA.fcs
 486M Aug 2 09:58 DS20191172_Tissue_PancNAdj_PDA.fcs
 129M Aug 2 09:59 DS20191258_ADJ_N_PANC.fcs
 113M Aug 2 09:57 19-262_ADJ_N_PANC.fcs
 97M Aug 2 09:57 6135_3210_Tissue_Tumor_PDA.fcs
 81M Aug 2 09:59 DS20191225_Tissue_Tumor_PDA.fcs
 78M Aug 2 09:57 19_262_Tissue_Tumor_PDA.fcs
 25M Aug 2 09:57 DS20181107_Tissue_Tumor_PDA_MCN.fcs
 22M Aug 2 09:57 19_561_ADJ_N_PANC.fcs
 18M Aug 2 09:59 DS20191262_Tissue_Tumor_PDA.fcs
 12M Aug 2 09:57 19_700_ADJ_N_PANC.fcs
 6.9M Aug 2 09:59 DS20191229_Tissue_Tumor_PDA.fcs
 6.7M Aug 2 10:18 DS20191240_Tissue_Tumor.fcs
 6.3M Aug 2 09:59 DS20191296_Tissue_Tumor_PDA.fcs
 5.8M Aug 2 09:57 19_732_ADJ_N_PANC.fcs
 5.2M Aug 2 09:59 DS20191252_ADJ_N_PANC.fcs
 971K Aug 2 09:57 19_364_Tissue_Tumor_PDA.fcs
 882K Aug 2 09:57 DS20191252_Tissue_Tumor_PDA.fcs

这个时候就很麻烦,假如我们希望是最开始就把细胞数量至少拉平到同一个数量级,就需要解析read.flowSet函数全部的FCS文件产生的对象。

代码如下:

rm(list = ls())
require(cytofWorkflow) 
p1='paper/'
fs1=list.files(p1,'*fcs' )
fs1

cytof_list <- lapply(fs1, function(x){
 print(x)
 read.flowSet(files = x ,path = p1) 
}) 
cytof_list

fs <- read.flowSet(files = fs1,path = p1)
fs

# expression values 
lapply(1:6, function(i){
 dim(exprs(fs[[i]]))
})
dim(exprs(fs[[1]]))
exprs(fs[[1]])[1:6, 1:5]
colnames(exprs(fs[[1]]))

通过上面的代码,很容易认识read.flowSet函数全部的FCS文件产生的对象。只需要修改一下 exprs 函数能取出来的抗体信号值矩阵 即可。

 lapply(1:6, function(i){
 tmp=exprs(fs[[i]]) 
 exprs(fs[[i]]) = tmp[sample(1:nrow(tmp),3000),]
 })

我上面演示的是把所有人的样本都拉平到3000个细胞这样的数据量,当然了,你也可以根据文章的cytof数据集的实际情况来选择性的处理。

其实关键就在于对R语言的S4对象的理解。

Comments are closed.