最近很多小伙伴在使用服务器的Rstudio运行 monocle的 orderCells报错,如下所示:
这是 monocle 本身的版本或者 R语言版本更新导致函数不兼容,具体表现是 orderCells() 函数涉及一句判断语句:
Error in if (class(projection) != "matrix") projection <- as.matrix(projection) :
the condition has length > 1
这是版本不兼容导致的:
projection <- rbind(projection, tmp) -> "matrix", "array"
if(class(projection) != 'matrix') -> error
projection <- as.matrix(projection)
简单的搜索一下,发现在 github 上面已经有人提过 issue了,并且也有人给出了解决方法:https://github.com/cole-trapnell-lab/monocle-release/issues/434
因此只需要在你的Linux服务器里面使用最简单的wget命令来下载这个安装包,然后安装一下即可:
# 先在命令行 wget 安装包
cd ~/
wget -c https://github.com/cole-trapnell-lab/monocle-release/files/10134172/monocle_2.26.0.tar.gz
然后再在 Rstudio 上安装,采用源码安装的方式:
# 先检查自己的R包路径
.libPaths()
# 设置R包路径,因为这个包还依赖其他包,添加上服务器的公共R包路径"/home/data/refdir/Rlib/",就不用重复安装依赖包了。
.libPaths(c("~/R/x86_64-pc-linux-gnu-library/4.2", "/usr/local/lib/R/library", "/home/data/refdir/Rlib/"))
# 源码安装:
。
# 安装成功后,在服务器 Rstudio 加载该包即可,先不加载原先的monocle,:
detach("package:monocle", unload = TRUE)
# 重新加载即可
library(monocle)
(PS: 如果你的服务器没有存储的公共R包,需要自己先手动慢慢安装这个monocle_2.26.0.tar.gz 依赖的各种其它包)
如果分不清重新加载是加载哪个版本,也可以在 Rstudio 右下角窗口找到自己安装的 monocle,打上勾即可:
安装好了打补丁的包之后,重新 run拟时序代码 就不报错了,可能有 warning,但影响不大:
> cds <- orderCells(cds)
Warning messages:
1: In graph.dfs(dp_mst, root = root_cell, neimode = "all", unreachable = FALSE, :
Argument `neimode' is deprecated; use `mode' instead
2: In graph.dfs(dp_mst, root = root_cell, neimode = "all", unreachable = FALSE, :
Argument `neimode' is deprecated; use `mode' instead
前面的教程:拟时序分析就是差异分析的细节剖析,我们展现了一个表达量矩阵如何去走Monocle2分析,通常我们的表达量矩阵在seurat对象里面, 首先导出,然后构建Monocle2对象,过滤细胞,选择基因,然后降维的时候选择默认DDRTree算法即可。 大家可以赶快试试看哈。
比如可以参考https://bookdown.org/ytliu13207/SingleCellMultiOmicsDataAnalysis/monocle2.html 跑拟时序:
然后进行如下所示可视化:
Visualize meta info
monocle::plot_cell_trajectory(cds, color_by = "cluster")
monocle::plot_cell_trajectory(cds, color_by = "cluster") + facet_wrap(~cluster)
monocle::plot_cell_trajectory(cds, color_by = "State")
monocle::plot_cell_trajectory(cds, color_by = "State") + facet_wrap(~State)
monocle::plot_cell_trajectory(cds, color_by = "Pseudotime")
Visualize gene expression
my_genes <- c("HOPX", "MKI67", "EOMES", "NEUROD2", "SATB2")
cds_subset <- cds[my_genes,]
plot_genes_in_pseudotime(cds_subset, color_by = "cluster")
https://mp.weixin.qq.com/s/1IJflbVgRVIoJ238DcUsKA