环境搭建:R/Python依赖安装、conda环境配置与测试

好,咱们开始动手。环境搭建这步,说白了就是给你的电脑装上所有CellTrek需要的“零件”。我个人习惯用conda来管理,因为Python和R的包版本打架的问题太常见了。你想想看,Python包版本不对,R包冲突,再来个GPU驱动不匹配,光这些就能折腾你一天。

所以,我建议你专门新建一个conda环境,把所有东西隔离起来。

环境全景:CellTrek依赖一览

CellTrek本身是R包,但它的核心计算部分用了Python。咱们需要同时搞定R和Python两边的东西。

下面是完整的依赖清单:

依赖类别 具体工具/包 用途
R 核心环境 R (>= 4.1), Seurat, tidyverse, Matrix 单细胞数据处理与可视化
CellTrek 核心 CellTrek (GitHub), SeuratDisk 空间定位算法与数据格式转换
Python 环境 Python 3.8-3.10, torch (>=1.10), scanpy, anndata 深度学习与空间坐标预测
辅助工具 Gradnorm, cell2location (可选) 数据预处理与辅助定位
注意版本兼容性:我在项目中遇到过Python 3.11和torch 2.0不兼容的情况,导致CellTrek的Python后端直接报错。建议卡死在Python 3.8-3.10之间,别追新。

环境准备步骤

下面三步走,搞定所有依赖。

第一步:安装Miniconda

如果你还没装conda,先去官网下个Miniconda。装完之后,打开终端验证一下:

conda --version

第二步:创建并激活conda环境

我习惯用YAML文件来定义环境,这样可复现。创建一个叫 celltrek_env.yml 的文件,内容如下:

name: celltrek
channels:
  - conda-forge
  - bioconda
  - pytorch
  - defaults
dependencies:
  - python=3.9
  - r-base=4.2
  - r-seurat
  - r-tidyverse
  - r-devtools
  - r-reticulate
  - pytorch=1.13.1
  - torchvision
  - torchaudio
  - cudatoolkit=11.7
  - scanpy
  - anndata
  - pip
  - pip:
    - cell2location
    - gradnorm

然后执行:

conda env create -f celltrek_env.yml
conda activate celltrek

这一步会装好大部分东西。但如果网络不好,某些R包可能会中断。

第三步:安装CellTrek的R包

CellTrek在GitHub上,所以需要用devtools来装。进入R环境:

R

然后在R控制台里运行:

library(devtools)
install_github("jinmiao/CellTrek")

如果遇到依赖缺失,比如SeuratDisk没装上,可以手动补:

install.packages("SeuratDisk")
关键点:CellTrek需要reticulate包来在R里调用Python。装好后,一定要检查一下reticulate是否自动找到了你conda环境里的Python。

配置测试:确保一切就绪

环境搭好后,跑个测试最安心。我一般会写一个小脚本来验证。

测试Python端

创建一个test_env.py文件:

import scanpy as sc
import anndata as ad
import torch

print("scanpy version:", sc.__version__)
print("anndata version:", ad.__version__)
print("PyTorch version:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())

运行:

python test_env.py

如果能看到版本号,就说明基本环境没毛病。特别留意一下CUDA是否可用,如果你的机器有NVIDIA显卡的话。

测试R端

在R里运行:

library(CellTrek)
library(Seurat)

# 检查reticulate是否连接上Python
library(reticulate)
py_config()

输出结果应该显示Python路径指向你conda环境里的那个。我曾经踩过坑,R的reticulate自动找了系统默认的Python 3.11,结果torch版本不匹配,报了一堆错。

如果py_config()显示的Python不对,可以手动指定:
use_condaenv("celltrek", required=TRUE)

环境搭建流程图

下面这张图是整个环境搭建的流程,从零到跑通测试:

CellTrek 环境搭建流程图 安装 Miniconda 创建 celltrek_env.yml conda env create -f ... install_github("jinmiao/CellTrek") 运行测试脚本 关键检查点 1. Python 版本 3.8-3.10 2. PyTorch 版本 >= 1.10 3. CUDA 可用(可选) 4. reticulate 连接正确 5. CellTrek 包加载成功 6. Seurat 版本兼容 7. 依赖包版本对齐 8. conda 环境隔离 9. 网络权限(可选) 10. 磁盘空间 > 10G

避坑指南

环境搭建这步,我至少见过十几个人卡住。最常见的问题有三个:

  • R包安装失败:尤其是SeuratDisk和devtools。试试用install.packages("SeuratDisk", repos = "https://cloud.r-project.org/")手动指定镜像。如果还不行,检查一下你的系统有没有装libcurl和libxml2。
  • Python版本不对:CellTrek的Python后端依赖某些旧版本的torch。我曾经遇到过,用conda装的时候没指定Python版本,结果默认装了3.11,torch的某些API变了,CellTrek直接报AttributeError。解决方案很简单:重新建一个环境,指定Python=3.9。
  • GPU加速不生效:如果你有NVIDIA显卡,但torch的cuda.is_available()返回False。检查一下cudatoolkit版本是否和你的驱动匹配。我个人习惯装cudatoolkit=11.7,兼容性最好。
  • 小技巧:如果你在服务器上跑,没有root权限,conda env create可能会因为文件锁定而失败。试试加上--force或者手动删除~/.conda/pkgs下的锁定文件:rm -rf ~/.conda/pkgs/*.lock。

    嗯,环境搭好之后,你就可以正式开始CellTrek的实战了。记得把每一步跑通,别跳过测试。嗯,算是个实战经验吧——我有个同事就是跳过了测试,结果在真实数据上跑了一天,最后发现是因为reticulate没连对Python,白白浪费了几个小时。