在这里,我们将说明如何选择和使用预先注册的适当的门控方法openCyto
包中。用户总是可以定义自己的选通
算法,并将它们注册为插件
函数openCyto
框架,看到registerPlugins ?
为更多的细节。
注意,下面演示的所有函数名都有前缀.
指示它们只是注册的包装器函数openCyto
.实际的控制引擎
包装器后面可以来自其他包(例如。flowCore
,flowClust
).所有这些包装器都有这些公共接口:*fr
:一个flowFrame
对象*pp_res
:一个可选的pre-preocessing
结果,在本文档中可以忽略*渠道
:用于门控*的通道名称...
:任何其他门控参数传递给实际门控引擎
库(flowCore)库(flowWorkspace)库(openCyto)库(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:::. 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
化验)。
边界门
它本质上是从输入范围(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.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 . 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)