1. 课程简介与学习目标:课程背景、目标受众、前置知识、学习路径概览

1.1 为什么你需要这门课?

Visium 空间转录组技术这几年火得不行。它能让你在组织切片上同时看到基因表达和空间位置。但现实往往比宣传片骨感——你手头可能有十几张甚至几十张 Visium 切片,每张来自不同患者、不同时间点、不同组织区域。直接把它们拼在一起分析?你会发现批次效应能把真正的生物学信号淹得渣都不剩。

我自己就踩过这个坑。2021 年做肝癌项目时,我拿了 6 张 Visium 切片,兴冲冲地跑完 Seurat 整合,结果 UMAP 图上每张切片各自成一团,根本看不出肿瘤 vs 正常的分界。后来才发现,批次效应没处理好,所有结论都没法发表。所以我专门梳理了这套 多批次 Visium 联合分析 的完整案例流程,从数据预处理到批次校正,再到跨样本比较,给你一条清晰的实操路径。

1.2 这门课能帮你解决什么问题?

  • 批次效应检测:怎么判断你的数据有没有严重的批次效应?有哪些量化指标?
  • 主流校正方法对比:Harmony、Seurat CCA、MNN 矫正、Scanorama……哪个适合 Visium 数据?我踩过的坑都告诉你。
  • 空间一致性分析:校正后怎么验证空间结构有没有被破坏?
  • 跨样本比较的坑:不同解剖区域、不同切片厚度、不同测序深度,怎么归一化?

说白了,学完这门课,你拿到一堆 Visium 切片数据,不会再手足无措。你能独立完成从读取、质控、校正到可视化的全流程。

1.3 目标受众:这门课为谁准备?

唔,简单说就是三类人:

角色 典型痛点 期望收获
生物信息学新手 只会跑标准流程,不懂批次效应原理 理解原理并动手实战
空间组学研究人员 手头有多批次数据但不知如何整合 可直接复用的案例代码
生信工程师/讲师 需要系统教学材料 完整的知识框架+可扩展的脚本

我觉得,只要你能用 Python 跑个简单的 pandas 脚本,懂得空间转录组的基本概念(spot、gene expression matrix),就能跟上。不需要事先精通任何批次校正算法。

1.4 前置知识:你需要带什么来上课?

  • Python 基础:会安装包、会读写 CSV/TSV、会画简单的 matplotlib 图。
  • 空间转录组常识:知道 Visium 每个 spot 对应 ~1–10 个细胞,数据格式是 矩阵 × 空间坐标。
  • 基础统计学:理解什么是 PCA、什么是聚类、什么是 p-value(不用深究,能用就行)。
  • 计算资源:建议内存 ≥ 16GB,因为 Visium 数据动辄几万甚至十几万 spots。
小提示:如果你完全不懂 Python,建议先花半天补一下 pandas 和 scanpy 的基本操作。我当年就是从零硬啃的,其实不难。

1.5 学习路径概览:这门课怎么走?

整个课程分成 5 个模块、30 章。这是我自己摸索出来的最佳学习顺序——先搭地基,再解决核心问题,最后上生产级流程。

课程学习路径概览 模块1:基础 模块2:预处理 模块3:校正 模块4:验证 模块5:生产 第1–6章 第7–12章 第13–20章 第21–25章 第26–30章 各模块核心内容: 模块1 → Visium数据格式、多批次问题诊断、环境搭建 模块2 → 质控、归一化、高变基因选择、主成分分析(PCA) 模块3 → Harmony、Seurat CCA、MNN、Scanorama 案例实操与对比 模块4 → 空间一致性验证(Spot级别 & 区域级别) 模块5 → 自动流水线搭建、报告生成、大规模数据注意事项

我为什么这样安排? 因为很多教程上来就讲 Harmony 参数调优,却不说为什么你的数据需要校正。先让你用实际数据看到批次效应的恐怖(模块1),再教你如何清洗数据(模块2),然后才是校正方法的选择(模块3)。模块4的验证环节特别关键——我曾见过校正后空间结构完全变形的案例,所以必须要有定量验证指标。最后模块5教你如何把整个过程脚本化、自动化,这样你下次接到新项目直接复用。

1.6 每一章你会得到什么?

每章都按照「固定模板」组织,你打开就能直接用:

  • 理论要点:3~5分钟可以读完的核心概念。
  • 代码实战:可直接运行的 Python 脚本(主要基于 Scanpy + Squidpy)。
  • 避坑指南:我踩过的坑,以及我发现的社区常见错误。
  • 输出结果截图/表格:让你看到每一步的中间结果长什么样。
  • 本章自测:2~3个问题帮你检验有没有理解。

举个例子:在第14章(Harmony 校正实战)中,你会看到这样的代码片段:

import harmonypy
import scanpy as sc

adata_list = [adata_batch1, adata_batch2, adata_batch3]
adata_concat = sc.concat(adata_list, label="batch")
sc.pp.pca(adata_concat)
ho = harmonypy.run_harmony(
    adata_concat.obsm["X_pca"],
    adata_concat.obs,
    vars_use=["batch"],
    random_state=42
)
adata_concat.obsm["X_harmony"] = ho.Z_corr.T

嗯,就这么简单。但如果你不提前理解数据格式和参数含义,很容易跑出奇怪的结果。所以每章的前置概念部分我会把关键参数掰开揉碎了讲。

1.7 关于代码运行环境

我建议你用 conda 创建专门的环境:

conda create -n visium_joint python=3.9
conda activate visium_joint
pip install scanpy squidpy harmonypy scipy matplotlib numpy pandas

所有案例都在这个环境下测试过。如果你遇到版本冲突,我建议优先保证 scanpy ≥ 1.9.0,squidpy ≥ 1.2.0。

注意:有同学反映 Windows 下安装 harmonypy 可能会报 C++ 编译错误。我在 macOS / Linux 下都没问题。如果你用 Windows,建议启用 WSL2 或改用 Docker 环境。想省事的可以直接用 Google Colab(我写过适配脚本,在第0章有说明)。

1.8 结语

好了,这就是第一章的全貌。你看到了课程的来龙去脉、目标受众和前置要求,也看到了整个30章的路径图。我觉得最核心的一句话是:“不要等到数据堆成山才想起来做批次校正”——这是我从第一次惨败中记住的教训。从下一章开始,我们就正式动手处理真实数据了。

哦对了,如果你有任何问题,先别急着搜社区。前几章的基础概念我会尽量覆盖掉最常见的坑。