groupByTree(x) checkRedundantNodes(x) dropRedundantNodes(x,toRemove) dropRedundantChannels(gs,…)
x
'GatingSet'对象或组列表(每个组成员都是'GatingSet'的列表)
toRemove待移除的节点集列表。它的长度必须等于参数的长度x
...其他参数
叶节点二硝基酚而且DPT是冗余的分析和应该删除在合并之前。
单线态节点在第二棵树中不存在。但我们不能删除它,因为它将删除它的所有后代。我们可以隐藏它代替。
invisible(setNode(gs2, "singlets", FALSE)) plot(gs2) plot(gs3)
注意,即使门控树看起来是一样的,但是单线态仍然存在,所以我们必须用相对路径(Path = "auto"
)而不是完整路径.
getNodes (gs2) [5] getNodes (gs3) [5]
# #[1]“/不是碎片/背心/ CD3 + / CD4/38 -博士+”# #[1]“不是碎片/ CD3 + / CD4/38 -博士+”
getNodes(gs3, path = "auto")[5] getNodes(gs3, path = "auto")[5]
## [1] " cd4/38 - dr +"
这两棵树不完全相同由于不同的顺序的CD4而且CD8.然而,它们仍然是可合并的通过门控路径引用而不是通过数值指标
为了简化合并大量批次实验的过程,这里有一些内部包装要做到半自动.
gs_groups <- groupByTree(gslist, gs2, gs3, gs4, gs5)
##按门控树分组…
长度(gs_groups)
[1] 4
这就把所有GatingSet
S分成不同的组,每个组共享相同的树结构。这里有4
组,
res <- try(checkRedundantNodes(gs_groups), silent = TRUE) print(res[[1]])
[1] "错误在(函数(thisNodeSet, thisObj): \n不能删除非终端节点:singlets\n "
显然,非叶节点(单线态
)检查失败,由用户决定是否隐藏该节点或保持该组分离,以免进一步合并。在这里,我们试图隐藏它。
对于(gp in gs_groups) plot(gp[[1]])
基于每个组的树形结构(通常没有像GatingSet
对象本身),我们将隐藏单线态
为组2
而且组4
.
for(i in c(2,4)) for(gs in gs_groups[[i]]) invisible(setNode(gs, "singlets", FALSE))
现在再检查一下.checkRedundantNodes
toRm <- checkRedundantNodes(gs_groups) toRm
[[1]] [1] " ccr7 + 45ra + " " ccr7 + 45ra - "
[[2]] [1] " dnt " " dpt "
[[3]]字符(0)
[[4]]字符(0)
基于此,可以通过删除来合并这些组
CCR7 + 45 ra +
而且CCR7 + 45 ra -
从组1
.二硝基酚
而且DPT
从组2
.有时,通过简单地绘制整个门通树或查看这个简单的平面节点列表(特别是当某些组中缺少整个子树时),可能很难检查和区分树差异。使用helper函数只可视化和突出显示树层次结构的差异是有帮助的plot_diff_tree
plot_diff_tree (gs_groups)
为了继续删除这些节点,.dropRedundantNodes
可以用来代替手工做吗
dropRedundantNodes (gs_groups暴雨)
##去除CCR7+ 45RA+
##去除CCR7+ 45RA-
##删除DNT
##删除DPT
现在它们可以合并为一个GatingSetList
.
GatingSetList (gslist)
一个包含5个唯一样本的GatingSetList。
GatingSet
有时可能会有额外的渠道
在一个数据集中,防止它与其他数据合并。如果这些通道没有被任何门使用,那么它们可以被安全地移除。
dropRedundantChannels (gs1)
## drop FSC-H, FSC-W, , ,时间
一个带有1个样本的GatingSet