cytofWorkflow之构建SingleCellExperiment对象(二)

前面我们公布了《cytof数据资源介绍(文末有交流群)》,现在就开始正式手把手教学。

上一讲我们提到了,跟着cytofWorkflow,可以使用read.flowSet函数全部的FCS文件后,会产生一个对象,这里面变量名是 samp 。其实cytofWorkflow只是一个流程而已,这个read.flowSet函数来自于R包。

但有了FCS文件不够,具体的每个样本是有临床表型的,而且呢,里面的抗体也是有对应的生物学意义的。这3种信息组合起来,就是 CATALYST 包的 prepData函数该派上用场啦,官方示例代码如下:

# construct SingleCellExperiment
library(CATALYST)
sce <- prepData(fs, panel, md, features = panel$fcs_colname)

官网链接是:

读取抗体信息文件

首先我们可以看看cytofWorkflow的例子:

url <- "http://imlspenticton.uzh.ch/robinson_lab/cytofWorkflow" 
# 这个cytof的panel的抗体信息表格:
panel <- "PBMC8_panel_v3.xlsx"
download.file(file.path(url, panel), destfile = panel, mode = "wb")
panel <- read_excel(panel)
head(data.frame(panel))

如下所示:

> head(data.frame(panel)) 
 fcs_colname antigen marker_class
1 CD3(110:114)Dd CD3 type
2 CD45(In115)Dd CD45 type
3 pNFkB(Nd142)Dd pNFkB state
4 pp38(Nd144)Dd pp38 state
5 CD4(Nd145)Dd CD4 type
6 CD20(Sm147)Dd CD20 type

可以看到是24个抗体,每个抗体都有对应的名字以及分类。

构造临床表型变量

首先我们可以看看cytofWorkflow的例子:

library(readxl)
url <- "http://imlspenticton.uzh.ch/robinson_lab/cytofWorkflow"
md <- "PBMC8_metadata.xlsx"
download.file(file.path(url, md), destfile = md, mode = "wb")
md <- read_excel(md)
head(data.frame(md))
table(md[,3:4])

如下所示:

> head(data.frame(md)) 
 file_name sample_id condition patient_id
1 PBMC8_30min_patient1_BCR-XL.fcs BCRXL1 BCRXL Patient1
2 PBMC8_30min_patient1_Reference.fcs Ref1 Ref Patient1
3 PBMC8_30min_patient2_BCR-XL.fcs BCRXL2 BCRXL Patient2
4 PBMC8_30min_patient2_Reference.fcs Ref2 Ref Patient2
5 PBMC8_30min_patient3_BCR-XL.fcs BCRXL3 BCRXL Patient3
6 PBMC8_30min_patient3_Reference.fcs Ref3 Ref Patient3
> table(md[,3:4])
 patient_id
condition Patient1 Patient2 Patient3 Patient4 Patient5 Patient6 Patient7 Patient8
 BCRXL 1 1 1 1 1 1 1 1
 Ref 1 1 1 1 1 1 1 1

可以看到总共是16个FCS文件被读入了,来自于8个病人,每个病人都有两个不同的条件下的样品。

组合3个变量成为SingleCellExperiment对象

全部的代码如下:

require(cytofWorkflow)
library(readxl)
url <- "http://imlspenticton.uzh.ch/robinson_lab/cytofWorkflow"
md <- "PBMC8_metadata.xlsx"
download.file(file.path(url, md), destfile = md, mode = "wb")
md <- read_excel(md)
head(data.frame(md))
table(md[,3:4])
# 样本的表型信息

## 真正的表达矩阵
library(HDCytoData)
fs <- Bodenmiller_BCR_XL_flowSet()
# 如果网络不好,也可以自行下载
# 然后:loaded into R as a flowSet using read.flowSet() from the flowCore package

# 这个cytof的panel的抗体信息表格:
panel <- "PBMC8_panel_v3.xlsx"
download.file(file.path(url, panel), destfile = panel, mode = "wb")
panel <- read_excel(panel)
head(data.frame(panel))

# spot check that all panel columns are in the flowSet object
all(panel$fcs_colname %in% colnames(fs))

# 有了样本的表型信息,panel的抗体信息,以及表达量矩阵,就可以构建对象:
# specify levels for conditions & sample IDs to assure desired ordering
md$condition <- factor(md$condition, levels = c("Ref", "BCRXL"))
md$sample_id <- factor(md$sample_id, 
 levels = md$sample_id[order(md$condition)])
# construct SingleCellExperiment
library(CATALYST)
sce <- prepData(fs, panel, md, features = panel$fcs_colname)

就是使用 CATALYST 包的 prepData函数把3个信息整合起来哈。

如果你有自己的FCS文件,就需要使用read.flowSet函数读取,然后自己制作抗体表格,以及样本表型表格。必须要严格follow这里面的例子哦!

随便可以看看这些抗体在我们的不同病人的表达量分布情况:

require(cytofWorkflow)
p <- plotExprs(sce, color_by = "condition")
p$facet$params$ncol <- 6
p

密度图显示,信号值被归一化了:

image-20201112115206542

Comments are closed.