初试Seurat的V5版本

2023-12-26 15:38:08 浏览数 (2)

虽然说我们安装了Seurat的V5版本,但是初次使用的时候加载就报错了,如下所示:

代码语言:javascript复制
The sp package is now running under evolution status 2
     (status 2 uses the sf package in place of rgdal)
Error: package or namespace load failed for ‘SeuratObject’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
 载入了名字空间‘Matrix’ 1.6-1,但需要的是>= 1.6.3
错误: 无法载入程辑包‘SeuratObject’

很明显是Matrix版本问题,只需要卸载它后,更新一下即可,如下所示:

代码语言:javascript复制
> remove.packages("Matrix")
从‘C:/Users/jimmy/AppData/Local/R/win-library/4.3’中删除程序包
(因为没有指定‘lib’)
> install.packages('Matrix')
将程序包安装入‘C:/Users/jimmy/AppData/Local/R/win-library/4.3’
(因为‘lib’没有被指定)
试开URL’https://cran.rstudio.com/bin/windows/contrib/4.3/Matrix_1.6-4.zip'
Content type 'application/zip' length 4562987 bytes (4.4 MB)
downloaded 4.4 MB

接下来我们就读取10X文件的3个标准文件,使用如下所示的例子,大家可以去自己下载 (2023-GSE202642-肝癌-成纤维单细胞亚群),文章标题是:《CD36 cancer-associated fibroblasts provide immunosuppressive microenvironment for hepatocellular carcinoma via secretion of macrophage migration inhibitory factor》,里面的降维聚类分群如下所示:

GSE202642

在 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE202642 可以看到作者给出来的3个文件的表达量矩阵:

代码语言:javascript复制
GSE202642_barcodes.tsv.gz 569.6 Kb (ftp)(http) TSV
GSE202642_features.tsv.gz 325.6 Kb (ftp)(http) TSV
GSE202642_matrix.mtx.gz 666.5 Mb (ftp)(http) MTX

如下所示:

3个文件的表达量矩阵:

这个时候使用Seurat的V5版本和之前Seurat的V4版本读取方式并没有本质上区别,都是:

代码语言:javascript复制
sce.all=CreateSeuratObject(counts =  Read10X( 'GSE202642/' ) , 
                       min.cells = 5,
                       min.features = 300,)
library(stringr)
sce=sce.all
head(rownames(sce@meta.data))
phe=str_split(rownames(sce@meta.data),'-',simplify = T)
head(phe)
tail(phe)
table(phe[,2])
sce@meta.data$orig.ident=paste0('p',phe[,2])
table(sce@meta.data$orig.ident)

读取之后我就简单的检查一下这个Seurat对象里面的信息,然后遇到第一个报错

代码语言:javascript复制
> as.data.frame(sce.all@assays$RNA@counts[1:10, 1:2])
Error in as.data.frame(sce.all@assays$RNA@counts[1:10, 1:2]) : 
  "counts"槽名不存在于"Assay5"类别对象中

其实是很简单的debug,只需要查看一下这个Seurat对象结构,就知道了:

代码语言:javascript复制
as.data.frame(sce.all@assays$RNA@counts[1:10, 1:2])
# 上面的错误
# 可以修改为下面的两种
as.data.frame(sce.all@assays$RNA@layers$counts[1:10, 1:2])
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])

真是搞不懂,为什么这么简单的bug就让大家放弃了Seurat的V5,简直是滑天下之大稽。这么多人学了这么久的R代码就之后照抄我的案例代码吗,不会活学活用吗?

而且,这个bug根本就并不会影响整个Seurat数据分析流程啊, 降维聚类分群仍然是ok的。

0 人点赞