diffcyt 1.18.0
的diffcyt
基于高分辨率聚类和来自转录组学的经验贝叶斯调节测试的组合,包实现了高维细胞术数据中差异发现分析的统计方法。
高维细胞术包括多色流式细胞术、大规模细胞术(CyTOF)和寡核苷酸标记细胞术。这些技术使用抗体来测量数千个细胞中数十种(大约10到100种)标记蛋白的表达水平。在许多实验中,目的是检测不同条件下各组样品(如患病与健康,或治疗与未治疗)细胞群的差异丰度(DA),或细胞群内的差异状态(DS)。
此小插图提供了运行的完整示例工作流diffcyt
管道,使用包装器函数diffcyt ()
,或每个步骤的个别功能。
的输入diffcyt
管道可以加载原始数据.fcs
文件,还是预先准备好的daFrame
对象的催化剂生物导体封装(Chevrier, Crowell, Zanotelli等人,2018)。的催化剂
包包含广泛的功能预处理,探索性分析,和可视化的大规模细胞术(CyTOF)数据。如果使用此选项,预处理和聚类将使用催化剂
.这在以下情况尤其有用催化剂
已经用于探索性分析和可视化;的diffcyt
包可以用于差异测试。有关如何使用的更多细节催化剂
在一起diffcyt
,请参阅催化剂
Bioconductor装饰图案,或我们的扩展CyTOF工作流(Nowicka等人,2019)可从Bioconductor获得。
的diffcyt
该方法包括两个主要组成部分:(i)高分辨率聚类和(ii)改编自转录组学的经验贝叶斯调节检验。
我们使用高分辨率聚类来定义代表细胞群体的大量小簇。默认情况下,我们使用FlowSOM聚类算法(Van Gassen et al., 2015)来生成高分辨率的聚类,因为我们之前证明了这种聚类算法具有出色的聚类性能以及高维细胞术数据的快速运行时间(Weber and Robinson, 2016)。但是,原则上,也可以使用其他可以生成高分辨率聚类的算法。
对于微分分析,我们使用的方法来自刨边机打包(Robinson et al., 2010;麦卡锡等人,2012),limma包(Ritchie et al., 2015),和轰
方法(Law et al., 2014)。这些方法被广泛应用于转录组学领域,并已适应在这里分析高维细胞术数据。此外,我们提供了基于广义线性混合模型(glmm)、线性混合模型(LMs)和线性模型(LMs)的替代方法,这些模型最初由Nowicka等人(2017)实现。
的diffcyt
方法可用于测试细胞群的差异丰度(DA)和细胞群内的差异状态(DS)。
为了做到这一点,该方法需要将蛋白质标记分为“细胞类型”和“细胞状态”标记。细胞类型标记用于定义代表细胞群体的集群,并对其进行差异丰度测试;每个簇的中值细胞状态标记信号用于测试种群内的差异状态。
细胞类型和细胞状态标记的概念分裂促进了生物学的可解释性,因为它允许将结果与已知的细胞类型或感兴趣的群体联系起来。
的diffcyt
模型设置使用户能够指定灵活的实验设计,包括批量效应、配对设计和连续协变量。线性对比用于指定感兴趣的比较。
对统计方法的完整描述和与现有方法的比较在我们的论文中介绍diffcyt
框架(韦伯等人,2019年).
的稳定发布版本diffcyt
包可以使用Bioconductor安装程序安装。注意,这需要R 3.4.0或更高版本。
#从CRAN Install .packages("BiocManager")安装Bioconductor installer ("BiocManager")
要运行此小插图中的所有示例,还需要HDCytoData
而且催化剂
来自Bioconductor的软件包。
BiocManager:安装(“HDCytoData”)BiocManager::安装(“催化剂”)
对于本插图中的示例工作流,我们使用Bodenmiller_BCR_XL
数据集,最初来自Bodenmiller等人(2012)。
这是一个公开的海量细胞术(CyTOF)数据集,由成对的健康外周血单个核细胞(pmcs)样本组成,其中每对样本中有一个样本被B细胞受体/ Fc受体交联剂(BCR-XL)刺激。数据集包含16个样本(8个配对样本);共172,791个细胞;总共有24个蛋白质标记。这些标记包括10个“细胞类型”标记(可用于定义细胞群或簇)和14个“细胞状态”或信号标记。
该数据集包含已知的几种细胞群,特别是B细胞中几种信号标记的强差异表达信号。特别是,观察到的最强差异信号是B细胞中磷酸化S6 (pS6)信号标记(见Nowicka et al., 2017,图29)。在这个工作流程中,我们将展示如何执行差分测试来恢复这个信号。
的Bodenmiller_BCR_XL
数据集可以方便地从HDCytoDataBioconductor“实验数据”包。它可以被装入SummarizedExperiment
或flowSet
格式。这里,我们用flowSet
格式,这是流式和大规模细胞术界的标准。对于一些替代的分析管道,使用SummarizedExperiment
格式可能更方便。方法中的此数据集的帮助文件,请参阅详细信息HDCytoData
包(库(HDCytoData)
;Bodenmiller_BCR_XL ?
).
suppressPackageStartupMessages(库(HDCytoData))
## snapshotDate(): 2022-10-24
#下载和加载'Bodenmiller_BCR_XL'数据集的'flowSet'格式d_flowSet <- Bodenmiller_BCR_XL_flowSet()
##参见?HDCytoData和browseVignettes('HDCytoData')的文档
##从缓存加载
## updateObjectFromSlots(object,…, verbose = verbose): drop ## slot(s)'colnames' from object = 'flowSet'
suppressPackageStartupMessages(library(flowCore)) #检查数据格式
##一个包含16个实验的流集。## ##列名(39):Time Cell_length…sample_id population_id
# pData(d_flowSet)
## PBMC8_30min_patient1_BCR-XLfcs PBMC8_30min_patient1_BCR-XL。fcs ## PBMC8_30min_patient1_Reference。fcs PBMC8_30min_patient1_Reference。这是一个很好的例子。fcs PBMC8_30min_patient2_BCR-XL。fcs ## PBMC8_30min_patient2_Reference。fcs PBMC8_30min_patient2_Reference。这是一个很好的例子。fcs PBMC8_30min_patient3_BCR-XL。fcs ## PBMC8_30min_patient3_Reference。fcs PBMC8_30min_patient3_Reference。在这里输入译文fcs PBMC8_30min_patient4_BCR-XL。fcs ## PBMC8_30min_patient4_Reference。fcs PBMC8_30min_patient4_Reference。这是一个很好的例子。fcs PBMC8_30min_patient5_BCR-XL。fcs ## PBMC8_30min_patient5_Reference。fcs PBMC8_30min_patient5_Reference。这是一个很好的例子。fcs PBMC8_30min_patient6_BCR-XL。fcs ## PBMC8_30min_patient6_Reference。fcs PBMC8_30min_patient6_Reference。这是一个很好的例子。fcs PBMC8_30min_patient7_BCR-XL。fcs ## PBMC8_30min_patient7_Reference。fcs PBMC8_30min_patient7_Reference。这是一个很好的例子。fcs PBMC8_30min_patient8_BCR-XL。fcs ## pbmc8_30min_patient8_参考。fcs PBMC8_30min_patient8_Reference.fcs
fsApply(d_flowSet, nrow)
## [,1] [font =宋体]fcs 2838 ## PBMC8_30min_patient1_Reference。这是一个非常重要的问题。fcs 16675 ## pbmc8_30min_patient2_参考。fcs, fcs, fcs。fcs 12252 ## pbmc8_30min_patient3_参考。fcs 9434 ## PBMC8_30min_patient4_BCR-XLfcs 8990 ## PBMC8_30min_patient4_Reference。这是一个非常好的例子。fcs 8543 ## pbmc8_30min_patient5_参考。这是一种很好的方法。fcs 8622 ## pbmc8_30min_patient6_参考。fcs 11038 ##fcs 14770 ## pbmc8_30min_patient7_参考。这是一个非常重要的问题。fcs 11653 ## pbmc8_30min_patient8_参考。fcs 13670
# dimensions dim(exprs(d_flowSet[[1]]))
## [1] 2838 39
#表达式值exprs(d_flowSet[[1]])[1:6, 1:5]
## Time Cell_length CD3(110:114)Dd CD45(In115)Dd BC1(La139)Dd ## [1,] 33073 30 120.823265 454.6009 576.8983 ## [2,] 36963 35 135.106171 624.6824 564.6299 ## [3,] 37892 30 -1.664619 601.0125 3077.2668 ## [4,] 41345 58 115.290245 820.7125 6088.5967 ## [5,] 42475 35 14.373802 326.6405 4606.6929 ## [6,] 44620 31 37.737877 557.0137 4854.1519
或者,可以直接从一组.fcs
文件使用以下代码。注意,我们使用选项变换= FALSE
而且truncate_max_range = FALSE
控件执行的自动转换和数据截断flowCore
包中。的自动选项flowCore
软件包是针对流式细胞术数据而不是大规模细胞术数据进行优化的,因此这些选项应该对大规模细胞术数据禁用。)
#或者:从'加载数据。Fcs的files files <- list。文件(path = "path/to/ Files ", pattern = "\\. "fcs$", full.names = TRUE) d_flowSet <-读取。flowSet(files, transformation = FALSE, truncate_max_range = FALSE )
接下来,我们设置所需的“元数据”diffcyt
管道。元数据描述了本实验或数据集的样本和蛋白质标记。元数据应该保存在两个数据帧中:experiment_info
而且marker_info
.
的experiment_info
数据帧包含每个样本的信息,包括样本id、组id、批id或患者id(如果相关),连续协变量,如年龄(如果相关),以及任何其他因素或协变量。在许多实验中,主要的兴趣比较将是群体id因子的水平之间(也可以称为条件或治疗;例如,有病的vs.健康的,治疗过的vs.未治疗的)。
的marker_info
数据帧包含蛋白质标记的信息,包括通道名称、标记名称和每个标记的类别(细胞类型或细胞状态)。
下面,我们手动创建这些数据帧。根据您的实验,可能更方便保存在电子表格中的元数据. csv
格式,然后可以使用read.csv
.
此处应特别注意确保所有样品和标记物的顺序正确。在下面的代码中,我们显示最终的数据帧来检查它们。
#元数据:实验信息#检查样本顺序文件名<- as.character(pData(d_flowSet)$name) #样本信息sample_id <- gsub("^PBMC8_30min_", "", gsub("\\ \。fcs”、“美元”,文件名)group_id < -因子(gsub(“^病人[0 - 9 ]+_", "", sample_id),水平= c(“参考”、“BCR-XL”))patient_id < -因子(gsub(“_。*$", "", sample_id)) experiment_info <- data.frame(group_id, patient_id, sample_id, stringsAsFactors = FALSE
# # 1 # # group_id patient_id sample_id BCR-XL patient1 patient1_BCR-XL # # 2参考patient1 patient1_Reference # # 3 BCR-XL受事2 patient2_BCR-XL # # 4参考受事2 patient2_Reference # # 5 BCR-XL patient3 patient3_BCR-XL # # 6参考patient3 patient3_Reference # # 7 BCR-XL patient4 patient4_BCR-XL # # 8引用patient4 patient4_Reference # # 9 BCR-XL patient5 patient5_BCR-XL # # 10参考patient5 patient5_Reference # # 11 BCR-XL patient6 patient6_BCR-XL patient6 # # 12参考13 BCR-XL patient7 patient7_BCR-XL 14参考patient7 patient7_参考15 BCR-XL patient8 patient8_BCR-XL 16参考patient8 patient8_参考
#元数据:标记信息#来源:Bruggner et al.(2014),表1 #所有标记、谱系标记和功能标记的列索引cols_markers <- c(3:4, 7:9, 11:19, 21:22, 24:26, 28:31, 33) cols_lineage <- c(3:4, 9,11,12,14,21,29,31,33) cols_func <- setdiff(cols_markers, cols_lineage) #通道和标记名称channel_name <- colnames(d_flowSet) markker_name <- gsub("\\(。*$", "", channel_name) #标记类#注:使用'cell type'的谱系标记,以及# 'cell state'的功能标记marker_class <- rep("none", ncol(d_flowSet[[1]])) marker_class[cols_lineage] <- "type" marker_class[cols_func] <- "state" marker_class <- factor(marker_class, levels = c("type", "state", "none")) marker_info <- data.frame(channel_name, marker_name, marker_class, stringsAsFactors = FALSE) marker_info
# # 1 # # channel_name marker_name marker_class时间时间没有# # 2 Cell_length Cell_length没有# # 3 CD3 (110:114) Dd CD3类型# # 4 CD45 (In115) Dd CD45类型群体BC1 (La139) # # 5 Dd群体BC1没有# # 6 BC2 (Pr141) Dd BC2没有# # 7 pNFkB (Nd142) Dd pNFkB状态# # 8 pp38 (Nd144) Dd pp38状态# # 9 CD4 (Nd145) Dd CD4类型# # 10 BC3 (Nd146) Dd BC3没有# # 11 CD20 (Sm147) Dd CD20类型# # 12 CD33 (Nd148) Dd CD33类型# # 13 pStat5 (Nd150) Dd pStat5状态# # 14 CD123 (Eu151) Dd CD123类型# # 15 pAkt (Sm152) Dd pAkt状态# # 16pStat1 (Eu153) Dd pStat1状态# # 17 pSHP2 (Sm154) Dd pSHP2状态# # 18 pZap70 (Gd156) Dd pZap70状态# # 19 pStat3 (Gd158) Dd pStat3状态# # 20 BC4 (Tb159) Dd BC4没有# # 21 CD14 (Gd160) Dd CD14类型# # 22 pSlp76 (Dy164) Dd pSlp76状态# # 23 BC5 (Ho165) Dd BC5没有# # 24 pBtk (Er166) Dd pBtk状态# # 25 pPlcg2 (Er167) Dd pPlcg2状态# # 26活跃(Er168) Dd活跃状态# # 27 BC6 (Tm169) Dd BC6没有# # 28平台(Er170) Dd平台状态# # 29 IgM (Yb171) Dd IgM类型30魔法石第六章(Yb172) # # # # 31 HLA-DR Dd魔法石第六章状态(Yb174) Dd HLA-DR类型## 32 BC7(Lu175)Dd BC7无## 33 CD7(Yb176)Dd CD7类型## 34 DNA-1(Ir191)Dd DNA-1无## 35 DNA-2(Ir193)Dd DNA-2无## 36 group_id group_id无## 37 patient_id patient_id无## 38 sample_id sample_id无## 39 population_id population_id无
要计算差分测试,请使用diffcyt
函数需要一个描述实验设计的设计矩阵(或模型公式)。(设计矩阵和模型公式之间的选择取决于所使用的差分测试方法;有关详细信息,请参阅差异测试方法的帮助文件。)
可以使用该函数以所需的格式创建设计矩阵createDesignMatrix ()
.方法需要设计矩阵diffcyt-DA-edgeR
(DA测试的默认方法),diffcyt-DA-voom
,diffcyt-DS-limma
(DS测试的默认方法)。
类似地,可以使用函数创建模型公式createFormula ()
.可供选择的方法需要模型公式diffcyt-DA-GLMM
(DA测试)和diffcyt-DS-LMM
(DS测试)。
在这两种情况下,灵活的实验设计是可能的,包括块(例如批量效应或配对设计)和连续协变量。看到createDesignMatrix ?
或createFormula ?
获取更多细节和示例。
请注意,在这里显示的示例中,我们包含了group_id
而且patient_id
设计矩阵中:group_id
是差分测试的感兴趣因子吗patient_id
之所以包含,是因为该数据集包含来自每个患者的配对样本。(仅适用于未配对数据集group_id
将包括在内。)
suppressPackageStartupMessages(library(diffcyt)) #创建设计矩阵#注意:选择包含组id和患者id的列(对于#未配对的数据集,只包括组id)
为了计算差分试验,还需要一个对比矩阵。对比矩阵指定了兴趣的比较,即在零假设下假设为零的模型参数的组合。
可以使用该函数以所需的格式创建对比矩阵createContrast ()
.这个函数需要一个参数:定义对比度的数值向量。在许多情况下,这只是一个0的向量和一个等于1的单项,它将测试单个参数是否等于0。如果使用了设计矩阵,则条目对应于设计矩阵的列;如果使用了模型公式,则条目对应于固定效应项的水平。
看到createContrast ?
欲知详情。
这里,我们感兴趣的是比较条件BCR-XL
反对参考
,即比较BCR-XL
水平对照参考
的级别group_id
考虑到experiment_info
数据帧。这对应于测试列的系数是否为group_idBCR-XL
在设计矩阵中设计
等于0。这种对比可以如下所示。(注意,每个系数都有一个值,包括截距项;最终对比矩阵中的行对应设计矩阵中的列。)
#创建对比矩阵对比度<- createContrast(c(0,1, rep(0,7))) #检查nrow(对比度)== ncol(设计)
##[1]真
Data.frame(参数= colnames(design),对比度)
##参数对比## 1(截取)0 ## 2 group_idBCR-XL 1 ## 3 patient_idpatient2 0 ## 4 patient_idpatient3 0 ## 5 patient_idpatient4 0 ## 6 patient_idpatient5 0 ## 7 patient_idpatient6 0 ## 8 patient_idpatient7 0 ## 9 patient_idpatient8 0 ##
上面的步骤展示了如何加载数据、设置元数据、设置设计矩阵和设置对比矩阵。现在,我们可以开始计算差分测试了。
控件的运行有几个可供选择的选项diffcyt
微分测试函数。哪种方法最方便取决于您正在运行的分析或管道的类型。选项是:
选项1:使用装载的输入数据运行包装器函数.fcs
文件。输入数据可以作为flowSet
,或列表
的flowFrames
,DataFrames
,或data.frames
.
选项2:使用以前创建的包装器函数运行包装器催化剂
daFrame
对象。
选项3:为管道运行单独的函数。
属性来演示这些选项Bodenmiller_BCR_XL
上面描述的示例数据集。
的diffcyt
包中包含一个名为diffcyt ()
的所有步骤中,它接受各种格式的输入数据并运行diffcyt
按照正确的顺序进行管道。
在本节中,我们将展示如何使用装载的输入数据运行包装器函数.fcs
文件作为flowSet
对象。加载数据的过程是相同的.fcs
文件作为列表
的flowFrames
,DataFrames
,或data.frames
.看到diffcyt ?
欲知详情。
所需要的主要输入diffcyt ()
此选项的包装器函数是:
d_input
(输入数据)experiment_info
(描述样本的元数据)marker_info
(描述标记的元数据)设计
(设计矩阵)对比
(对比矩阵)此外,我们需要参数来指定分析的类型和(可选的)要使用的方法。
analysis_type
(分析类型:DA或DS)method_DA
(可选:DA测试方法;默认是diffcyt-DA-edgeR
)method_DS
(可选:DS检测方法;默认是diffcyt-DS-limma
)还提供了一些用于可选参数选择的附加参数;例如,指定用于差异测试的标记,用于聚类、子抽样、转换选项、聚类选项、过滤和归一化的标记。有关完整的详细信息,请参阅包装器函数的帮助文件(diffcyt ?
).
下面,我们运行包装器函数两次:一次测试集群的差异丰度(DA),另一次测试集群内的差异状态(DS)。注意,在Bodenmiller_BCR_XL
数据集,主要的差异信号(我们试图恢复的信号)是B细胞内磷酸化S6 (pS6)的差异表达(即DS测试)。因此,在这种情况下,DA测试在生物学方面没有特别的意义;但是为了演示目的,我们将它们包括在这里,以便展示如何运行这些方法。
差异检验的主要结果包括每个聚类(DA检验)或每个聚类-标记组合(DS检验)的调整后的p值,可用于根据差异证据的强度对聚类或聚类-标记组合进行排序。这个函数topTable ()
可用于显示顶部(最显著)检测到的群集或群集标记组合的结果表。我们还使用从的输出topTable ()
在给定调整后的p值阈值处,生成检测到的集群或集群标记组合的数量的汇总表。看到diffcyt ?
而且topTable ?
欲知详情。
#测试集群的差异丰度(DA) #注:使用默认方法'diffcyt-DA- edger '和默认参数#注:包括随机种子用于可再现的聚类out_DA <- diffcyt(d_input = d_flowSet, experiment_info = experiment_info, marker_info = marker_info, design = design, contrast = contrast, analysis_type = "DA", seed_clustering = 123)
##准备数据…
##转换数据…
##生成集群…
## FlowSOM集群在7.6秒内完成
##计算功能…
##使用方法“diffcyt-DA-edgeR”计算DA测试…
topTable(out_DA, format_vals = TRUE)
## 20行3列的数据帧## cluster_id p_val p_adj ## <因子> <数字> <数字> ## 97 97 1.92e-51 1.92e-49 ## 33 6.18e-41 3.09e-39 ## 8 8 7.72e-36 2.57e-34 ## 43 43 2.23e-34 5.58e-33 ## 9 9 2.41e-32 4.82e-31 ## # ... ... ... ...## 26 26 1.36e-21 8.50e-21 ## 6 6 7.04e-21 4.14e-20 ## 73 73 1.28e-20 7.09e-20 ## 31 31 7.02e-19 3.69e-18 ## 89 89 3.60e-18 1.80e-17
#计算10%错误发现率(FDR)阈值<- 0.1时检测到的重要DA集群数量res_DA_all <- topTable(out_DA, all = TRUE) table(res_DA_all$p_adj <= threshold)
76 . ## ##假真## 24
#测试集群内的差异状态(DS) #注:使用默认方法'diffcyt-DS-limma'和默认参数#注:包括随机种子用于可再现的聚类out_DS <- diffcyt(d_input = d_flowSet, experiment_info = experiment_info, marker_info = marker_info, design =设计,contrast =对比,analysis_type = "DS", seed_clustering = 123, plot = FALSE)
##准备数据…
##转换数据…
##生成集群…
## FlowSOM集群在8.1秒内完成
##计算功能…
使用“diffcyt-DS-limma”方法计算DS测试…
##警告:14个探头的部分NA系数
topTable(out_DS, format_vals = TRUE)
# 30 30 pS6 1.18e-11 1.65 -08 ## 19 19 pS6 1.10e-10 7.69e-08 ## 19 19 pPlcg2 7.22e-10 3.03e-07 ## 10 10 pS6 1.08e-09 3.03e-07 ## 20 20 pS6 1.01e-09 3.03e-07 ## ... ... ... ... ...## 19 19 pAkt 5.66e-07 4.95e-05 ## 39 39 pNFkB 6.37e-07 4.96e-05 ## 45 45 pBtk 6.35e-07 4.96e-05 ## 19 19 pZap70 9.49e-07 5.81e-05 ## 4 4 pBtk 9.13e-07 5.81e-05
#计算在# 10%错误发现率阈值<- 0.1 res_DS_all <- topTable(out_DS, all = TRUE) table(res_DS_all$p_adj <= threshold)
## ##假真## 570 830
运行的第二个选项diffcyt
管道是提供先前创建的催化剂daFrame
对象的输入diffcyt ()
包装器函数。如上所述,催化剂
包包含广泛的功能预处理,探索性分析,和可视化的大规模细胞术(CyTOF)数据。此选项在以下情况下特别有用催化剂
已经用于探索性分析(包括聚类)和可视化。的diffcyt
然后可以使用现有的方法来计算差分试验daFrame
对象(特别是重用存储在daFrame
对象)。
如上所述,选项1的diffcyt ()
包装器函数需要几个参数来指定输入和分析类型,并提供其他参数来指定可选参数选择。请注意参数experiment_info
而且marker_info
在本例中不需要,因为此信息已经包含在催化剂
daFrame
对象。一个附加的论证clustering_to_use
还提供了,它允许用户从存储在daFrame
对象;然后,这组群集标签将用于差异测试。看到diffcyt ?
欲知详情。
有关如何使用的进一步详细信息催化剂
在一起diffcyt
,请参阅催化剂
Bioconductor装饰图案,或我们的扩展CyTOF工作流(Nowicka等人,2019)可从Bioconductor获得。
方法中的各个步骤运行函数,以提供额外的灵活性diffcyt
管道,而不是使用包装器函数。如果您希望定制或修改管道的某些部分,这可能是有用的;例如,调整数据转换,或替换不同的聚类算法。运行单独的步骤还可以提供对方法的额外了解。
中的后续函数所需的格式是第一步diffcyt
管道。数据对象d_se
在行中包含单元格,在列中包含标记。看到prepareData ?
欲知详情。
#准备数据d_se <- prepareData(d_flowSet, experiment_info, marker_info)
接下来,使用对象转换数据arcsinh
变换辅因子= 5
.这是用于大规模细胞术(CyTOF)数据的标准转换,它使数据更接近正态分布,提高聚类性能和可视化。看到transformData ?
欲知详情。
#转换数据d_se <- transformData(d_se)
默认情况下,我们使用FlowSOM聚类算法(Van Gassen et al., 2015)生成高分辨率聚类。原则上,其他能够生成大量聚类的聚类算法也可以被替代。看到generateClusters ?
欲知详情。
#生成集群#注意:包含随机种子用于可复制的集群d_se <- generatecluster (d_se, seed_clustering = 123)
## FlowSOM集群在8.2秒内完成
接下来,计算数据特征:聚类细胞计数和聚类中位数(每个聚类和样本的中位数标记表达式)。这些对象是计算差动试验所必需的。看到calcCounts ?
而且calcMedians ?
欲知详情。
#计算集群细胞计数d_counts <- calcCounts(d_se) #计算集群中位数d_medians <- calcMedians(d_se)
使用其中一种差异丰度(DA)测试方法(diffcyt-DA-edgeR
,diffcyt-DA-voom
,或diffcyt-DA-GLMM
).这还需要一个设计矩阵(或模型公式)和对比矩阵,就像前面那样。我们重新使用上面创建的设计矩阵和对比矩阵,以及DA测试的默认方法(diffcyt-DA-edgeR
).
主要结果包括每个聚类的调整p值,可以用来根据它们的差异丰度证据对聚类进行排名。原始p值和调整后的p值存储在rowData
的SummarizedExperiment
输出对象。详情请参见testDA_edgeR ?
,testDA_voom ?
,或testDA_GLMM ?
.
和前面一样,我们也可以使用函数topTable ()
显示顶部(最显著性)检测到的DA聚类的结果表,并生成在给定调整后的p值阈值下检测到的DA聚类数量的汇总表。看到topTable ?
欲知详情。
#测试集群的差异丰度(DA) res_DA <- testDA_edgeR(d_counts, design, contrast) #显示顶级DA集群的结果表topTable(res_DA, format_vals = TRUE)
## 20行3列的数据帧## cluster_id p_val p_adj ## <因子> <数字> <数字> ## 97 97 1.92e-51 1.92e-49 ## 33 6.18e-41 3.09e-39 ## 8 8 7.72e-36 2.57e-34 ## 43 43 2.23e-34 5.58e-33 ## 9 9 2.41e-32 4.82e-31 ## # ... ... ... ...## 26 26 1.36e-21 8.50e-21 ## 6 6 7.04e-21 4.14e-20 ## 73 73 1.28e-20 7.09e-20 ## 31 31 7.02e-19 3.69e-18 ## 89 89 3.60e-18 1.80e-17
#计算10%错误发现率(FDR)阈值<- 0.1时检测到的重要DA集群数量table(topTable(res_DA, all = TRUE)$p_adj <= threshold)
76 . ## ##假真## 24
使用其中一种DS测试方法(diffcyt-DS-limma
或diffcyt-DS-LMM
).这还需要一个设计矩阵(或模型公式)和对比矩阵,就像前面那样。我们重新使用上面创建的设计矩阵和对比矩阵,以及DS测试的默认方法(diffcyt-DS-limma
).
我们测试所有“细胞状态”标记的差异表达。要测试的标记集也可以使用可选参数进行调整markers_to_test
(例如,如果您还希望计算“细胞类型”标记的测试)。
主要结果包括每个簇-标记组合(仅为细胞状态标记)的调整p值,可用于根据其差异状态的证据对簇-标记组合进行排名。原始p值和调整后的p值存储在rowData
的SummarizedExperiment
输出对象。详情请参见diffcyt-DS-limma ?
或diffcyt-DS-LMM ?
.
和前面一样,我们也可以使用函数topTable ()
显示检测到的最显著的DS聚类标记组合的结果表(注意,每个聚类标记组合都有一个测试结果),并生成在给定调整后的p值阈值下检测到的DS聚类标记组合的数量的汇总表。看到topTable ?
欲知详情。
#测试集群内的差异状态(DS) res_DS <- testDS_limma(d_counts, d_medians, design, contrast, plot = FALSE)
##警告:14个探头的部分NA系数
topTable(res_DS, format_vals = TRUE)
# 30 30 pS6 1.18e-11 1.65 -08 ## 19 19 pS6 1.10e-10 7.69e-08 ## 19 19 pPlcg2 7.22e-10 3.03e-07 ## 10 10 pS6 1.08e-09 3.03e-07 ## 20 20 pS6 1.01e-09 3.03e-07 ## ... ... ... ... ...## 19 19 pAkt 5.66e-07 4.95e-05 ## 39 39 pNFkB 6.37e-07 4.96e-05 ## 45 45 pBtk 6.35e-07 4.96e-05 ## 19 19 pZap70 9.49e-07 5.81e-05 ## 4 4 pBtk 9.13e-07 5.81e-05
#计算在# 10%错误发现率(FDR)阈值<- 0.1的情况下检测到的DS集群标记组合的数量
## ##假真## 570 830
根据分析的类型,将数据导出到可能有用.fcs
文件或其他格式;例如,使用其他软件进行进一步分析。这可以在任何阶段完成diffcyt
管道使用的标准函数flowCore
包中。
下面的代码提供了一个示例,演示如何导出.fcs
包含每个细胞的组id、患者id、样本id和群集标签的文件。例如,对于希望在外部软件中进一步分析相同集群的用户来说,这可能很有用。
对于本例,我们使用输出对象out_DA
从运行包装器函数diffcyt ()
(选项1)测试集群的差异丰度(DA)。
#从'diffcyt()'包装器函数名输出对象(out_DA)
## [1] "res" "d_se" "d_counts"
暗(out_DA d_se美元)
## [1] 172791 39
rowData (out_DA d_se美元)
## group_id patient_id sample_id cluster_id ## ## 1 BCR-XL patient1 patient1_BCR-XL 95 ## 2 BCR-XL patient1 patient1_BCR-XL 72 ## 3 BCR-XL patient1 patient1_BCR-XL 11 ## 4 BCR-XL patient1 patient1_BCR-XL 51 ## 5 BCR-XL patient1 patient1_BCR-XL 22 ## ... ... ... ... ...172787参考文献patient8 patient8_参考文献96 ## 172789参考文献patient8 patient8_参考文献92 ## 172790参考文献patient8 patient8_参考文献91 ## 172791参考文献patient8 patient8_参考文献21
str(化验(out_DA d_se美元))
## num[1:172791, 1:39] 33073 36963 37892 41345 42475…## - attr(*, "dimnames")=列表2 ## ..$: null ##…美元:空空的[1:39]“时间”“Cell_length”“CD3”“CD45”…
头(化验(out_DA d_se美元),2)
## Time Cell_length CD3 CD45 BC1 BC2 pNFkB pp38 ## [1,] 33073 30 3.878466 5.203159 576.8983 10.005730 2.968545 0.5486397 ## [2,] 36963 35 3.990112 5.520969 564.6299 5.599113 2.609338 -0.1434845 ## CD4 BC3 CD20 CD33 pStat5 CD123 pAkt ## [1,] 4.576125 11.514709 -0.04275126 -0.02280228 1.208487 -0.1050299 2.796846 ## [2,] 4.952275 5.004433 -0.13478894 -0.18088905 2.345715 1.0839967 4.474955 ## pStat1 pSHP2 pZap70 pStat3 BC4 CD14 pSlp76 ## # [1,] 2.678996 0.5499532 2.76941084 -0.1362253 3.152275-0.1077868 0.3665146 ## [2,] 0.735040 -0.1516414 -0.04327872 -0.1010137 -0.0946994 BC5 pBtk pPlcg2 pErk BC6 pLat ## [1,] -0.2847748 -0.1933098 1.5554296 0.6218593 -0.4900131 2.76203120 ## [2,] 5.2941360 0.5914230 0.6249868 -0.1375994 0.2871704 -0.05392741 ## IgM pS6 HLA-DR BC7 CD7 DNA-1 DNA-2 ## [1,] -0.11722553 0.003981008 -0.07016641 119.4165 3.274793 268.2261 497.0998 ## [2,] -0.04462325 0.403973545 0.31650319 ## group_id patient_id ## #Sample_id population_id ## [1,] 2 1 1 3 ## [2,] 2 1 1 3
#提取细胞级别的表导出为。fcs文件#注意:包括组id,患者id,样本id和群集标签#每个细胞#注意:表必须是一个数字矩阵(保存为。fcs文件)d_fcs <-化验(out_DA$d_se)类(d_fcs)
##[1]“矩阵”“数组”
#保存为。fcs文件filename_fcs <- "exported_data. "fcs”写。FCS(flowFrame(d_fcs), filename = filename_fcs) #或者,另存为tab分隔的.txt文件filename_txt <- "exported_data.txt" write。table(d_fcs, file = filename_txt, quote = FALSE, sep = "\t", row.names = FALSE)
如本文所述,介绍了diffcyt
框架(韦伯等人,2019年)的结果diffcyt
差异分析以调整后的p值的形式提供给用户,允许识别显著的检测聚类集(用于DA测试)或聚类-标记组合(用于DS测试)。然后可以使用可视化来解释检测到的集群或集群标记组合;例如,解释标记表达谱,以便将检测到的聚类与已知细胞群匹配,或将高分辨率聚类分组为具有一致表型的更大的细胞群。
中提供了用于生成探索性可视化和差分测试结果可视化的广泛绘图函数催化剂包装(Chevrier, Crowell, Zanotelli等人,2018)。这些绘图函数用于我们的CyTOF工作流(Nowicka等人,2019)可从Bioconductor获得。有关更多详细信息,包括进一步的可视化示例,请参见CyTOF工作流或者是催化剂
Bioconductor装饰图案.热图是使用ComplexHeatmapBioconductor包;Gu等人,2016。)
在这里,我们生成热图来说明上面执行的差异分析的结果。注意催化剂
绘图函数可以接受diffcyt
结果对象SummarizedExperiment
格式(从上述选项1和3)或催化剂
daFrame
格式(选项2)。
该热图说明了DA试验中检测到的顶部(最显著)聚类的表型(标记表达谱)和感兴趣的信号(样本的聚类丰度)。
行表示簇,列表示蛋白质标记(左图)或样本(右图)。左面板显示了所有样本的细胞类型标记(即集群表型)的中位数(arcsin转换)表达值。右侧面板显示感兴趣的信号:样本的簇丰度(用于DA测试)。右边的注释条表示在调整后的p值阈值为10%时检测到显著差异的集群。
如前所述,DA测试对于Bodenmiller_BCR_XL
由于该数据集中主要感兴趣的信号是pS6和其他信号标记在B细胞和其他几个细胞群中的差异表达。但是,我们在这里包含了用于说明目的的图表,以显示如何使用这些函数。
(注意:对于下面的示例,我们使用包含在diffcyt
包装,而不是使用催化剂
.这样做是为了减少依赖,以简化安装和编译diffcyt
包装和小插图。生成热图使用的替代代码催化剂
还显示;这个版本包括额外的格式,通常是首选的。)
看到plotDiffHeatmap ?
(催化剂
)或plotHeatmap ?
(diffcyt
)浏览详情。
#使用可选参数'sample_order'根据条件对样本进行分组sample_order <- c(seq(2,16, by = 2), seq(1,16, by = 2)) plotHeatmap(out_DA, analysis_type = "DA", sample_order = sample_order)
#顶部检测到的DA集群的热图(使用'CATALYST'的替代代码)suppressPackageStartupMessages(library(CATALYST)) plotDiffHeatmap(out_DA$d_se, out_DA$res)
该热图说明了从DS测试中检测到的顶部(最显著性)群集-标记物组合的表型(标记物表达谱)和感兴趣的信号(样本细胞状态标记物的中位表达)。
行表示聚类标记组合,列表示蛋白质标记(左面板)或样本(右面板)。左面板显示了所有样本的细胞类型标记(即集群表型)的中位数(arcsin转换)表达值。右面板显示感兴趣的信号:样本细胞状态标记的中位数表达(用于DS测试)。右边的注释条表示在调整后的p值阈值为10%时检测到显著差异的群集标记组合。
热图显示diffcyt
Pipeline已经成功地恢复了该数据集中感兴趣的主要差分信号。如上所述,Bodenmiller_BCR_XL
数据集包含已知的几种信号标记(细胞状态标记)在几种细胞群中的强差异表达。特别是pS6在B细胞中的差异表达信号最强。
正如预期的那样,几个顶部(最显著)检测到的群集标记组合代表了B细胞中pS6的差异表达(右侧注释栏中的标签)(由CD20的高表达识别,左图)。同样,热图中显示的其他顶部检测到的群集标记组合对应于该数据集中其他已知的强差分信号(参见Nowicka等人,2017,图29;或者数据集的结果描述BCR-XL
在本文中介绍了diffcyt
框架(韦伯等人,2019年).
(注意:对于下面的示例,我们使用包含在diffcyt
包装,而不是使用催化剂
.这样做是为了减少依赖,以简化安装和编译diffcyt
包装和小插图。生成热图使用的替代代码催化剂
还显示;这个版本包括额外的格式,通常是首选的。)
看到plotDiffHeatmap ?
(催化剂
)或plotHeatmap ?
(diffcyt
)浏览详情。
#热图顶部检测到的DS集群标记组合#注意:使用可选参数'sample_order'来根据条件对样本进行分组sample_order <- c(seq(2,16, by = 2), seq(1,16, by = 2)) plotHeatmap(out_DS, analysis_type = "DS", sample_order = sample_order)
#检测到的DA集群的热图(使用'CATALYST'的替代代码)suppressPackageStartupMessages(library(CATALYST)) plotDiffHeatmap(out_DS$d_se, out_DS$res)
Bodenmiller, B., Zunder, E. R., Finck, R., Chen, T. J., savg, E. S., Bruggner, R. V., Simonds, E. F., Bendall, S. C., Sachs, K., Krutzik, P. O.和Nolan, G. P.(2012)。小分子调控因子干扰下细胞状态的多路海量细胞分析。生物技术学报,30(9):858-867。
谢维里尔,S.,克罗威尔,H. L.,扎诺泰利,V. R. T.,恩格勒,S.,罗宾逊,医学博士,博登米勒,B.(2018)。悬液中信号外溢的补偿与成像细胞术。细胞系统,6:1-9。
Gu, Z., Eils, R.和Schlesner, M.(2016)。复杂的热图揭示了多维基因组数据的模式和相关性。生物信息学,32(18):2847 - 2849。
(2014)。voom:精确权重解锁线性模型分析工具用于RNA-seq读取计数。中国生物工程学报,2014,29(4):329。
麦卡锡,D. J.,陈,Y.和史密斯,G. K.(2012)。生物变异方面的多因素RNA-Seq实验差异表达分析。核酸研究,40(10):4288-4297。
诺维卡,M.,克里格,C.,韦伯,L. M.,哈特曼,F. J.,古格列塔,S.,贝歇尔,B.,莱韦斯克,M. P.和罗宾逊,M.(2017)。CyTOF工作流程:高通量高维细胞术数据集的差异发现。F1000Research,版本2。
诺维卡,M.,克里格,C.,克罗威尔,H. L.,韦伯,L. M.,哈特曼,F. J.,古格列塔,S.,贝希尔,B.,莱韦斯克,M. P.和罗宾逊,M.(2019)。CyTOF工作流程:高通量高维细胞术数据集的差异发现。F1000Research,第三版。
Ritchie, M. E, Phipson, B., Wu, D., Hu, Y., Law, c.w ., Shi, W.和Smyth, G. K.(2015)。用于rna测序和微阵列研究的limma幂差表达分析。核酸研究,43(7):e47。
罗宾逊,m.d.,麦卡锡,d.j.和史密斯,g.k.(2010)。edgeR:用于数字基因表达数据差异表达分析的Bioconductor包。生物信息学,26(1):139 - 140。
Van Gassen, S., Callebaut, B., Van Helden, M. J., Lambrecht, B. N., Demeester, P., Dhaene, T., and Saeys, Y.(2015)。FlowSOM:使用自组织地图进行细胞术数据的可视化和解释。细胞分析仪A部分,87A: 636-645。
韦伯,L. M.和罗宾逊,M.(2016)。高维单细胞流式与海量细胞术数据聚类方法的比较。细胞分析仪A部分,89A: 1084-1096。
韦伯,硕士,诺维卡,硕士,森森,C,和罗宾逊,医学博士(2019)。diffcyt:通过高分辨率聚类在高维细胞术中鉴别发现。bioRxiv。