这周末不值班哦,开心的一批!~😀
最近经常去骑车,真的是忘却烦恼的好办法,各位马喽
,一起骑车吧🚴🏻!~🫡
做单细胞的小伙伴,刚入门的时候,肯定觉得要学的包好多啊。🫠
今天和大家分享一个R
包,Ragas
,真的是有手就行,非常好用。👍
熟练的老手可以直接跳过了,我相信你写的code
更个性化,更符合你的数据。🦉
rm(list = ls())
library(tidyverse)
# BiocManager::install(c("Seurat", "ggplot2", "randomcoloR", "SingleCellExperiment", "Matrix", "future", "dplyr", "reshape2", "scales", "ComplexHeatmap", "grid", "circlize", "gplots", "muscat", "limma", "ggtree", "patchwork", "ggprism", "rstatix", "cowplot", "aplot", "crayon"), update = F)
# devtools::install_github("davidsjoberg/ggsankey", upgrade = "never")
# devtools::install_github("jig4003/Ragas", upgrade = "never")
library(Ragas)
library(ggsci)
今天用到的是Ragas 包
中的示例数据,Seurat格式
。😘
分为健康(cHD
)和 SLE (cSLE
) 儿童的PBMC单细胞测序数据。📈
csle.pbmc.small
my.pbmc.pi <- CreatePostIntegrationObject(object = csle.pbmc.small)
my.pbmc.pi
RunDimPlot(object = my.pbmc.pi)
RunDimPlot(object = my.pbmc.pi,
group.by = "cluster.annotation")
运行RunFindAllMarker
从Seurat
调用FindAllMarkers
。😘
my.pbmc.pi <- RunFindAllMarkers(my.pbmc.pi,
ident = "cluster.annotation")
my.pbmc.pi
查看一下找到的marker
吧。😏
my.pbmc.pi[["markers"]]
Marker
分析完成后,可以使用Matrix plot
绘制每个cluster
的Top Marker
。💪
RunMatrixPlot(my.pbmc.pi,
markers.key = "Markers|cluster.annotation|AllMarkers|test.use=wilcox",
column.anno.name.rot = 45,
heatmap.height = 6)
在运行pseudobulk
分析之前,我们需要先进行表达频率分析。🧐
低表达基因将在最终的pseudobulk分析中被过滤掉。😘
my.pbmc.pi <- CalculateExpFreqs(my.pbmc.pi,
ident = "cluster.annotation",
verbose = FALSE)
my.pbmc.pi
my.pbmc.pi <- RunPseudobulkAnalysis(object = my.pbmc.pi,
ident.var = "cluster.annotation",
group.var = "Groups",
sample.var = "Names",
group.1 = "cSLE",
group.2 = "cHD")
my.pbmc.pi
RunDSDotPlot(object = my.pbmc.pi,
exp.freq.key = "ExpFreq|cluster.annotation|cutoff=0",
ds.key = "DS|cluster.annotation|edgeR|group=Groups;sample=Names;gp1=cSLE;gp2=cHD;contrast=cSLE-cHD",
p.filter = 0.05,
FC.filter = 4,
to.adjust = TRUE
)
RunProportionPlot(csle.pbmc.small, ## input can be a Seurat object
ident = "cluster.annotation",
group.by = "Groups",
method = "pooled",
pooled.prop.by = "cluster", ## default
axis.text.angle = 45,
axis.text.size = 8,
return.value = 'ggplot'
)
堆叠条形图!~📊
my.pbmc.pi <- RunProportionPlot(my.pbmc.pi, ## if input is a Pi object, an updated Pi object will be the returned by default
ident = "Groups",
group.by = "cluster.annotation",
method = "pooled",
pooled.prop.by = "cluster", ## default
axis.text.size = 8)
## A new data field called "cell.prop" will be added to the Pi object.
my.pbmc.pi
my.pbmc.pi <- RunProportionPlot(my.pbmc.pi,
ident = "cluster.annotation",
group.by = "Groups",
method = "pooled",
pooled.prop.by = "group",
axis.text.size = 8
)
my.pbmc.pi
my.pbmc.pi <- RunProportionPlot(my.pbmc.pi,
ident = "cluster.annotation",
group.by = "Groups",
method = "unpooled",
unpool.by = "Names",
unpool.ncol = 3,
title.text.size = 6)
my.pbmc.pi <- RunProportionPlot(my.pbmc.pi,
ident = "cluster.annotation",
group.by = "Groups",
method = "unpooled",
unpool.by = "Names",
unpool.plot.type = "barplot",
unpool.ncol = 3,
title.text.size = 6)
my.list <- list(Monocytes = c("CD14","FCGR3A"),
B = "MS4A1",
T = c("CCR7", "CD8A"),
NK = "NKG7")
RunAnnotatedDotPlot(object = my.pbmc.pi,
annotations = my.list,
annotation.cols = c( 'Monocytes'= 'tomato', 'B' = 'seagreen', 'T' = 'steelblue', 'NK' = 'purple'),
group.by = "cluster.annotation")
RunStackedVlnPlot(my.pbmc.pi,
ident = "cluster.annotation",
features = my.list,
color.by = "mean.exp",
column.names.rotation = 90)
再加个参数,复杂一点!~🕐
RunStackedVlnPlot(my.pbmc.pi,
ident = "cluster.annotation",
features = my.list,
split.by = "Groups",
color.by = "split.var",
column.names.rotation = 45)
features <- list("T cell" = c("CD8A", "CD8B"),
ISG = c("ISG15","ISG20","IFI44L", "IFI6", "MX1"),
"Housekeeping" = c("ACTB"))
RunSummarizedHeatmap(object = my.pbmc.pi,
ident = "cluster.annotation",
features = features,
split.by = "Groups",
column.names.rotation = 30,
heatmap.width = 20)
再加2个参数,复杂地卷起来!~🧐
RunSummarizedHeatmap(object = my.pbmc.pi,
ident = "cluster.annotation",
features = features,
split.by = "Names", ## sample name
additional.metadata = c("Groups", "Gender"),
heatmap.width = 60,
heatmap.height = 15,
show.column.names = FALSE)
RunExpressionPlot(object = my.pbmc.pi,
feature = "ISG15",
ident = "cluster.annotation",
group.by = "Names",
split.by = "Groups"
)+
theme(
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
axis.line = element_line(color = "black")
)+
scale_color_npg()
ExportPiData(object = csle.pbmc.pi,
field = 'ds',
key = 'DS|subcluster_idents|edgeR|group=Groups;sample=Names;gp1=cSLE;gp2=cHD;contrast=cSLE-cHD',
file.prefix = 'pbmc.ds' ## A mandatory argument. User should provide an informative prefix (e.g., "csle.pbmc") for exported data
)