genesorteR——比FindAllMarkers快一百倍!

文摘   2024-09-12 09:05   江苏  

不知道大家有没有在使用Seurat的FindAllMarkers时常常觉得计算时间过长,人生苦短,等待的时间真的很煎熬。genesorteR是一个用于单细胞数据分析的R软件包。它计算一个特异性分数来对每个细胞簇中的所有基因进行排序。然后,它可以使用这个排序来找到一组标记基因,或者找到高度可变或差异表达的基因。也就是说,genesorteR可以很好的替代FindAllMarkers,并且秒出结果!genesorteR既适用于scRNA-Seq数据,也适用于scATAC-Seq等稀疏单细胞数据,我们简单演示一下。
测试数据大家自己扫码获取吧:

通过百度网盘分享的文件:genesorteR
链接:https://pan.baidu.com/s/1h7CZ2MqXiGWc-nIYbnCcBQ?pwd=cn1m 
提取码:cn1m



### 读入测试数据 ###
library(Seurat)
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, were retired in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## Attaching SeuratObject


scRNA <- readRDS('pbmcrenamed.rds')

DimPlot(scRNA)

这是一个已经注释过的数据,这时通常我们会利用Seurat内置的FindAllMarkers()来计算各细胞类型的marker基因,我们来看一下计算时间:


system.time({seu_marker <- FindAllMarkers(scRNA)})
## Calculating cluster VSMC
## Calculating cluster T cell
## Calculating cluster Macro
## Calculating cluster B cell
## Calculating cluster Fibro
## Calculating cluster Myeloid cells
## Calculating cluster Mono
## Calculating cluster Neut
## Calculating cluster EC
##    user  system elapsed 
## 163.181 0.967 164.148

可以看出计算marker需要花费大量的时间,这里给大家介绍一个加速marker计算的新方法:


# 装包:
if(!require(devtools))install.packages("devtools")
## Loading required package: devtools
## Loading required package: usethis


if(!require(genesorteR))devtools::install_github("mahmoudibrahim/genesorteR")
## Loading required package: genesorteR
## Loading required package: Matrix


system.time( { # 计算:
gs <- sortGenes(scRNA@assays$RNA@data, Idents(scRNA))
# 获取marker列表:
gs_marker <- getMarkers(gs, quant = 0.99)

})
## Warning in sortGenes(scRNA@assays$RNA@data, Idents(scRNA)): A Friendly Warning:
## Some genes were removed because they were zeros in all cells after
## binarization. You probably don't need to do anything but you might want to look
## into this. Maybe you forgot to pre-filter the genes? You can also use a
## different binarization method. Excluded genes are available in the output under
## '$removed'.
## 'as(<dgeMatrix>, "dgCMatrix")' is deprecated.
## Use 'as(., "CsparseMatrix")' instead.
## See help("Deprecated") and help("Matrix-deprecated").
##    user  system elapsed 
## 1.357 0.108 1.466

可以说计算速度有质的飞跃。

我们对比一下两种方式筛选出的top5marker:


library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union


# 查看Seurat筛选出的top5 marker基因
seu_marker_top5 <- seu_marker %>%
group_by(cluster) %>%
slice_max(n = 5, order_by = avg_log2FC)


# 将genesorteR计算的top5基因整理为数据框
spec_scores <- gs$specScore

# 获取基因名
genes <- rownames(spec_scores)

# 创建一个空的数据框来存储结果
top5_genes_df <- data.frame()

# 遍历每个 cluster (specScore 的列)
for (cluster in colnames(spec_scores)) {
# 获取当前 cluster 的 specScore 列并绑定基因名
cluster_scores <- data.frame(
gene = genes,
specScore = spec_scores[, cluster],
cluster = cluster
)

# 按 specScore 降序排列并取前5个基因
top5_genes <- cluster_scores %>%
arrange(desc(specScore)) %>%
head(5)

# 将结果合并到总的数据框中
top5_genes_df <- rbind(top5_genes_df, top5_genes)
}

