前些天发现自己系统里的一些R包实在太久了,于是头脑一热就把所有包都升级了。结果运行Seurat的时候,就卡在 FindNeighbor 了。运行到一半就提示如下报错
Error in validObject(.Object) :
invalid class “Graph” object: superclass "Mnumeric" not defined in the environment of the object's class
于是我发动科研工作者的技能,search,查了查相关的资料,发现已经有人在Seurat的GitHub中讨论了这个问题,原因是 Matrix package (1.3-3) 新版本不兼容,解决方法就是降级到1.3-2
首先,我们需要卸载当前的Matrix
remove.packages("Matrix")
然后从存档里安装旧版本的Matrix
packageurl <- "https://cran.r-project.org/src/contrib/Archive/Matrix/Matrix_1.3-2.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
国内用户可以用情况镜像源 (文件也就是1.9Mb, 应该不需要用到国内镜像进行加速)
packageurl <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/contrib/Archive/Matrix/Matrix_1.3-2.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
然后测试下, 发现问题已经解决了。
library(Seurat)
pbmc_small <- FindNeighbors(pbmc_small, reduction = "pca", dims = 1:10)
参考资料
https://github.com/satijalab/seurat/issues/4436