承包你单细胞的所有美图_Scillus包
Hi,大家好,我是晨曦
今天这期推文来自一个小伙伴的留言
A同学曦曦,除了ggplot2以外有没有更方便的方法可以更加丰富的展示我的scRNA-seq的结果,就是类似于scRNA-seq的ggpubr包
晨曦有的,马上就来~
基于上面这个感兴趣的话题,我们就来看一下这个单细胞测序可视化的R包——Scillus包,可以承包你关于单细胞的所有美图哦~
那么我们开始吧
首先我们来给Scillus包一个精炼的定义:Seurat wrapper for enhanced processing and visualization of scRNA-seq data
其含义就是针对Seurat对象的可视化增强器(装备感满满~,感觉好像可以一刀9999)
当然了,前提是我们已经掌握了使用Seurat进行单细胞分析的标准流程,然后我们就可以使用Scillus包对我们的结果进行更为丰富的可视化展示
那么我们接下来就开始进行代码实操
#安装R包if (!require(devtools)) { install.packages("devtools")}devtools::install_github("xmc811/Scillus", ref = "development")
晨曦解读
作者把单细胞处理和可视化都进行了封装,通过运行确实是一个对于自己单细胞分析过程的复习,而且数据集比较少, 推荐大家也跑跑看,但是如果你已经有Seurat对象了,这里就可以直接进行后续的可视化
#加载R包library(Scillus)library(tidyverse)library(Seurat)library(magrittr)#导入数据a <- list.files("可视化/GSE128531_RAW", full.names = TRUE)#获取数据集列表#六个样本的单细胞数据(每一个样本都是标准的三个文件)m <- tibble(file = a, sample = stringr::str_remove(basename(a), ".csv.gz"),           group = rep(c("CTCL", "Normal"), each = 3))#获取数据集列表的表格形式并且提供分组信息pal <- tibble(var = c("sample", "group","seurat_clusters"),             pal = c("Set2","Set1","Paired"))#可视化调色盘#读取表达数据并自动创建Seurat对象scRNA <- load_scfile(m)length(scRNA)#[1] 6
Scillus 将为每个样本创建 Seurat 对象,并自动调用 PercentageFeatureSet函数来计算线粒体基因百分比。由此产生多个Seurat对象的列表,它的长度等于元数据 m 的行数
plot_qc(scRNA, metrics = "percent.mt")#展示每个样本的线粒体基因比例
plot_qc(scRNA, metrics = "nFeature_RNA")#展示每个样本基因的数量
plot_qc(scRNA, metrics = "nCount_RNA")#展示每个样本mRNA的数量
plot_qc(scRNA, metrics = "percent.mt", plot_type = "box")#展示箱线图的线粒体基因比例
plot_qc(scRNA, metrics = "nCount_RNA", plot_type = "density") + scale_x_log10()#展示mRNA的密度图
plot_qc(scRNA, metrics = "percent.mt", group_by = "group")#展示不同分组下线粒体基因的比例#这块的思路晨曦觉得作者做的真的很巧妙#我们前面是通过m变量数据批量构建的Seurat对象,m变量如下# A tibble: 6 × 3 # file sample group # <chr> <chr> <chr> #1 可视化/GSE128531_RAW/CTCL-5.csv.gz CTCL-5 CTCL #2 可视化/GSE128531_RAW/CTCL-6.csv.gz CTCL-6 CTCL #3 可视化/GSE128531_RAW/CTCL-8.csv.gz CTCL-8 CTCL #4 可视化/GSE128531_RAW/HC-1.csv.gz HC-1 Normal#5 可视化/GSE128531_RAW/HC-2.csv.gz HC-2 Normal#6 可视化/GSE128531_RAW/HC-3.csv.gz HC-3 Normal#通过m变量这样导入生成Seurat对象天生就附带了元数据的特性也就是大分组信息,保留在seurat对象中的是是样本信息scRNA[[1]]@project.name
#当然除了上面还有一些更多展示QC方式的可视化,代码如下,各位小伙伴可以私下运行学习plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = "Accent")plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = pal)plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = c("purple","yellow"))#基于Seurat的标准piplinesscRNA_f <- filter_scdata(scRNA, subset = nFeature_RNA > 500 & percent.mt < 10)#并且自动显示质控结果(这个功能感觉超棒)
scRNA_f %<>% purrr::map(.f = NormalizeData) %>% purrr::map(.f = FindVariableFeatures) %>% purrr::map(.f = CellCycleScoring, s.features = cc.genes$s.genes, g2m.features = cc.genes$g2m.genes)scRNA_int <- IntegrateData(anchorset = FindIntegrationAnchors(object.list = scRNA_f, dims = 1:30, k.filter = 50), dims = 1:30)scRNA_int %<>%       ScaleData(vars.to.regress = c("nCount_RNA", "percent.mt", "S.Score", "G2M.Score"))scRNA_int %<>% RunPCA(npcs = 50, verbose = TRUE)#%>% 管道符号不赋值就只是给你看看#%<>% 结果自动进行赋值scRNA_int %<>% RunUMAP(reduction = "pca", dims = 1:20, n.neighbors = 30) %>% FindNeighbors(reduction = "pca", dims = 1:20) %>% FindClusters(resolution = 0.3)
简单来说,上面这个piplines就可以帮助我们完成scRNA-seq多数据集联合,而且重点是这个piplines是可以复制的
#我们把元数据的分组信息提取出来,方便我们后续作图m %<>% mutate(group = factor(group, levels = c("CTCL","Normal")))scRNA_int %<>% refactor_seurat(metadata = m)
至此,我们的数据处理过程就结束了,这个流程可以复制到我们scRNA-seq数据多数据集联合上,当然我们标准的Seurat对象标准流程也是可以使用后续的可视化方式
注意:如果不是基于这个R包获得的对象,尽管对象本质都是一样,但是有些信息是缺少的,可能只能可视化部分图表,需要额外添加信息
#可视化案例1plot_scdata(scRNA_int, pal_setup = pal)
#可视化案例2plot_stat(scRNA_int, plot_type = "group_count")
#可视化案例3markers <- FindAllMarkers(scRNA_int, logfc.threshold = 0.1, min.pct = 0, only.pos = T)plot_heatmap(dataset = scRNA_int, markers = markers, sort_var = c("seurat_clusters","sample"), anno_var = c("seurat_clusters","sample","percent.mt","S.Score","G2M.Score"), anno_colors = list("Set2", # RColorBrewer palette c("red","orange","yellow","purple","blue","green"), # color vector "Reds", c("blue","white","red"), # Three-color gradient "Greens"))
#可视化案例4plot_cluster_go(markers, cluster_name = "1", org = "human", ont = "CC")
#可视化案例5de <- find_diff_genes(dataset = scRNA_int, clusters = as.character(0:6), comparison = c("group", "CTCL", "Normal"), logfc.threshold = 0, # threshold of 0 is used for GSEA                     min.cells.group = 1)   # To include clusters with only 1 cellgsea_res <- test_GSEA(de, pathway = pathways.hallmark)plot_GSEA(gsea_res, p_cutoff = 0.1, colors = c("#0570b0", "grey", "#d7301f"))
当然还有其它可视化的结果,这里晨曦就不一一展示了,各位小伙伴可以查看下面的R包地址进行进一步的学习:Home | Scillus
这个R包晨曦使用最大的亮点我觉得有三点
1. 提供了一个多数据集联合的piplines,可复制性极强
2. 优化了Seurat的可视化展示(其中的复杂热图很好看~)
可视化的展示每一种都可以展示亚群、分组以及基因和样本这些基本的Seurat可以可视化的信息
3. 提供了GO和GSEA的一键式分析
那么,本期推文到这里就结束啦~
我是晨曦,我们下期再见
晨曦的空间转录组笔记系列传送门
晨曦碎碎念系列传送门(未完待续...)
1. 想白嫖单细胞生信文章?这五大源头数据库,是你发文章的源泉!高频预警!你一定要收藏!
2. 盘活国自然的新思路!你研究的热点真的是热点吗?大数据帮你定位!
3. 好家伙!90%以上审稿人都会问到的问题,今天帮你解决!就是这么齐齐整整!
4. 没想到!生信分组还有这个大坑!你被坑过吗?!
5. 关于富集分析这件事,我有话想说。。。
6. 好御好高级!CNS级别美图是如何炼成的?看这篇就懂了!
7. 化繁为简!一文帮你彻底搞懂机器学习!想发高分文章,这篇是基础!
8. 你不知道的机器学习算法!关键时候能救命!
9. 致命!芯片&测序的联合到底能不能联合分析?审稿人最爱用这刁难你!
10. 躲不过的树!80%的生信SCI中都见过它!你真的搞懂了吗?
11. Python or R? 哪个更适用于生信发文章?深入浅出给你讲透!
12. 生信和抖音是一样的算法原理?不仅让你成瘾,也能发高分文章!
13. 跟3-5分SCI相比,CNS里的生信玩的可太花了!其实简单的离谱!
14. 揭秘!小鼠和人的免疫浸润分析有何区别?看这篇就够了!
15. 临床预测模型中的宠儿!最常见的机器学习 算法,没有之一!直接拿来用 !
16. 临床预测模型评价,不只有ROC,这个指标你遗漏了吗?
17. 非肿瘤机器学习模板奉上!还不赶快产出2022年你的第一篇SCI?!
18. 万字长文教你搞定机器学习!拿走不谢!
晨曦单细胞文献阅读系列传送门

1. 非肿瘤单细胞分析模板已到位!眼馋单细胞的小伙伴快来看!手把手教你产出第一篇单细胞SCI!

晨曦单细胞笔记系列传送门
晨曦从零开始学画图系列传送门
1. 看完这篇,彻底掌握生信画图精髓!超级实用,我不许你不知道!
2. 想让SCI看上去更高逼格?这些绘图技巧你一定要知道!
3. 3min掌握SCI配色神技,学会你就是组会汇报上最靓的仔!
晨曦单细胞数据库系列传送门

END

撰文丨晨   曦
排版丨四金兄
主编丨小雪球
欢迎大家关注解螺旋生信频道-挑圈联靠公号~
继续阅读
阅读原文