# 打印最终的 top 5 基因数据框
top5_genes_df
##              gene specScore       cluster
## Itga8 Itga8 0.6400709 VSMC
## Npnt Npnt 0.6387903 VSMC
## Ppp1r14a Ppp1r14a 0.5918881 VSMC
## Ccn3 Ccn3 0.5916800 VSMC
## Lmod1 Lmod1 0.5912409 VSMC
## Cd3g Cd3g 0.7788462 T cell
## Ms4a4b Ms4a4b 0.7617241 T cell
## Cd3d Cd3d 0.7570093 T cell
## Trbc2 Trbc2 0.7180583 T cell
## Skap1 Skap1 0.6912000 T cell
## Clec4a3 Clec4a3 0.5825532 Macro
## Ms4a6c Ms4a6c 0.5259740 Macro
## Clec4a1 Clec4a1 0.5159770 Macro
## Sirpb1c Sirpb1c 0.4932967 Macro
## Ccr2 Ccr2 0.4490722 Macro
## Cd79a Cd79a 0.8695652 B cell
## Ms4a1 Ms4a1 0.8549495 B cell
## Ly6d Ly6d 0.8335849 B cell
## Iglc3 Iglc3 0.8227174 B cell
## Iglc2 Iglc2 0.8151579 B cell
## Serpinf1 Serpinf1 0.7032967 Fibro
## Lum Lum 0.6982759 Fibro
## Dpt Dpt 0.6812162 Fibro
## Dcn Dcn 0.6097561 Fibro
## Pcolce Pcolce 0.6073494 Fibro
## Alox12 Alox12 0.6377953 Myeloid cells
## Itga2b Itga2b 0.6267361 Myeloid cells
## Clec1b Clec1b 0.6203165 Myeloid cells
## Treml1 Treml1 0.6150893 Myeloid cells
## Gp5 Gp5 0.5632184 Myeloid cells
## C1qc C1qc 0.7455682 Mono
## C1qa C1qa 0.7342353 Mono
## C3ar1 C3ar1 0.7101370 Mono
## C1qb C1qb 0.7077895 Mono
## Tnf Tnf 0.7004167 Mono
## Mmp9 Mmp9 0.7680000 Neut
## Retnlg Retnlg 0.7458678 Neut
## Slfn4 Slfn4 0.7348544 Neut
## Ly6g Ly6g 0.7272727 Neut
## Cxcr2 Cxcr2 0.7054839 Neut
## Egfl7 Egfl7 0.9209184 EC
## Ptprb Ptprb 0.8709677 EC
## Cdh5 Cdh5 0.8501149 EC
## Ecscr Ecscr 0.7810714 EC
## Mmrn2 Mmrn2 0.7401316 EC


library(ggplot2)
library(patchwork)
(VlnPlot(scRNA,features = seu_marker_top5$gene,stack = T)+
ggtitle("Seurat计算结果"))/
(VlnPlot(scRNA,features = top5_genes_df$gene,stack = T) + ggtitle("genesorteR计算结果"))

 可以看出,面对相同的数据,genesorteR不仅计算速度更快,marker的特异性也更高一些。

参考:https://doi.org/10.1101/676379

最后、如果以上内容对你有帮助,欢迎在文章的Acknowledgement中加上这一段:

Since Biomamba and his wechat public account team produce bioinformatics tutorials and share code with annotation, we thank Biomamba for their guidance in bioinformatics and data analysis for the current study.

欢迎在发文/毕业时向我们分享你的喜悦~




认真学完下面的内容,3~10分的SCI理应是囊中之物(当然也不要真的去水文章)

单细胞系列教程目录

单细胞数据分析系列教程:
B站视频,先看一遍视频再去看推送操作,建议至少看三遍:
https://www.bilibili.com/video/BV1S44y1b76Z/
本公众号单细胞相关资料都可以在这里订阅:
scRNA-Seq学习手册Seurat V4修订版
scRNA-Seq学习手册Seurat V5更新版
scRNA-Seq学习手册Python版

