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

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

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

1D浇注方法

mindensity

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

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

fr <- gh_pop_get_data(gs[[2]], "Live", returnType = "flowFrame") chnl <- "CD3" g <- openCyto:::。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避免过度平滑。

或者你也可以通过设置来达到同样的效果最小值马克斯方法之前对数据进行预筛选mindenstiy对它有效。

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

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

后挡板

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

fr <- gh_pop_get_data(gs[[1]], "淋巴",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化验)。

2D浇注方法

边界门

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

fr < - gh_pop_get_data (gs[[1]],“根”,returnType =“flowFrame”)chnl < - c(“FSC-A”、“SSC-A”)g < - openCyto:::。Boundary (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(system.file("extdata/CytoTrol_CytoTrol_1. fcs . extdata ")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。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。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

这种门控方法通过用混合模型拟合数据来识别两个象限(第一和第三象限)。这是特别有用的时候,两个标记没有很好地解决,因此,规则的quadGate方法是基于1 d门控不会在两个维度上都找到完美的切入点。

Gs <- load_gs(system. 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。tmix(fr, channels = chnl, K = 3, usprior = "no") p + geom_gate(g)