Jupyter 与交互式分析环境
组学分析的第一个工程问题是:在哪里写下可以重复运行的分析过程?
Jupyter Notebook 是最常见的答案。它把代码、说明、图表和运行结果放在一份文档里,适合探索性分析和教学演示。
但 Notebook 不是万能的。这一篇把它的用法和边界都说清楚 — 哪些事 Notebook 该做、哪些事必须用脚本。
Notebook 是什么、不是什么
适合 Notebook 做的事
- 记录分析思路(每跑一段代码补一段 Markdown 解释)
- 逐步运行代码并立刻看结果
- 快速查看表格 / 图
- 解释参数选择的理由
- 分享小型分析示例 / 教学
不适合 Notebook 做的事
- 长时间无人值守的大流程(Cell Ranger / STAR 这种小时级任务)
- 大规模批处理(一次跑 100 个样本)
- 不能版本控制的正式生产流程
- 敏感数据输出(Notebook 默认会把输出嵌到文件里,临床数据进 git 就尴尬了)
核心判断:Notebook 是"探索 + 记录"载体,不是"执行 + 部署"载体。稳定下来的步骤应该整理到 .R / .py 脚本里。
四种常见环境
1. Jupyter Notebook(经典界面)
适合初学者起步。文件 .ipynb,内部保存代码单元、Markdown 文本、输出结果。
pip install notebook
jupyter notebook
2. JupyterLab(推荐)
更完整的工作界面:Notebook + 终端 + 文本编辑器 + 文件浏览器一体。真实项目里基本都用 JupyterLab。
pip install jupyterlab
jupyter lab
3. Google Colab(云端,临时用)
打开浏览器就能跑 Python。免费用户也能用 GPU。
适合:快速试代码 / 课堂演示 / 共享小型 Notebook / 临时用 GPU 跑一下深度学习。
不适合:
- 长期保存重要环境(会话经常断)
- 处理隐私 / 临床数据(数据上传 Google)
- 安装量大的依赖(每次启动都要重装)
4. 服务器 Notebook(真实项目首选)
数据在服务器上时,把 JupyterLab 起在服务器,浏览器通过 SSH 端口转发访问。
服务器端:
ssh aliyun
cd /path/to/project
conda activate sc-env
jupyter lab --no-browser --port 8888
本地终端:
ssh -L 8888:localhost:8888 aliyun
# 然后浏览器打开 http://localhost:8888
注意权限、数据路径、端口安全(不要把 8888 直接暴露公网)。
在 R 里也能用 Notebook
.ipynb 不只是 Python 的。装一 个 IRkernel,就能在 Jupyter 里跑 R。
install.packages("IRkernel")
IRkernel::installspec()
之后启动 JupyterLab,新建 Notebook 时能选 R 内核。Seurat / DESeq2 / ggplot2 都能直接在里面跑,输出图也能内嵌。
备选:很多 R 用户直接用 RStudio + R Markdown / Quarto,效果跟 Notebook 类似。单纯做 R 分析不一定非要 Jupyter。Jupyter 的优势在 Python 重,或者多语言混合的项目。
Notebook 的基本结构
每个 Notebook 由一组**单元(cell)**组成,主要两种: