ggcyto--实现R语言的流式细胞数据可视化!

2022-03-29 14:19:01 浏览数 (1)

导语

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的参考哟!

0 人点赞