ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
115 stars 30 forks source link

哪怕是在Linux服务器也可以解决monocle2的orderCells报错 #3404

Closed ixxmu closed 1 year ago

ixxmu commented 1 year ago

https://mp.weixin.qq.com/s/1IJflbVgRVIoJ238DcUsKA

ixxmu commented 1 year ago

哪怕是在Linux服务器也可以解决monocle2的orderCells报错 by 单细胞天地


        这个monocle2的orderCells报错我们已经多次分享了,无非就是R包升级导致的问题,见:解决monocle中orderCells报错的一波三折,如果是在个人电脑,无论是Mac还是Windows我们很容易跟着上面的教程解决这个monocle2的orderCells报错,但是很多小伙伴是在Linux环境的服务器使用monocle2,因为拟时序分析非常耗费计算机资源。但是好多人在Linux环境下面很难个性化自定义自己的数据分析环境,所以求助了我们“人美心善”的管理员

下面是共享服务器的管理员的整理和分享

最近很多小伙伴在使用服务器的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")