第1章 课程导论:分子指纹与药物筛选概述

1.1 为什么我们需要分子指纹?

先问大家一个问题:给你两个分子,你怎么知道它们像不像?

做药物筛选的人每天都要回答这个问题。我们手里可能有几百万个化合物,要从中找出能和靶点结合的苗头分子。一个一个地试?不可能。所以我们需要一种方法,把复杂的分子结构变成一串数字或者一段编码——这就是分子指纹。

我刚开始做这个方向的时候,对这种“把分子搞成编码”的做法有点抗拒。你想想看,一个三维的分子结构,压缩成几百个比特,信息不会丢吗?后来跑了一个项目,需要从两百万个化合物里筛出跟已知活性分子相似的候选物。用指纹做相似性搜索,几秒钟就出结果了。嗯,从那以后我再也没怀疑过指纹的价值。

一句话理解分子指纹: 把分子结构编码成一串固定长度的二进制位串或计数向量,通过比较这些编码来判断分子之间的相似度。

3 药物筛选的现实困境

药物筛选不是一件浪漫的事。说白了,它就是大海捞针。我来列几个真实数字:

  • 一个中型化合物库:10万~200万个分子
  • 筛选一个靶点需要的实验成本:几十万到几百万
  • 从筛选到临床前候选化合物的成功率:约0.1%

所以,我们需要用计算的方法先做一轮“虚拟筛选”。把不可能靠实验测完的分子库,先用计算机模型过滤一遍。分子指纹就是虚拟筛选里最基础、最常用的工具之一。

3.3 本课程会讲什么?

这门课一共30章,我打算带着大家从原理到实战,把分子指纹在药物筛选里的应用讲透。核心路径是这样的:

  1. 基础篇(第1~8章): 指纹的定义、常见类型、相似度计算方法。
  2. 工具篇(第9~14章): 怎么用RDKit、Open Babel这些工具生成指纹。
  3. 实战篇(第15~26章): 用指纹做相似性搜索、聚类、虚拟筛选、QSAR建模。
  4. 进阶篇(第27~30章): 指纹的局限、改进方法,以及与深度学习指纹的对比。
一句话总结课程目标: 让你能独立完成一个基于分子指纹的药物筛选项目——从数据准备、指纹计算、模型训练到结果解释。

1.4 知识体系与核心逻辑

下面这张图展示了第一章涉及的核心概念和它们之间的关系。我习惯在开课之前先让学员看一遍整体视图,避免后面越学越糊涂。

分子指纹药物筛选知识体系 分子指纹药物筛选知识体系 · 第1章导论 分子指纹(Molecular Fingerprint) 常见类型 MACCS · ECFP · Morgan · RDKit 相似度度量 Tanimoto · Dice · Cosine 应用场景 相似性搜索 · 聚类 虚拟筛选 · QSAR建模 课程四大模块:基础篇 → 工具篇 → 实战篇 → 进阶篇 核心逻辑 分子 → 编码(指纹) → 比较(相似度) → 筛选(应用) 课程目标:独立完成基于指纹的药物筛选项目 第1章为全景导论,后续章节逐一深入每个节点

1.5 学习路径建议

这门课我设计成“从原理入手,以项目结尾”。给不同基础的学习者几条路径建议:

基础背景 推荐路径 预估投入时间
有Python基础,不了解化学信息学 第1~16章按顺序,重点在RDKit操作 30~40小时
有化学背景,编程较弱 先看第1~8章理解原理,再补Python基础后看9~14章 40~50小时
有药物筛选经验,想系统掌握指纹 快速过第1~8章,重点在15~30章项目案例 20~30小时
我的建议: 别跳过任何代码实践。运行指尖下的代码,改动一个参数看结果变化,比读十遍教材都管用。

1.6 你需要准备的环境

从下一章开始,我们就要动手了。先把环境搭好:

# 推荐使用 conda 创建独立环境
conda create -n fingerprint python=3.10
conda activate fingerprint

# 安装核心依赖
conda install -c conda-forge rdkit numpy pandas matplotlib scikit-learn
pip install openbabel-wheel  # Windows 用户用 openbabel-wheel

我在项目里踩过一个大坑:用pip直接装RDKit,结果装了一个不完整版本,很多功能跑不了。所以建议一律用conda装RDKit,稳妥。

1.7 这一章我们要记住什么?

把知识点收一下:

  • 分子指纹:把分子结构变成固定长度的编码,用于快速比较。
  • 相似度度量:Tanimoto系数是药物筛选里最常用的,没有之一。
  • 核心应用:虚拟筛选、聚类、QSAR建模——三个方向贯穿课程。
  • 课程路径:基础→工具→实战→进阶,30章走完全程。

好,第一章就讲这些。把环境搭好,下章我们开始写第一行指纹计算的代码。