如何让Seurat_v4和Seurat_v5在R中共存及Seurat_v4转换为Seurat_v5对象

2023-12-28 13:41:15 浏览数 (2)

因为群里有不少的小伙伴经常会提到更新V5以后遇到的小问题。我们本来是不打算修改代码,推荐大家继续使用V4的,但是发现Seurat_v5与Seurat_v4对象差别和数据处理步骤差别并不大,就打算更新一下Seurat_v5版本的代码。基于我之前已经用V4写过60多篇笔记推文了,也方便大家以后可以继续使用这个代码,所以在此介绍如何安装V5和如何将Seurat_v4对象转换为Seurat_v5对象。

而且最近生信技能树也发了几篇推文来针对更新到Seurat_v5的bug的解决办法,并且曾老师在生信技能树视频号开直播比较详细的介绍了这一情况。

初试Seurat的V5版本

使用Seurat的v5来读取多个10x的单细胞转录组矩阵

使用Seurat的v5来读取多个不是10x标准文件的单细胞项目

首先是安装 Seurat_v5包
代码语言:javascript复制
#查看R包的路径
.libPaths()
###新建路径,存放seurat_v5
getwd()
dir.create("~/seurat_v5")
#https://satijalab.org/seurat/articles/install_v5.html
####在seurat_v5文件夹下安装v5###
.libPaths(c(
  '/home/data/t140333/seurat_v5/', 
  "/home/data/t140333/R/x86_64-pc-linux-gnu-library/4.3",
  "/usr/local/lib/R/library" 
))
###安装Seurat_V5###
install.packages('Seurat')
library(Seurat)

##安装依赖包,这几个依赖包比较费时间,不过安装整体还是比较顺利的,没有遇到报错。
setRepositories(ind = 1:3, addURLs = c('https://satijalab.r-universe.dev', 'https://bnprks.r-universe.dev/'))
install.packages(c("BPCells", "presto", "glmGamPoi"))

#我这里并没有安装下面这些包,官方比较推荐。
#官方还建议安装这些额外的软件包,它们会增强 Seurat 的功能:
#Signac:分析单细胞染色质数据
#SeuratData:自动加载预先打包为 Seurat 对象的数据集
#Azimuth:跨多个器官和组织的scRNA-seq和scATAC-seq查询的本地注释
#SeuratWrappers:支持使用额外的整合和差异表达方法
#install.packages('Signac')
#remotes::install_github("satijalab/seurat-data", quiet = TRUE)
#remotes::install_github("satijalab/azimuth", quiet = TRUE)
#remotes::install_github("satijalab/seurat-wrappers", quiet = TRUE)

#如果用户遇到任何与 Matrix 软件包相关的错误,请使用下面的命令重新安装 TFBSTools 软件包,并打开一个新的 R 会话:
# BiocManager::install("TFBSTools", type = "source", force = TRUE)

###如何使用安装好的v5?###
#使用的时候加载下v5路径就好啦
.libPaths(c(
  '/home/data/t140333/seurat_v5/', 
  "/home/data/t140333/R/x86_64-pc-linux-gnu-library/4.3",
  "/usr/local/lib/R/library" 
))
如何将Seurat_v4对象转换为Seurat_v5对象
代码语言:javascript复制
#确认一下所用的Seurat包版本
packageVersion('Seurat')
#####
library(ggplot2)
#这里是找了一个之前的复现过的数据,将seuratv4对象转为v5对象。
sce=readRDS("./sce.all_int.rds")
sce_v4=sce

具体怎么转换可以看官方文档。

https://satijalab.org/seurat/articles/seurat5_essential_commands

代码语言:javascript复制
sce[["RNA5"]] <- as(object = sce[["RNA"]], Class = "Assay5")
names(sce)
DefaultAssay(sce)='RNA5'
#不想要原来的RNA也可以删除,如果不删除的话,你会看到sce对象的大小是之前的一倍,分别是1.3G 和2.6G。
#sce[['RNA']]=NULL  

#同时检测一下数据是否和之前推文一致。
DimPlot(sce)
table(sce$group)
DimPlot(sce, reduction = "umap",
      group.by = "group",label = F)
ggsave('umap_by_RNA_snn_res.0.1_GFP.pdf',width=6,height=5)

这是之前的复现推文,https://mp.weixin.qq.com/s/nsN5IBEtwhZ-xRK1xKGIYQ,对比看来没问题,说明转换对象这步没问题,大家如果用的V5版本,也可以直接用我之前的数据再继续进行细胞亚群命名。

0 人点赞