单细胞测序基础数据分析保姆级教程,代码部分整理在往期推送之中:
手把手教你做单细胞测序数据分析|1.绪论
手把手教你做单细胞测序数据分析|2.各类数据结构与读取方法
手把手教你做单细胞测序数据分析|3.单样本分析
手把手教你做单细胞测序数据分析|4.多样本整合
手把手教你做单细胞测序数据分析|5.细胞类型注释,从入门到入土
手把手教你做单细胞测序数据分析|6组间差异分析
手把手教你做单细胞测序数据分析|7基因集富集分析
Seurat中分类变量处理技巧
沉浸式统计细胞比例

单细胞图片改造计划:
改造单细胞降维图| 1.DimPlot的探索
改造单细胞降维图| 2.ggplot2中的DIY
改造单细胞降维图| 3.3D降维图与动图绘制
改造单细胞降维图| 4.一些造好的轮子
沉浸式统计细胞比例
改造单细胞FeaturePlot
VlnPlot用法及ggplot复现
VlnPlot的ggplot改造


SCENIC转录因子分析
SCENIC单细胞转录因子预测|1.绪论
SCENIC单细胞转录因子预测|2.学习手册
SCENIC单细胞转录因子预测|3.软件安装与数据准备
SCENIC单细胞转录因子预测|4.精简版流程
SCENIC单细胞转录因子预测|5.step1+step2构建共表达网络与regulon
SCENIC单细胞转录因子预测|6.Step3 利用AUCell对Regulon评分
SCENIC单细胞转录因子预测|7.Step4 二元矩阵的计算与可视化
SCENIC单细胞转录因子预测|8.Step5 regulon聚类、分群、降维
SCENIC单细胞转录因子预测|9.下游探索
SCENIC转录因子调控网络图

上游fastq文件处理
单细胞分析的最上游——处理Fastq文件:cellranger
单细胞分析的最上游——处理Fastq文件:dropseqRunner
Cellranger报错:Unable to distinguish between [SC5P-R2, SC3Pv2] ...
BD Rhapsody平台单细胞转录组定量流程
BD Rhapsody定量输出文件读取

细胞通讯
B站连续播放起来比较方便:
https://www.bilibili.com/video/BV1Ab4y1W7qx?p=1
往期推送
《细胞通讯》1.概论
《细胞通讯》2.1CellChat基础分析教程
《细胞通讯》2.2CellChat多组别分析
《细胞通讯》CellChat学习手册
CellChat空转细胞通讯合辑
SeekSpace细胞通讯分析

拟时序分析
B站连续播放起来比较方便:
https://www.bilibili.com/video/BV1br4y1x7Hf?p=1
往期推送
《拟时序分析》1.概论
《拟时序分析》2.monocle概论
《拟时序分析》3.monocle2实操:精简版拟时序
《拟时序分析》4.monocle2实操:完整版
单细胞测序数据进阶分析—《拟时序分析》5.初识monocle3
单细胞测序数据进阶分析—《拟时序分析》6.monocle3的降维、分群、聚类
单细胞测序数据进阶分析—《拟时序分析》7.monocle3的拟时序分析
解决monocle2的orderCells报错的两种方法
一文搞定拟时序分析的下游可视化探索

scFAST系列
scFAST分析| 01.绪论
scFAST分析| 02.单细胞分析准备工作
scFAST分析| 03.fast模块
scFAST分析| 04.Seurat分析及可视化
scFAST分析| 05.mut模块
一文学会scFAST-seq数据分析

