首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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 很容易下载文件,大小如下:

代码语言:javascript
复制
  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文件产生的对象。

代码如下:

代码语言:javascript
复制
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 函数能取出来的抗体信号值矩阵 即可。

代码语言:javascript
复制
 lapply(1:6, function(i){
  tmp=exprs(fs[[i]]) 
  exprs(fs[[i]]) = tmp[sample(1:nrow(tmp),3000),]
 }) 

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

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

下一篇
举报
领券