第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 与 cLISILISI 实现、阈值设定、结果可视化
实践应用第 20–25 章工具与流程整合完整评估 Pipeline、多方法对比
综合案例第 26–30 章多场景实战与前沿项目级案例、方法局限性分析

每个模块都包含理论讲解 + 代码实操 + 常见避坑。你跟着走完一遍,就能在自己的项目里直接用起来。

1.5 课程知识体系

下面这张图概括了本课程的整体结构。你可以把它当成一张「学习地图」——学完一章就回头看看自己在哪个位置,心里有数。

课程知识体系总览 整合结果校验 kBET 方法 LISI 方法 实践应用 案例解读 综合评估 从基础到实战,系统掌握评估方法

1.6 学习建议与准备

我踩过的坑,希望你别再踩一遍。下面几条建议,是我在实际项目中总结出来的:

学习建议:先理解原理,再动手跑代码。别急着调参——搞懂 kBET 为什么用卡方分布、LISI 为什么用辛普森指数,后面调参自然就有方向了。
注意:整合结果评估不是一次性工作。数据换了、参数改了、整合方法变了——每次都要重新评估。别偷懒,养成习惯。

环境方面,你需要准备 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__)"

如果都能正常输出版本号,恭喜你——环境就绪了。

我建议你把这个课程当成一次「带练」——每章代码都自己跑一遍,然后试着改改参数看看结果怎么变。动手比光看重要得多。