代码语言:javascript复制我五年前的单细胞数据处理视频公益课程一直都在b站无限制免费给大家学习,其实就是强调大家需要熟练掌握5个R包,分别是: scater,monocle,Seurat,scran,M3Drop,主要是 需要熟练掌握它们的对象,他们的分析流程也大同小异:
step1: 创建对象
step2: 质量控制
step3: 表达量的标准化和归一化
step4: 去除干扰因素(多个样本整合)
step5: 判断重要的基因
step6: 多种降维算法
step7: 可视化降维结果
step8: 多种聚类算法
step9: 聚类后找每个细胞亚群的标志基因
step10: 继续分类
我都是这样教导学生完成单细胞学习的,基础课程学完后需要完成作业:https://mp.weixin.qq.com/s/lpoHhZqi-_ASUaIfpnX96w
但是最近五年,五大R包的说法已经是不复存在了,目前大家认可度比较好的就剩下了 Seurat,但是人力有穷时,Seurat的开发团队再厉害也不可能把单细胞数据处理的方方面面全部覆盖到,因为Seurat实在是太好用了,以至于凡是Seurat可以做的都是单细胞数据处理标准分析,而安装和使用其它工具的就是高级分析,比如拟时序,细胞通讯和转录因子分析,还有RNA速率等等。
但是不同的工具首先是有不同的安装方法,其次其结果往往是需要结合在Seurat的降维聚类分群结果里面去可视化,比如我前面的笔记:pyscenic的转录因子分析结果展示之5种可视化 带领大家回顾了一下 单细胞转录因子分析之SCENIC流程 ,并且重新认识了 使用pyscenic做转录因子分析 后的结果。
这样的结合,其实有一些是自己的编程基础,有一些是Seurat团队开发整理好的轮子,直接使用即可,见:https://github.com/satijalab/seurat-wrappers
其支持的单细胞工具列表如下所示:
支持的单细胞工具列表
比如大家最感兴趣的RNA速率分析,就可以Seurat和 同时读取:
代码语言:javascript复制load("./sce_res1.2.Rdata")
sce
ldat <- read.loom.matrices("./velocyto/merged.loom")
ldat
DefaultAssay(sce) <- 'RNA'
#查看loom文件和seurat的细胞与基因名
ldat$spliced[1:3,1:3]
sce@meta.data[1:3,1:3]
####根据seurat的barcodes修改loom文件的barcodes
colnames(ldat$spliced) <- gsub("x","-1",gsub(":","_",colnames(ldat$spliced)))
colnames(ldat$unspliced) <- colnames(ldat$spliced)
colnames(ldat$ambiguous) <- colnames(ldat$spliced)
ldat$spliced[1:3,1:3]
sce@meta.data[1:3,1:3]
## 由于Seurat的对象可能会筛选了数据,所以与loom文件的barcodes细胞并不相同,以Seurat对象为准
sce2 = sce
ldat$spliced<-ldat$spliced[,rownames(sce2@meta.data)]
ldat$unspliced<-ldat$unspliced[,rownames(sce2@meta.data)]
ldat$ambiguous<-ldat$ambiguous[,rownames(sce2@meta.data)]
sp <- ldat$spliced
unsp <- ldat$unspliced
#提取seurat对象的降维umap坐标
umap <- sce2@reductions$umap@cell.embeddings
#将loom转换为seurat
bm <- as.Seurat(x = ldat)
#将降维信息赋给bm
bm@reductions <- sce2@reductions
#将meta信息赋给bm
bm@meta.data <- sce2@meta.data
Idents(bm) <- bm$RNA_snn_res.1.2
这个 bm 变量其实也是 Seurat的对象,后续的分析就可以完完全全使用Seurat的操作函数啦。
上面的代码目前不能在Windows运行哦,推荐在Linux运行,需要自己安装下面的包,并且加载成功:
代码语言:javascript复制library(Seurat)
library(SeuratObject)
library(ggplot2)
# remotes::install_github('satijalab/seurat-wrappers')
library(SeuratWrappers) #RunVelocity
# library(devtools)
# install_github("velocyto-team/velocyto.R")
library(velocyto.R)
library(stringr)
我们主要是使用了 SeuratWrappers 里面的 as.Seurat 函数把RNA速率分析得到的 loom转换为seurat的对象结构哦。
写在文末
我在《生信技能树》,《生信菜鸟团》,《单细胞天地》的大量推文教程里面共享的代码都是复制粘贴即可使用的, 有任何疑问欢迎留言讨论,也可以发邮件给我,详细描述你遇到的困难的前因后果给我,我的邮箱地址是 jmzeng1314@163.com
如果你确实觉得我的教程对你的科研课题有帮助,让你茅塞顿开,或者说你的课题大量使用我的技能,烦请日后在发表自己的成果的时候,加上一个简短的致谢,如下所示:
代码语言:javascript复制We thank Dr.Jianming Zeng(University of Macau), and all the members of his bioinformatics team, biotrainee, for generously sharing their experience and codes.
十年后我环游世界各地的高校以及科研院所(当然包括中国大陆)的时候,如果有这样的情谊,我会优先见你