2. 环境搭建:R与Python双环境配置、Seurat、Harmony、fastMNN等工具安装
好,我们正式开始动手。
环境搭建这件事,说白了就是给你的电脑装上「翻译器」和「工具箱」。单细胞数据从原始的FASTQ文件到最终的可视化图谱,中间要经过好几层处理。R和Python各有各的强项,我个人的习惯是两条腿走路——哪个工具顺手就用哪个,千万别把自己绑死在一门语言上。
嗯,下面我就把双环境配置的要点,以及几个核心工具(Seurat、Harmony、fastMNN)的安装步骤拆开来讲。你跟着走一遍,基本不会踩坑。
2.1 R环境配置与Seurat安装
先说R。R在单细胞下游分析里几乎是标配,尤其是Seurat这个包,它把归一化、降维、聚类、可视化全串在一起了,生态非常成熟。我记得第一次用Seurat做整合的时候,被它的FindIntegrationAnchors函数惊艳到了——几万个细胞,十来个样本,四十分钟搞定。
安装之前,先确认你的R版本在4.0以上。我用的是4.2.2,兼容性最好。
# 安装Seurat及其核心依赖(直接在RStudio控制台运行)
install.packages('Seurat')
# 如果网速慢,可以换国内镜像
install.packages('Seurat', repos = 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/')
安装完以后,一定要做一步验证。
# 验证安装
library(Seurat)
packageVersion('Seurat') # 我目前用的是5.0.1
如果没报错,说明环境已经就绪。
2.2 Harmony:批次校正的「轻骑兵」
Harmony是个很有意思的工具。它不是替代Seurat的整合,而是嵌入到Seurat的流程中,专门用来做批次校正。它的核心思想是用软聚类对齐细胞群,而不是硬生生地把数据拉伸到同一个空间。
为什么说它轻量?因为它不需要额外的标准化,直接用PCA降维后的低维嵌入做校正。我在处理一个8个样本的PBMC数据集时试过,Harmony跑完,UMAP上不同批次的细胞混得非常自然。
# 安装Harmony(通过BiocManager)
if (!requireNamespace('BiocManager', quietly = TRUE))
install.packages('BiocManager')
BiocManager::install('harmony')
2.3 fastMNN:Python阵营的整合利器
如果你更习惯用Python,那fastMNN是必装的。它是基于Mutual Nearest Neighbors(MNN)的变体,专门为大规模数据做了优化。我记得做骨髓单细胞图谱时,12个样本、6万多个细胞,用fastMNN+Symphony的组合,二十分钟就完成了整合。
fastMNN是scran包的一部分,虽然是R包,但在Python里可以通过reticulate或者直接调用mnnpy来使用。不过,我建议直接在R里用,因为它的原生接口更稳定。
# 安装scran(包含fastMNN)
BiocManager::install('scran')
# 或者只装batchelor(专门做整合)
BiocManager::install('batchelor')
在Python里,如果你想用纯Python的MNN实现,可以装mnnpy。
# Python环境安装
pip install mnnpy
2.4 双环境配置与协同工作流
下面这张图展示了R和Python在单细胞分析中的分工。我把它们拎出来,你一看就明白什么时候该用什么。
2.5 快速安装与版本验证清单
下面这张表是我总结的快速安装清单。你照着走,不出意外十分钟就能搞定。
| 工具 | 安装命令 | 验证命令 | 我的常用版本 |
|---|---|---|---|
| Seurat | install.packages('Seurat') |
packageVersion('Seurat') |
5.0.1 |
| Harmony | BiocManager::install('harmony') |
library(harmony); packageVersion('harmony') |
1.2.0 |
| batchelor(fastMNN) | BiocManager::install('batchelor') |
library(batchelor); packageVersion('batchelor') |
1.18.0 |
| mnnpy(Python) | pip install mnnpy |
import mnnpy; mnnpy.__version__ |
0.1.5 |
conda create -n scrna python=3.9建一个干净的环境,再装包。这样即使以后要升级某个包,也不会影响其他项目。
2.6 环境验证:跑一个最简单的流程
装完以后别急着高兴,跑一个最简单的Seurat流程验证一下。我从官方教程里摘了一段最精简的代码,你复制粘贴就能跑。
# 环境验证脚本(R)
library(Seurat)
library(harmony)
# 创建一个假数据对象(3个基因,100个细胞)
counts <- matrix(rpois(300, 10), nrow = 3, ncol = 100)
rownames(counts) <- c('CD3D', 'CD14', 'CD19')
colnames(counts) <- paste0('cell_', 1:100)
so <- CreateSeuratObject(counts = counts)
so <- NormalizeData(so)
so <- FindVariableFeatures(so)
so <- ScaleData(so)
so <- RunPCA(so)
# 跑Harmony校正
so <- RunHarmony(so, group.by.vars = 'orig.ident')
# 如果没报错,说明环境搭建成功
print('环境验证通过,Seurat + Harmony正常运行!')
这段脚本如果能顺利跑完,证明你的R、Seurat、Harmony都装对了。如果卡住了,大概率是某个依赖包没装全,用install.packages('Seurat', dependencies = TRUE)重装一遍就好。
no function found: Cpp11的错。原因是Rtools没装或者版本不对。后来我直接换到了Posit Cloud上跑,省去了本地环境折腾的麻烦。如果你的机器配置不高,或者不想花时间调环境,直接用云RStudio也是个不错的选择。
好,环境到这里就搭好了。后面的章节,我们会拿真实的数据集来测一测这些工具的批次校正效果。你准备好就行。