前面我们已经完成了cytof数据处理的主要步骤,读入文件,质量控制,降维聚类分群,生物学注释和细胞亚群比例差异分析。目录如下:
其实跟纯粹的单细胞转录组就非常类似了,不过单细胞转录组数据分析的细节以及背景我就不赘述了,看我在《单细胞天地》的单细胞基础10讲:
以及各式各样的个性化汇总教程,差不多就明白了。
基本流程走完了,仅仅是万里长征第一步而已。我们可以开始尝试分析一些文献的公共数据集啦,不过在处理那些数据的过程中,我们还需要传授给大家几个小技巧。
有一些情况下,你的同一个实验项目的多个FCS文件,它们的抗体顺序并不一致。如下:
sce1 <- prepData(fs, panel, md, features = panel$fcs_colname)
sce2 <- prepData(fs, panel, md, features = panel$fcs_colname)
rowData(sce1)[,1]
rowData(sce2)[,1]
可以看到,两个数据集的panel其实是一样的:
> rowData(sce1)[,1]
[1] "PerCP-Cy5-5-A" "APC-H7-A" "BV510-A" "PE-Cy7-A"
[5] "BV421-A" "Alexa Fluor 647-A" "PE-A" "FITC-A"
> rowData(sce2)[,1]
[1] "PerCP-Cy5-5-A" "APC-H7-A" "BV510-A" "PE-Cy7-A"
[5] "PE-A" "Alexa Fluor 647-A" "FITC-A" "BV421-A"
都是8个抗体,但是呢,顺序不一样。
这个时候需要对 SingleCellExperiment 对象了如指掌:http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
different quantifications (e.g., counts, CPMs, log-expression) can be stored simultaneously in the assays slot,
and row and column metadata can be attached using rowData and colData, respectively.
metadata(1): experiment_info
assays(2): counts exprs
SingleCellExperiment对象比较复杂,需要自行阅读,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
拆分的代码如下:
ct1=assay(sce1,1)
ct1[1:4,1:4]
ex1=assay(sce1,2)
ex1[1:4,1:4]
r1=as.data.frame(rowData(sce1))
c1=as.data.frame(colData(sce1))
ct2=assay(sce2)
ct2[1:4,1:4]
ex2=assay(sce2,2)
ex2[1:4,1:4]
r2=as.data.frame(rowData(sce2))
c2=as.data.frame(colData(sce2))
r1;r2
n=match(r1$channel_name,r2$channel_name)
r1;r2[n,]
# 首先合并抗体信号矩阵
ct=cbind(ct1,ct2[n,])
ex=cbind(ex1,ex2[n,])
# 然后合并细胞的样本来源及其分组信息
phe=rbind(c1,c2)
head(phe)
# 最后确定抗体的标记信息
r1 # 因为r2已经被修改回来成为了r1
# 参考 http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
有了两个矩阵,assays(2): counts exprs ,以及抗体信息,样品信息,就可以重新组建SingleCellExperiment对象,它比较复杂,需要自行阅读,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
代码超级简单
sce <- SingleCellExperiment(
assays = list(counts = ct,exprs=ex),
colData = phe,
rowData = r1
)
sce
得到的全新的SingleCellExperiment对象就包含了两个不同panel顺序的cytof数据集啦。
panel本身也不一样,就比较麻烦了,不同的panel可能研究的生物学问题不一样,或许有批次效应等其它未知的混杂因素。
需要具体问题具体分析啦。