其他单细胞相关技术贴也在这里:
单细胞必修课——Seurat流程
scRNA-Seq双细胞过滤手册
scRNA-Seq学习手册Seurat V4修订版
快速上手Seurat V5
单细胞Figure 1常见图表
细胞的数量由誰决定?
单细胞中应该如何做GSVA?
答读者问(三):单细胞测序前景
答读者问(四):如何分析细胞亚群
答读者问(八):为什么Read10X也会报错?
答读者问(十)整合后的表达矩阵,如何拆分出分组信息?
答读者问(十一)如何一次性读取一个目录下的cellranger输出文件?
给你安排一个懂生信的工具人(十):不学编程 零代码完成单细胞测序数据分析:Loupe Browser
什么?不做单细胞也能分析细胞类群和免疫浸润?
答读者问 (十三)查看Seurat对象时的ERROR:type='text'
各类单细胞对象(数据格式)转换大全(一)
单细胞对象(数据格式)转换大全|2. h5ad转Seuratobj
批量整理好GEO中下载的单细胞数据
答读者问 (十五)稀疏矩阵转matrix, as.matrix函数是下下策
答读者问 (十六)做单细胞测序到底需要多少内存
答读者问 (十七)调用的线程越多就算的越快嘛?
答读者问(十八)、一个我至少被问过30遍的monocle报错
没有barcode文件的单细胞数据要怎么读取
单细胞基因集评分之AUCell
粉丝来稿|1. Seurat4相较于Seurat3的几点改动
如何加快Seurat的计算速度
一文搞定单细胞基因集评分
答读者问(二十)四个单细胞样本只给了一套文件怎么读
人类单细胞测序数据中有哪些以"**-"开头的基因
为什么总把分辨率调的很高
Seurat中如何让细胞听你指挥
答读者问| 22.object 'CsparseMatrix_validate' not found
单细胞数据在R中的读取及存储速度太慢怎么办?这个神包来帮你!
单细胞分群分辨率选择困难症
一文搞定空间转录组与单细胞测序的整合分析
一文掌握十个单细胞数据库
如何将已经构建好的Seurat空转对象转存为原始文件?
一文学会零代码单细胞分析
SeekSpace| 会单细胞就会空间转录组
10xGenomics官方可视化工具——Loupe Browser
快速上手Cellranger

单细胞文献阅读:
IF14.3| scRNA-seq+脂质组多组学分析揭示宫内生长受限导致肝损伤的性别差异
Q1临床设计+生信分析,单细胞揭示骨髓增生异常综合征中的造血功能异常&微环境中的细胞状态
13分+文章利用scRNA-Seq揭示地铁细颗粒物引起肺部炎症的分子机制
除了铁死亡,还有铜死亡?!
拟时序分析神包—monocle的三篇《Nature》
测序技术的发展与应用
Biomamba助推的第二篇文章!发表了!
又来了!Biomamba生信基地助推的第四篇文章!
单细胞测序解析糖尿病肾病中肾小球的动态变化
Cell metabolism| 单细胞测序技术解析健康人与T2D患者的胰岛差异
Science| 小鼠全肾单细胞测序开篇之作
一篇不花钱就能白嫖的文章
不会吧不会吧,Nature都能白嫖?
高氧下小鼠肺发育损伤的ScRNA图谱
IgAN & STRT-Seq
老树开新花—EGFR、肿瘤、免疫+scRNA-Seq
癌前基质细胞驱动BRCA1肿瘤发生
紧跟生信"钱"沿,胰腺癌&免疫多模态图谱
原发头颈癌和肿瘤转移微生态
《Cell Metabolism》:肾脏疾病&代谢&核受体ESRRA
《Nature communication》:PD-1&急性髓细胞性白血病&T Cell
单细胞测序揭示鼻咽癌微环境的基质动力学和肿瘤特异性特征
《Nature》:MYB调控衰竭性T细胞对检查点抑制的响应
单细胞都能活检测序了?
文献阅读(二十九)、单细胞测序做到什么程度能毕业|硕士篇
文献阅读(三十)、单细胞测序做到什么程度能毕业|博士篇
2022年了,都有哪些器官/组织有scRNA-Seq数据|小鼠篇
2022年了,都有哪些器官/组织有scRNA-Seq数据|人类篇
2023年了, 都哪些物种有scRNA-Seq数据
终于读到一篇用monocle3做拟时序的文章
单细胞转录组+亚细胞空间代谢组=25分文章
酸了,六个样本的scRNA-Seq+差异分析=9分文章
自测scRNA-Seq+scWGBS=3分三区文章?
百万级单细胞多组学数据集成
空间转录组与单细胞转录组整合分析工具大比拼
<IF=27.4> IgG4相关性疾病中颌下腺和血液中的细胞和分子改变
微生物组研究技术——微生物也能做单细胞
scRNA-Seq+WGCNA+铁死亡:IF=9.69
《Nature》: 单细胞解析大脑感知流感过程
两万字长文|当前单细胞 RNA-seq 分析的最佳实践
数百万级单细胞数据时代的多组学分析
《Nature Methods》: NiCheNet, 能够考虑到胞内转录调控的细胞通讯软件
基于scRNA-Seq&空间转录组的AKI研究
自测蛋白质组+Bulk RNA-Seq & 挖掘scRNA-Seq=13.6分JASN
非监督式聚类在scRNA-Seq应用中的挑战
Seurat V5的《Nature Biotechnology》
当空转遇上单细胞~
人类肾脏参考组织图谱
有免疫特征的基质细胞,有没有可能是双细胞?
CAR-T治疗急性髓细胞性白血病的scRNA-Seq图谱
临床样本+单细胞+空转=IF4.8?
鼻咽癌的Bulk RNA-Seq与scRNA-Seq联合分析
GPTCelltype:玩GPT4玩出Nature
《Nature Methods》教你如何挑选空转平台

