在这里,我们将说明如何选择和使用预先注册的适当的门控方法openCyto包中。用户总是可以定义自己的选通算法,并将它们注册为插件函数openCyto框架,看到registerPlugins ?为更多的细节。

注意,下面演示的所有函数名都有前缀指示它们只是注册的包装器函数openCyto.实际的控制引擎包装器后面可以来自其他包(例如。flowCoreflowClust).所有这些包装器都有这些公共接口:*fr:一个flowFrame对象*pp_res:一个可选的pre-preocessing结果,在本文档中可以忽略*渠道:用于门控*的通道名称...:任何其他门控参数传递给实际门控引擎

库(flowCore)库(flowWorkspace)库(openCyto)库(ggcyto) gs <- load_gs(system。file("extdata/gs_bcell_auto", package = "flowWorkspaceData"))

1 d控制方法

mindensity

这个门控函数的名字是不言自明的,即在一维密度图中寻找最小值作为负峰和正峰之间的切点。它是快速的,健壮的,非常容易使用的,特别是当两者之间有很好的分离+而且-数量/峰值。

例如,它通常很容易被打开CD3通道,无需向方法提供任何参数。

fr <- gh_pop_get_data(gs[[2]], "Live", returnType = "flowFrame") chnl <- "CD3" g <- openCyto:::. gh_pop_get_data(gs[[2]], "Live", returnType = "flowFrame")mindensity(fr, channels = chnl) autoplot(fr, chnl) + geom_gate(g) autoplot(fr, chnl, "SSC-A") + geom_gate(g)

然而,当有超过2密度剖面中检测到的主要峰/种群。

fr <- gh_pop_get_data(gs[[1]], "boundary", returnType = "flowFrame") chnl <- "FSC-A" g <- openCyto:::。mindensity(fr, channels = chnl) mylimits <- ggcyto_par_set(limits = "instrument") p <- autoplot(fr, chnl) + mylimits p + geom_gate(g) autoplot(fr, chnl, "SSC-A") + geom_gate(g)

这里我们要移除细胞碎片由第一个负峰表示。但mindensity第二峰和第三峰之间的切割,因为它们更占优势。我们可以简单地指定a范围这将限制切割点应该放置的位置。

g < - openCyto:::。mindensity(fr, channels = chnl, gate_range=c(7e4,1e5), adjust = 1.5) p + geom_gate(g) autoplot(fr, chnl, "SSC-A") + geom_gate(g)

如图所示,我们还改变了内核密度平滑系数调整2(默认值设置在openCtyo)1.5避免over-smoothing。

你也可以通过设置来达到同样的效果最小值马克斯对数据进行预先筛选mindenstiy作品。

g < - openCyto:::。mindensity(fr, channels = chnl, min = 7e4, max = 1e5) p + geom_gate(g)

选择一种方式或另一种方式,或两者结合,在很大程度上取决于您的数据。更多的限制将为您提供更多的控制如何门控进行,但有时以您的门控管道的健壮性为代价。

后挡板

这种门控方法用于仅检测到一个主峰的情况,因此自动取消使用的资格mindensity托尔就是要控制切点应该放置在离峰顶多远的地方。

fr <- gh_pop_get_data(gs[[1]], "lymph", returnType = "flowFrame") chnl <- "Live" g <- openCyto:::。后挡板(fr, channels = chnl, tol = 0.05) p <- autoplot(fr, chnl) + mylimits p + geom_gate(g) autoplot(fr, chnl, "SSC-A") + geom_gate(g)

quantileGate

这种方法是另一种方法后挡板它通过事件分位数确定了切点。

g < - openCyto:::。quantileGate(fr, channels = chnl, probs = 0.99) p <- autoplot(fr, chnl) + mylimits p + geom_gate(g) autoplot(fr, chnl, "SSC-A") + geom_gate(g)

这种门控方法在门控中更常用罕见的当目标人群不够突出时,就可以作为第二高峰脱颖而出。(如。细胞因子盖茨在ICS化验)。

2 d控制方法

边界门

它本质上是从输入范围(min, max)构造一个矩形门,这对于过滤边界上非常极端的信号很有用。

fr < - gh_pop_get_data (gs[[1]],“根”,returnType =“flowFrame”)chnl < - c(“FSC-A”、“SSC-A”)g < - openCyto:::。border (fr, channels = chnl, min =c(0,0), max=c(2.5e5,2.5e5)) p <- autoplot(fr, x= chnl[1], y = chnl[2]) p + geom_gate(g)

singletGate

使用区域vs高度把单胞体关起来。看到细节singletGate ?

fr < - read.FCS(执行(“extdata / CytoTrol_CytoTrol_1。fcs", package = "flowWorkspaceData")) chnl <- c("FSC-A", "FSC-H") g <- openCyto:::。singletGate(fr, channels = chnl) p <- autoplot(fr, x = chnl[1], y = chnl[2]) p + geom_gate(g)

flowClust.2d

flowClust封装本身并不局限于2维门控。但是这里我们讨论的是专用的包装器函数.flowClust.2dopenCyto方案,利用flowClust要使用的集群引擎二维具体案例。你不需要写函数的全名csv简单地说,门控模板flowClustgating_method列,然后模板解析器将自动分派给正确的函数。

fr <- gh_pop_get_data(gs[[1]], "nonDebris", returnType = "flowFrame") chnl <- c("FSC-A", "SSC-A") g <- openCyto:::. flowclust . fr <- gh_pop_get_data(gs[[1]], "nonDebris", returnType = "flowFrame")2d(fr, channels = chnl, K=2, target=c(1e5,5e4), quantile=0.95) p <- autoplot(fr, x = chnl[1], y = chnl[2]) + mylimits p + geom_gate(g)

K是告诉算法在2d配置文件中期望有多少主要的聚类/总体。目标指定要得到的目标人群的平均值/中心,这并不需要很精确。如果没有提供,flowClust将选择最突出的集群作为目标,这在大多数情况下是正确的选择。分位数指定椭圆应该是。pp_res用于提供之前信息flowClust.(详情见flowClust ?

过渡门

flowClust.2d可选地构造过渡门这是一种特殊的边沿对角线放置的多边形门,常在中国见到flowJo.下面是一个例子:

fr <- gh_pop_get_data(gs[[1]], "CD19andCD20", returnType = "flowFrame") chnl <- c("CD38", "CD24") g <- openCyto:::. flowclust . fr <- gh_pop_get_data(gs[[1]], "CD19andCD20", returnType = "flowFrame")2d(fr, channels = chnl, K=6,transitional=TRUE,target=c(3.5e3,3.5e3), quantile=0.95,translation=0.15, pp_res = NULL) p <- autoplot(fr, x = chnl[1], y = chnl[2]) + mylimits p + geom_gate(g)

算法背后的原理超出了本文的范围。详细说明见flowClust.2d ?

quadGate.tmix

这种门控方法通过混合模型拟合数据来识别两个象限(第一和第三象限)。当这两个标记不能很好地分辨时,它是特别有用的1 d门控无法在两个维度上找到完美的切点。

gs < load_gs(系统。file("extdata/gs_DC_auto", package = "flowWorkspaceData")) fr <- gh_pop_get_data(gs[[2]], "HLADR+", returnType = "flowFrame") chnl <- c("CD11c", "CD123") p <- autoplot(fr, chnl[1], chnl[2]) g <- openCyto:::. quadgate . file("extdata/gs_DC_auto", package = "flowWorkspaceData")。tmix(fr, channels = chnl, K = 3, usprior = "no") p + geom_gate(g)