在这里,我们将说明如何选择和使用预注册的适当门控方法openCyto
包中。用户总是可以定义他们自己的选通
算法,并将它们注册为插件
函数openCyto
框架,看到registerPlugins ?
欲知详情。
注意,下面所示的所有函数名都有前缀.
指示它们只是注册的包装器函数openCyto
.实际的控制引擎
包装器的后面可以来自其他包(例如。flowCore
,flowClust
).所有这些包装器都有这些公共接口:*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"))
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
化验)。
边界门
它本质上是从输入范围(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.2d
从openCyto
利用的包flowClust
集群引擎工作二维
具体案例。你不需要写函数的全名csv
浇注模板,简单地说flowClust
在gating_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)