端到端的单细胞管道SCP

365彩票客户端下载 📅 2025-08-08 05:44:41 ✍️ admin 👁️ 2948 ❤️ 760
端到端的单细胞管道SCP

积土而为山,积水而为海

SCP的完整安装分为两个部分,一个是R包安装,另一个是内部的python环境构建。

如果不需要运行一些python相关的方法则可以跳过下面的[创建SCP的python环境】步骤。

1、安装到全局环境中这里的全局环境是指R的默认包路径(在R中通过.Library查看),与之相反的是后文中使用renv所创建的隔离环境。

R版本要求:

R >= 4.1.0Python版本要求:

Python 3.7-3.9注意,实际上Python版本并不重要,因为无需手动配置python环境,使用SCP中的PrepareEnv函数会自动下载安装所需版本的conda、python以及软件包。

1.1 R包安装从GitHub上自动下载安装最新版本的SCP(推荐):代码语言:javascript代码运行次数:0运行复制if (!require("devtools", quietly = TRUE)) {

install.packages("devtools")

}

devtools::install_github("zhanghao-njmu/SCP")

手动安装:用各种方式下载好R包,比如在R中可以运行命令:

代码语言:javascript代码运行次数:0运行复制download.file("https://github.com/zhanghao-njmu/SCP/archive/refs/tags/v0.5.1.tar.gz", destfile = "SCP.tar.gz")

使用devtools::install_local自动安装SCP及相关依赖(这种安装过程可以自动寻找安装依赖包):代码语言:javascript代码运行次数:0运行复制devtools::install_local("SCP-0.5.1.tar.gz")

或使用install.packages安装SCP(如果缺失依赖包会报错,需要再根据提示手动逐一安装依赖包):代码语言:javascript代码运行次数:0运行复制install.packages("SCP-0.5.1.tar.gz", repos = NULL, type = "source")

1.2 创建SCP的python环境当SCP首次安装好之后,运行library(SCP)会有下面的提示:

代码语言:javascript代码运行次数:0运行复制library(SCP)

## > SCP python environment not found.

## > If you have already created an SCP python environment using conda, you can specify the conda path by setting options(reticulate.conda_binary = "/path/to/conda", SCP_env_name = "SCP_env") before loading the package.

这不是报错,你可以继续使用SCP的大部分功能,也可以运行SCP::PrepareEnv()来继续构建SCP所需的python环境和软件包,来运行RunPAGA、RunSCVELO等python方法。

国内用户建议使用镜像,可用的一些镜像地址可在GitHub上找到,一般可以直接运行下面的代码完成创建:

代码语言:javascript代码运行次数:0运行复制SCP::PrepareEnv(

miniconda_repo = "https://mirrors.bfsu.edu.cn/anaconda/miniconda",

pip_options = "-i https://pypi.tuna.tsinghua.edu.cn/simple"

)

当想重装python环境时,PrepareEnv还可以通过设置下面的两个参数之一来进行安装:

force = TRUE表示强制安装,也就是会删除已存在的python环境和软件包conda = NULL会重新下载安装miniconda,此时也会删除已存在的python环境并重装PrepareEnv函数的过程大致是:

寻找环境中可用的conda, 用户也可以手动设置conda路径:代码语言:javascript代码运行次数:0运行复制options(reticulate.conda_binary = "/path/to/conda")

如果找不到会根据miniconda_repo自动下载miniconda,安装到miniconda到以下路径:

linux: ~/.local/share/r-minicondaosx: ~/Library/r-minicondawin: C:/Users/xxx/AppData/Local/r-miniconda寻找SCP的python环境,默认环境名称是SCP_env,用户也可以手动设置环境名称:代码语言:javascript代码运行次数:0运行复制options(SCP_env_name = "new_name")

如果找不到环境则自动创建,创建环境时使用的python版本默认为3.8(conda自动下载)

检查环境中的python包版本,这里要求比较严格,以保证各软件兼容,如果找不到对应版本的包,则会使用pip自动下载。这里使用pip安装包而不是用conda的原因有两个,一个是快,另外一个是有些包使用conda自动安装后可能无法使用,对个人环境和权限有要求。2、安装到隔离的R环境中SCP会牵扯许多依赖包,如果不想干扰当前的环境,比如一些依赖包的版本不想在安装时被改变,或者想将SCP及其依赖包设定在一个固定版本避免更新,来保证重复性,我们可以使用renv。类似于conda环境,R也可以使用renv创建一个独立的R包环境。

首先我们要创建一个隔离的R环境:代码语言:javascript代码运行次数:0运行复制if (!require("renv", quietly = TRUE)) {

install.packages("renv")

}

dir.create("~/SCP_env", recursive = TRUE) ## It cannot be the home directory "~" !

renv::init(project = "~/SCP_env", bare = TRUE, restart = TRUE)

在隔离环境中安装SCP:如果全局环境中没有SCP,则运行:代码语言:javascript代码运行次数:0运行复制renv::activate(project = "~/SCP_env")

renv::install("BiocManager")

renv::install("zhanghao-njmu/SCP", repos = BiocManager::repositories())

SCP::PrepareEnv(

miniconda_repo = "https://mirrors.bfsu.edu.cn/anaconda/miniconda",

pip_options = "-i https://pypi.tuna.tsinghua.edu.cn/simple"

)

如果全局环境中已经安装好了SCP,则运行:代码语言:javascript代码运行次数:0运行复制renv::activate(project = "~/SCP_env")

renv::hydrate("SCP")

SCP::PrepareEnv(

miniconda_repo = "https://mirrors.bfsu.edu.cn/anaconda/miniconda",

pip_options = "-i https://pypi.tuna.tsinghua.edu.cn/simple"

)

使用SCP前激活环境:代码语言:javascript代码运行次数:0运行复制renv::activate(project = "~/SCP_env")

library(SCP)

data("pancreas_sub")

pancreas_sub <- RunPAGA(srt = pancreas_sub, group_by = "SubCellType", linear_reduction = "PCA", nonlinear_reduction = "UMAP")

CellDimPlot(pancreas_sub, group.by = "SubCellType", reduction = "draw_graph_fr")

保存SCP环境的状态,当一些包版本改动后可以恢复至保存的状态:代码语言:javascript代码运行次数:0运行复制renv::snapshot(project = "~/SCP_env")

## The versions of some packages have been modified.

renv::restore(project = "~/SCP_env")

关于隔离环境的详细使用说明,请参考renv的文档:https://rstudio.github.io/renv/articles/renv.html

3、常见问题3.1、ERROR: dependency ‘xxx’ is not available for package ‘SCP’这是因为安装依赖于一些Bioconductor的包,但是找不到可以该包所在的仓库。

解决办法是在R中运行:

代码语言:javascript代码运行次数:0运行复制if (!require("BiocManager", quietly = TRUE)) {

install.packages("BiocManager", lib = lib)

}

options(repos = BiocManager::repositories())

之后再安装SCP或依赖包。

3.2、Timeout was reached: [api.github.com] Connection timed out after 10005 milliseconds下载连接超时,在R中设置”options(timeout=10000)“或者手动下载安装包进行安装,参考上文[R包安装]

3.3、namespace ‘xxx’ xxx is already loaded, but >= xxx is required.简单来说,就是”当前的R session中已经载入了一个旧的包,需要将其升级”。

一般情况下按照提示install.packages('xxx')就可以了,但是很多人可能发现问题依然会出现。

也会有很多人发现一些蹊跷的地方,比如:

自己根本没有加载过这个当事”包”当事”包”版本明明已经符合,但是仍然报错实际上,这个问题常出现在Rstudio中。在Rstudio打开一个新的session,按几个回车没那么快反应出命令提示符>的话,那应该是你的rstudio正在帮你载入一些包,其中就会包括这些当事”包”。

所以一步到位的解决办法就是:打开R console(而非Rstudio)–> install.packages(‘xxx’) –> 再次安装SCP或者你所需要的包

如果想在Rstudio中避免启动session后就载入一些包,可以取消Rstudio所有的启动后加载功能:打开Tools –> Global Options –> General,将下图的选项框全部取消勾选:

3.4、Error: package or namespace load failed for ‘dbplyr’问题和之前的namespace 'xxx' xxx is already loaded, but >= xxx is required.是类似的,R session启动时被预先加载了一些包,导致无法正常加载dbplyr。

有两种解决办法:

在R console加载运行SCP,或者取消Rstudio所有的启动后加载功能;在你的home目录下或者R project目录下, 新建.Rprofile(它是R的启动文件,会在R环境启动时自动加载),将library(dbplyr)或者直接将library(SCP)写入其中即可。3.5、‘…SCP_env/lib/libpython3.8.dylib’ (mach-o file, but is an incompatible architecture (have ‘arm64’, need ‘x86_64’))conda的版本与处理器架构不符,需要x86_64而当前安装的是arm64,解决办法是重新下载安装miniconda/anaconda,或者在R中使用以下命令重装miniconda:

代码语言:javascript代码运行次数:0运行复制SCP::PrepareEnv(

conda = NULL,

miniconda_repo = "https://mirrors.bfsu.edu.cn/anaconda/miniconda",

pip_options = "-i https://pypi.tuna.tsinghua.edu.cn/simple",

force = TRUE

)

3.6、已经顺利安装好了SCP的python环境,但是library(SCP)后仍然提示”SCP python environment not found.”这是因为一个R session下通过reticulate对python的调用是单次的。

如果此前已经运行library(reticulate)调用了一个python,且该python不是SCP所用的python(版本不符合或当中没有SCP的python环境),则需要重新启动一个新的R session再运行library(SCP)。

相关创意

投资15亿建大楼、一年测试30款游戏,这家低调千人大厂藏不住了
QQ隐藏在屏幕上方的方法
什么是火箭?火箭与导弹有什么区别?运载火箭是怎样发展起来的?
淘宝店铺直播教程步骤是什么,如何开通直播
皮卡堂6月26日人类的本质活动攻略
三亚海棠湾热气球飞行体验基地游玩攻略简介,三亚海棠湾热气球飞行体验基地门票/地址/图片/开放时间/照片/门票价格【携程攻略】
如何在魅族手机上查看流量消耗情况?
梅西5次世界杯终夺冠:共13球8助攻,出场次数和时间历史榜首
什么是软盘,软盘的知识介绍