3. 环境搭建:R/RStudio安装、NicheNet包及其依赖包的安装与版本管理
环境搭建是每个生信项目的第一步,也是最容易踩坑的一步。我记得自己第一次接触NicheNet时,光装依赖就折腾了一下午——某个依赖包版本对不上,报错信息像天书一样。后来摸索出一套稳定的流程,今天分享给你。
说白了,NicheNet就是个R包,但它要调用很多上游工具,比如Seurat做单细胞预处理、tidyverse做数据处理。所以我们的环境得同时满足R、RStudio以及几十个依赖包的正确版本。下面我按步骤来讲,你跟着做就行。
3.1 安装R与RStudio
R是运行环境,RStudio是IDE。我个人习惯先装R,再装RStudio,顺序颠倒可能导致RStudio找不到R。
安装R:去CRAN官网下载对应你操作系统的版本。我建议选择R 4.2.0或更高版本,因为NicheNet的一些依赖包已经放弃了对旧版本的支持。下载后直接双击安装包,一路默认就好。
- Windows用户:注意安装路径不要包含中文或空格。
- Mac用户:先确认系统版本是否与R的二进制包兼容。
- Linux用户:可以用包管理器安装,但我更推荐从源码编译,避免库文件冲突。
安装RStudio:去Posit官网下载免费的开源版本。安装后第一次打开,RStudio会自动识别你已安装的R版本。如果没识别到,手动在菜单栏的Tools → Global Options → General → R version里指定路径。
sudo R CMD javareconf 刷新R路径,或者在RStudio里手动设置R的二进制位置。
3.2 安装NicheNet包
NicheNet托管在GitHub上,必须通过devtools或remotes来安装。官方推荐用devtools,但devtools自身又有不少依赖,我建议先安装remotes这个轻量版。
install.packages("remotes")
remotes::install_github("saeyslab/nichenetr")
运行这段命令后,R会自动下载并编译NicheNet。这里有个坑:如果你的网络不稳定,可能下载到一半中断。我在项目里遇到过多次,解决方案是给GitHub配置代理,或者手动下载NicheNet的zip包然后用install_local()安装。
install.packages("devtools")
devtools::install_local()
3.3 依赖包管理——一个都不能少
NicheNet的依赖列在它的DESCRIPTION文件里。真正的核心依赖包括:Seurat(至少4.0)、tidyverse、dplyr、purrr、readr、tibble、ggplot2、Matrix、biomaRt、org.Hs.eg.db等。直接装NicheNet时,这些依赖会自动安装,但版本冲突经常发生。
我在项目中遇到了最常见的问题是Seurat与Matrix的版本不匹配。Seurat 4.x要求Matrix >=1.5,但某些旧包(比如igraph)会强制降级Matrix。解决办法是用install.packages("Matrix", type = "source")强制安装最新版。
下面列出了必须手动确认的核心依赖包,建议按顺序安装:
| 包名 | 最低版本 | 安装命令 | 常见坑 |
|---|---|---|---|
| Seurat | 4.0.0 | install.packages("Seurat") |
依赖RcppArmadillo,需要gcc |
| tidyverse | 1.3.0 | install.packages("tidyverse") |
部分子包(如readxl)需要系统库 |
| BiocManager | 1.30.16 | install.packages("BiocManager") |
用于安装biomaRt等Bioconductor包 |
| biomaRt | 2.50.3 | BiocManager::install("biomaRt") |
需要联网访问Ensembl数据库 |
| org.Hs.eg.db | 3.15.0 | BiocManager::install("org.Hs.eg.db") |
人类基因注释包,大小约30MB |
3.4 版本管理:用renv锁定依赖
说实话,生信项目最难搞的就是版本复现。你今天能跑通的代码,半年后换台机器可能就报错。我强烈建议用renv包来管理项目依赖。renv会在项目根目录生成一个renv.lock文件,记录所有包的具体版本,别人拿到你的项目后运行renv::restore()就能还原一模一样的环境。
基本步骤:
- 安装renv:
install.packages("renv") - 在项目文件夹中初始化:
renv::init() - 安装NicheNet及其依赖(此时所有包版本会被锁定)
- 提交
renv.lock和.Rprofile到版本控制
如果你不想用renv,也可以用packrat,但renv更轻量且兼容性好。我个人现在所有生信项目都标配renv,再也没出现过“我电脑能跑你电脑跑不了”的尴尬场面。
.Rprofile中加入:
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
这样会使用清华镜像,下载速度快很多。
3.5 验证安装是否成功
环境搭好了就得验证。打开RStudio,在控制台执行以下代码:
library(nichenetr)
nichenetr::nichenet_options()
如果没有报错,并且输出了NicheNet的版本信息和可用配体-受体数据库,说明安装成功。接着可以跑一个最小的测试:
# 加载内置的示例数据
data("ligand_target_matrix", "lr_network", "weighted_networks")
# 定义几个配体和基因
ligands <- c("TGFB1", "WNT3A")
genes <- c("SMAD2", "CTNNB1")
# 运行核心预测函数(只是测试,不会消耗太多时间)
predictions <- predict_ligand_activities(geneset = genes,
ligand_target_matrix = ligand_target_matrix,
potential_ligands = ligands)
print(predictions)
如果能看到一个数据框,里边有配体名字和分数,那你的NicheNet环境就算彻底搭好了。
下面是我为你梳理的整个环境搭建流程,一张图看清: