第1章 课程介绍
1.1 为什么需要这门课?
单细胞数据整合完了,然后呢?
这个问题我几乎每次培训都会被问到。很多人跑完 Harmony、Seurat 或 scVI,看到整合后的 UMAP 上不同批次叠在一起,就觉得「嗯,效果不错」。但你仔细看看——真的叠好了吗?有没有局部区域还是分的?有没有某个细胞类型被强行拉在一起?
我见过太多人跳过这一步,直接做差异分析和注释,结果后面发现聚类全是按批次分的,白白返工。说实话,我自己早期也踩过这个坑。后来在项目里用 kBET 和 LISI 做定量评估,才真正敢对整合结果说「没问题」。
这门课要讲的,就是这两个核心评估指标——kBET 和 LISI。它们能从不同角度告诉你:整合到底好不好。
1.2 学习目标
学完这门课,我希望你能做到下面几件事。说实话,定这些目标时我参考了自己带项目时的实际需求——不贪多,但每条都能直接用。
- 理解整合结果校验的必要性——知道为什么要做,不做会有什么后果。
- 掌握 kBET 的原理与实现——从假设检验到 KNN,能自己跑通并解读结果。
- 掌握 LISI 的原理与实现——理解局部逆辛普森指数,能区分 iLISI 和 cLISI。
- 能独立完成完整评估流程——从数据准备、参数选择到结果可视化,形成闭环。
- 能对比不同整合方法——用定量指标说话,而不是靠「目测」。
- 能规避常见坑点——哪些情况 kBET 会失效?LISI 的阈值怎么设?我都会一一讲到。
1.3 适用人群
如果你属于下面任何一类,这门课都适合你。我记得有一次 workshop 结束,有个刚入行的同学跟我说:「早知道有这些指标,我前两个月就不会白干了。」——我希望你也有这种感觉。
- 单细胞数据分析初学者——刚学会整合,但不知道怎么评估结果好坏。
- 有经验的生物信息学研究人员——已经用过一些评估方法,想系统掌握 kBET 和 LISI。
- 算法开发与工具链构建者——需要在流程中嵌入自动化的整合质量评估模块。
- 审稿人/项目负责人——需要判断别人做的整合是否可靠,想建立自己的评判标准。
1.4 课程安排概览
整门课共 30 章,分成 5 个模块。我个人习惯把复杂内容拆成「原理 → 实现 → 应用」三段,这样学起来不累,用起来也顺手。
| 模块 | 章节 | 核心主题 | 实践内容 |
|---|---|---|---|
| 基础入门 | 第 1–5 章 | 整合基础与校验必要性 | 环境搭建、数据准备、整合方法概述 |
| kBET 方法 | 第 6–12 章 | 假设检验、KNN、批效应评估 | kBET 实现、参数调优、结果解读 |
| LISI 方法 | 第 13–19 章 | 局部逆辛普森指数、iLISI 与 cLISI | LISI 实现、阈值设定、结果可视化 |
| 实践应用 | 第 20–25 章 | 工具与流程整合 | 完整评估 Pipeline、多方法对比 |
| 综合案例 | 第 26–30 章 | 多场景实战与前沿 | 项目级案例、方法局限性分析 |
每个模块都包含理论讲解 + 代码实操 + 常见避坑。你跟着走完一遍,就能在自己的项目里直接用起来。
1.5 课程知识体系
下面这张图概括了本课程的整体结构。你可以把它当成一张「学习地图」——学完一章就回头看看自己在哪个位置,心里有数。
1.6 学习建议与准备
我踩过的坑,希望你别再踩一遍。下面几条建议,是我在实际项目中总结出来的:
环境方面,你需要准备 Python 3.8+,以及下面几个核心库。我建议你新建一个虚拟环境,避免包版本冲突。
# 创建并激活虚拟环境(推荐)
python -m venv singlecell_eval
source singlecell_eval/bin/activate # Linux/Mac
# singlecell_eval\Scripts\activate # Windows
# 安装核心依赖
pip install scanpy==1.9.5
pip install anndata==0.10.0
pip install numpy pandas scipy scikit-learn
pip install matplotlib seaborn
# LISI 评分包
pip install lisi
# kBET 的 Python 实现
pip install pykbetch
装好之后,验证一下环境:
python -c "import scanpy; print('scanpy', scanpy.__version__)"
python -c "import pykbetch; print('pykbetch', pykbetch.__version__)"
python -c "import lisi; print('lisi', lisi.__version__)"
如果都能正常输出版本号,恭喜你——环境就绪了。
我建议你把这个课程当成一次「带练」——每章代码都自己跑一遍,然后试着改改参数看看结果怎么变。动手比光看重要得多。