单细胞注释复写
单细胞注释复写(一):Human Fetal Kidney
单细胞注释复写(二): human colorectal
单细胞复写|3.急性心肌梗塞(AMI)外周血scRNA-Seq分析实战(链接重置)
单细胞复写|4. GSE157783数据集复现及差异分析
CellRank的教程重现
人类肾脏scRNA-seq图谱
小鼠纹状体单细胞基因变化图谱
T Cell单细胞参考图谱
MLP模型鉴定免疫细胞发育和瘤内T细胞耗竭的单细胞染色质图谱
干细胞样CD4+ T细胞与自身免疫性血管炎
小鼠与人类的空间表观单细胞图谱
人类肾脏scRNA-seq图谱
胰腺导管腺癌的内异质性和恶性进展scRNA-seq图谱
肝脏发育、成熟的单细胞图谱
微环境中肿瘤免疫屏障决定了免疫治疗的效果
scRNA揭示T1D骨髓与骨质减少的关系
肝癌单细胞分群marker
胶质瘤相关巨噬细胞scRNA图谱
人类乳腺癌scRNA-seq数据
肢端黑色素瘤细胞scRNA-seq图谱&免疫治疗
皮质神经注释复写
非小细胞肺癌免疫治疗后肿瘤微环境重塑scRNA图谱
小鼠脑动脉瘤模型的scRNA-Seq分析
儿童白血病的单细胞数据读取
疟疾中免疫细胞亚群的调控响应
单细胞空间转录组在脑科学领域的应用

硬件准备:
生信分析为什么要使用服务器?
足够支持你完成硕博生涯的生信环境
配置一个心仪的工作站(硬件+环境配置)
独享服务器,生信分析不求人
为实验室准备一份生物信息学不动产

如何联系我们

公众号后台消息回复不便,这里给大家留一下领取资料及免费服务器(足够支持你完成硕博生涯的生信环境)的微信号,方便各位随时交流、提建议(别问在么,添加时直接说来意)。此外呼声一直很高的交流群也建好了,欢迎大家入群讨论:

永久免费的生信、科研交流群

大家可以阅读完这几篇之后添加
给生信入门初学者的小贴士
如何搜索公众号过往发布内容

您点的每个赞和在看,我都认真当成了喜欢


Biomamba 生信基地
本人为在读博士研究生,此公众号旨在分享生信知识及科研经验与体会,欢迎各位同学、老师与专家的批评指正,也欢迎各界人士的合作与交流。
 最新文章