前面我们已经完成了cytof数据处理的主要步骤,读入文件,质量控制,降维聚类分群,生物学注释和细胞亚群比例差异分析。 目录如下:
- 1.cytof数据资源介绍(文末有交流群)
- 2.cytofWorkflow之读入FCS文件(一)
- 3.cytofWorkflow之构建SingleCellExperiment对象(二)
- 4.cytofWorkflow之基本质量控制(三)
- 5.cytofWorkflow之聚类分群(四)
- 6.cytofWorkflow之人工注释生物学亚群(五)
- 7.cytofWorkflow之亚群比例差异分析(六)
其实跟纯粹的单细胞转录组就非常类似了,不过单细胞转录组数据分析的细节以及背景我就不赘述了,看我在《单细胞天地》的单细胞基础10讲:
- 01. 上游分析流程
- 02.课题多少个样品,测序数据量如何
- 03. 过滤不合格细胞和基因(数据质控很重要)
- 04. 过滤线粒体核糖体基因
- 05. 去除细胞效应和基因效应
- 06.单细胞转录组数据的降维聚类分群
- 07.单细胞转录组数据处理之细胞亚群注释
- 08.把拿到的亚群进行更细致的分群
- 09.单细胞转录组数据处理之细胞亚群比例比较
以及各式各样的个性化汇总教程,差不多就明白了。
基本流程走完了,仅仅是万里长征第一步而已。我们可以开始尝试分析一些文献的公共数据集啦,不过在处理那些数据的过程中,我们还需要传授给大家几个小技巧。
绝大部分情况下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对象的理解。