3. 环境搭建:R/RStudio安装、NicheNet包及其依赖包的安装与版本管理

环境搭建是每个生信项目的第一步,也是最容易踩坑的一步。我记得自己第一次接触NicheNet时,光装依赖就折腾了一下午——某个依赖包版本对不上,报错信息像天书一样。后来摸索出一套稳定的流程,今天分享给你。

说白了,NicheNet就是个R包,但它要调用很多上游工具,比如Seurat做单细胞预处理、tidyverse做数据处理。所以我们的环境得同时满足R、RStudio以及几十个依赖包的正确版本。下面我按步骤来讲,你跟着做就行。

准备工作:确保你的电脑能联网,内存至少8GB,硬盘剩余10GB以上。Windows用户建议先关闭杀毒软件,避免安装时误拦截。

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里指定路径。

注意:我曾经遇到一台旧Mac,装好RStudio后一直报“R not found”。后来发现是系统权限问题,R被安装在了/opt/local下,RStudio默认扫描不到。解决办法是在终端运行 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()安装。

手动安装方案:去NicheNet的GitHub仓库页面,点击“Code” → “Download ZIP”。解压后,在R中设置工作目录到解压文件夹,运行:
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
避坑指南:我曾经直接在已有项目环境下装NicheNet,结果Seurat从4.3被降级到3.6,导致下游分析全崩。后来我养成了习惯——每次做NicheNet分析前,都创建一个全新的R环境或者使用renv隔离项目依赖。

3.4 版本管理:用renv锁定依赖

说实话,生信项目最难搞的就是版本复现。你今天能跑通的代码,半年后换台机器可能就报错。我强烈建议用renv包来管理项目依赖。renv会在项目根目录生成一个renv.lock文件,记录所有包的具体版本,别人拿到你的项目后运行renv::restore()就能还原一模一样的环境。

基本步骤:

  • 安装renv:install.packages("renv")
  • 在项目文件夹中初始化:renv::init()
  • 安装NicheNet及其依赖(此时所有包版本会被锁定)
  • 提交renv.lock和.Rprofile到版本控制

如果你不想用renv,也可以用packrat,但renv更轻量且兼容性好。我个人现在所有生信项目都标配renv,再也没出现过“我电脑能跑你电脑跑不了”的尴尬场面。

小技巧:当你用renv::restore()发现下载很慢时,可以设置全局镜像。在.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环境就算彻底搭好了。

下面是我为你梳理的整个环境搭建流程,一张图看清:

NicheNet环境搭建流程 安装R ≥4.2.0 安装RStudio 安装remotes ➜ 安装nichenetr 安装依赖包 Seurat · tidyverse biomaRt · org.Hs.eg.db renv版本锁定 renv::init() → renv::snapshot() 验证安装 library(nichenetr) + 测试 关键提醒 • 先安装R,再安装RStudio,顺序不要颠倒。 • NicheNet依赖众多,建议使用renv进行项目级隔离,避免版本冲突。 • 遇到网络问题手动下载zip安装,或者切换国内CRAN镜像。
总结一下:按这个流程走下来,R + RStudio + NicheNet + 依赖 + 版本管理一套到位。你在项目中如果有其他特殊依赖(比如ggplot2扩展包),也可以顺着这个思路加进去。记住,环境问题排查的逻辑永远是:版本 → 权限 → 网络 → 系统库,别上来就重装系统。