导语
GUIDE ╲
ggcyto 是一个基于 ggplot 构建的细胞计数数据可视化工具。
背景介绍
流式细胞术通过光学检测系统快速检测多参数的细胞流。许多因素使得流式细胞术能够成功和广泛的应用,比如检测速度(能够允许大量的细胞被检测),高度的准确性和分辨率,低成本。此外,流式细胞术还是一种非破坏性技术,可以分选出活细胞用于后续分析。能够分析和分选单个细胞的能力使流式细胞术在生物学和医学领域有非常广泛的应用。
今天小编给大家介绍的是2018年发表在Bioinformatics上的工具--ggCyto,作为一个开源的BioConductor软件包,ggCyto是基于ggplot2实现流式细胞数据可视化的,它能够让我们更为方便快捷的绘制可用于发表的flow data图片。
R包安装
代码语言:javascript复制BiocManager::install("ggcyto")
library(ggcyto)
可视化展示
01
ggCyto支持3种类型的绘图函数
1、ggplot
ggplot能够使用所有主要的 Cytometry 数据结构,让用户可以进行各种高度定制和多变的绘图
代码语言:javascript复制#从flowWorkspaceData获得数据
library(flowWorkspaceData)
dataDir <- system.file("extdata",package="flowWorkspaceData")
gs <- load_gs(list.files(dataDir, pattern = "gs_manual",full = TRUE))
attr(gs, "subset") <- "CD3 "
ggplot(gs, aes(x = `<B710-A>`, y = `<R780-A>`)) geom_hex(bins = 128) scale_fill_gradientn(colours = gray.colors(9))
代码语言:javascript复制#flowSet/ncdfFlowSet/flowFrame
fs <- gs_pop_get_data(gs, "CD3 ")
ggplot(fs, aes(x = `<B710-A>`)) geom_density(fill = "blue", alpha= 0.5)
代码语言:javascript复制#gates
gates <- filterList(gs_pop_get_gate(gs, "CD8"))
ggplot(gs, aes(x = `<B710-A>`, y = `<R780-A>`)) geom_hex(bins = 128) geom_polygon(data = gates, fill = NA, col = "purple")
2、ggcyto
代码语言:javascript复制ggcyto(gs, aes(x = CD4, y = CD8)) geom_hex(bins = 128) geom_gate("CD8")
3、autoplot
基于ggplot的Quick plot精神,通过向用户隐藏更多细节来进一步简化绘图工作。绘制flowSet时,它会根据提供的dim数量自动确定geom类型。
代码语言:javascript复制autoplot(fs, "CD4")
代码语言:javascript复制autoplot(fs, "CD4", "CD8", bins = 64)
代码语言:javascript复制autoplot(gs, c("CD4", "CD8"), bins = 64)
02
参数设置
in-line transformation
它是由专门为细胞计数设计的不同scales layers完成的
代码语言:javascript复制#先绘制原始的scale
data(GvHD)
fr <- GvHD[[1]]
p <- autoplot(fr, "FL1-H")
p
代码语言:javascript复制##不同的scale
p scale_x_logicle() #flowCore logicle scale
p scale_x_flowJo_fasinh() # flowJo fasinh
p scale_x_flowJo_biexp() # flowJo biexponential
geom_gate
隐藏了绘制不同几何形状的复杂细节
代码语言:javascript复制library(openCyto)
fr <- fs[[1]]
p <- autoplot(fr,"CD4", "CD8") ggcyto_par_set(limits = "instrument")
#1d gate垂直
gate_1d_v <- openCyto::gate_mindensity(fr, "<B710-A>")
p geom_gate(gate_1d_v)
代码语言:javascript复制#1d gate水平
gate_1d_h <- openCyto::gate_mindensity(fr, "<R780-A>")
p geom_gate(gate_1d_h)
代码语言:javascript复制#2d 长方形 gate
gate_rect <- rectangleGate("<B710-A>" = c(gate_1d_v@min, 4e3), "<R780-A>" = c(gate_1d_h@min, 4e3))
p geom_gate(gate_rect)
geom_stats
代码语言:javascript复制###增加比例
p <- ggcyto(gs, aes(x = "CD4", y = "CD8"), subset = "CD3 ") geom_hex()
p geom_gate("CD4") geom_stats()
###显示计数
p geom_gate("CD4") geom_stats(type = "count")
auto limits(缩放限制)
代码语言:javascript复制p <- p ggcyto_par_set(limits = "instrument")
p
ggcyto_par_set
通过设置ggcyto_par_set,可以将多种参数聚合在一起
代码语言:javascript复制#设置参数集合
mySettings <- ggcyto_par_set(limits = "instrument"
, facet = facet_wrap("name")
, hex_fill = scale_fill_gradientn(colours = rev(RColorBrewer::brewer.pal(11, "Spectral")))
, lab = labs_cyto("marker")
)
#通过mysettins来直接应用,类似theme
p mySettings
ggcyto_layout
ggCyto还提供了拼图设置布局的功能
代码语言:javascript复制gh <- gs[[1]]
nodes <- gs_get_pop_paths(gh, path = "auto")[c(3:9, 14)]
nodes
p <- autoplot(gh, nodes, bins = 64)
class(p)
p
代码语言:javascript复制gt <- ggcyto_arrange(p, nrow = 1)
class(gt)
p2 <- autoplot(gh_pop_get_data(gh, "CD3 ")[,5:8]) # some density plot
p2@arrange.main <- ""#clear the default title
gt2 <- ggcyto_arrange(p2, nrow = 1)
gt3 <- gridExtra::gtable_rbind(gt, gt2)
plot(gt3)
文章参考:
https://www.bioconductor.org/packages/release/bioc/vignettes/ggcyto/inst/doc/Top_features_of_ggcyto.html
小编总结
ggCyto是一个非常简单方便的流式细胞数据可视化工具,支持3种类型的绘图函数,能够满足不同代码水平用户的需求,有需要的小伙伴可以自取ggCyto的参考哟!