1. ADMET 与药物研发:从概念到数据预处理

1.1 什么是 ADMET?

ADMET 这个词,说白了就是药物在人体内的五个关键动作的首字母缩写——吸收、分布、代谢、排泄、毒性。你想想看,一个药片吃下去,能不能有效到达病灶、会不会产生毒副作用,全看这五个环节配合得怎么样。

属性 含义 关键指标(示例) 对研发的影响
A 吸收 药物从给药部位进入血液循环的程度 Caco-2 渗透性、LogP、LogS 决定口服生物利用度
D 分布 药物在体内各组织器官的分配过程 BBB 透过率、PPB、Vd 影响靶点能否有效到达
M 代谢 药物被代谢酶(主要是 CYP450)转化的过程 CYP 抑制/诱导、半衰期 决定药效持续时间和药物相互作用
E 排泄 药物及其代谢物从体内清除的途径 CL、t₁/₂、胆汁/肾排泄 影响给药频率和蓄积毒性
T 毒性 药物对机体产生的有害作用 hERG、LD50、Ames 试验 直接决定能否进入临床

我记得刚入行时,总觉得药效好就等于好药。直到跟的一个项目——化合物体外活性 IC₅₀ 到了纳摩尔级别,结果一测 hERG,IC₅₀ 只有 1 μM。嗯,这个项目后来就停掉了。从那以后我才真正意识到,ADMET 不是锦上添花,而是生死线。

1.2 ADMET 为什么是药物研发的“生死线”?

一组公开数据很能说明问题:在临床前候选化合物中,大约 40%-50% 的失败案例直接或间接与 ADMET 问题相关。而在临床阶段,因安全性和代谢问题终止的项目更是占了大头。为什么会这样?

说白了,体外活性再漂亮,到了体内如果吸收差、代谢快、毒性大,最终也是白费。我参加过不少项目评审会,讨论最激烈的部分往往不是活性数据,而是 ADMET 曲线——“这个化合物在大鼠体内半衰期只有 15 分钟”、“Caco-2 渗透性太低,预计口服吸收不到 10%”。这些话才是真正决定项目走向的关键。

核心观点: ADMET 评估必须在药物研发早期介入,而不是等到发现活性分子后才补做。先筛 ADMET,再优化活性——这个顺序能省下大量时间和经费。

1.3 ADMET 数据从哪里来?

数据是建模和决策的基础。我个人习惯把 ADMET 数据来源分成三类:

  • 公开数据库: 免费可获取的大型化学信息库,数据量大但质量参差不齐。
  • 实验测定: 公司内部或外包实验室的实测数据,质量高但成本也高。
  • 计算预测: 用机器学习或物理模型估算的虚拟数据,适合快速筛选。

下面这张表列出了几个常用的公开数据库,我在项目中几乎每周都会用到它们:

数据库 数据量级 ADMET 相关数据 访问方式
ChEMBL ~200 万化合物 活性、代谢、毒性、ADME 参数 REST API / 下载 SDF
PubChem ~1 亿化合物 生物活性、毒性、安全信息 PUG REST / 批量 FTP
DrugBank ~1.5 万药物 已上市药物的详细 ADMET 数据 XML / CSV 导出
ADMETlab ~20 万化合物 综合 ADMET 预测结果 Web 页面 / API

举个例子,用 ChEMBL API 查询一个分子的信息,返回的 JSON 里就包含了大量 ADMET 相关字段:

curl -s "https://www.ebi.ac.uk/chembl/api/data/molecule/CHEMBL25.json" | jq '.molecule_properties | {alogp, hba, hbd, psa, ro3_pass}'

返回结果大概长这样:

{
  "alogp": 3.2,
  "hba": 4,
  "hbd": 2,
  "psa": 90.6,
  "ro3_pass": true
}

你看,通过一条简单的 API 调用,就能拿到 LogP、氢键供受体、极性表面积这些关键的 ADMET 描述符。但这里有个坑——不同数据库对同一分子的数据可能不一致。我曾经遇到过 ChEMBL 和 PubChem 对同一个化合物的 LogP 标注差了 0.8,排查了半天发现是计算方法和 pH 条件不同导致的。

注意: 从公开数据库获取 ADMET 数据时,一定要记录数据来源和版本。不同数据库的测量条件、计算脚本、单位制可能不同,直接合并使用会引入系统误差。我建议在数据预处理阶段就给每条数据打上来源标签。

1.4 数据预处理:ADMET 建模的第一步

拿到原始数据后,能直接扔进模型训练吗?远没这么简单。我见过太多新手从 PubChem 下载了数据就直接跑随机森林,结果模型在验证集上表现很好,一上线就崩——为什么?因为数据里混了大量重复、缺失、单位不统一、甚至 SMILES 格式不一致的样本。

数据预处理要解决的几个核心问题:

  1. 去重: 同一个化合物在不同来源出现多次,保留哪一份?按来源优先级还是取均值?
  2. 缺失值处理: ADMET 数据缺失很常见,是直接丢弃还是用均值/中位数填充?或者用模型预测补全?
  3. 单位统一: LogP 有的用实验值,有的用计算值;hERG IC₅₀ 有的用 nM,有的用 μM。必须归一化。
  4. 数据清洗: SMILES 标准化、盐形式去除、立体化学标记统一。这一步不做,模型学到的可能是假规律。
  5. 数据拆分: 按时间、结构骨架或随机方式拆分训练/验证/测试集。不同的拆分方式对模型评估影响巨大。

我个人习惯把预处理流程写成自动化管道,而不是手动操作 Excel。原因很简单——项目后期数据量大了,手动处理一次出错的概率几乎是 100%。我曾经因为手动复制粘贴弄反了两列数据,导致模型训了三天才发现结果完全不对……从那以后,我要求团队所有数据预处理必须走脚本,而且每一步都要输出日志。

经验之谈: 如果你刚开始做 ADMET 数据预处理,别急着上复杂模型。先花 70% 的时间把数据处理干净,剩下 30% 的时间跑模型——往往效果比你反过来做要好得多。

1.5 ADMET 知识体系框架

下面这张图把本章的核心内容串在了一起——从 ADMET 五大性质,到数据来源,再到数据预处理,形成一个完整的知识链条。后续章节的所有操作,都是在这个框架下展开的。

ADMET 知识体系框架 吸收 (A) 分布 (D) 代谢 (M) 排泄 (E) 毒性 (T) ADMET 综合评估 公开数据库 实验测定 计算预测 数据预处理与自动化(Snakemake) 图 1-1 从 ADMET 五大性质到数据预处理的知识链路,箭头方向表示数据流向与依赖关系

这张图展示了我们做 ADMET 数据预处理时需要关注的全局视角:五大性质是问题域,数据来源是原材料,预处理和自动化是工程手段。后续章节中,我们会一步步拆解每个环节,用 Snakemake 把这些步骤变成可复用的自动化流程。

嗯,说到自动化,我特别想强调一点——在处理 ADMET 数据时,可复现性比单次结果的准确性更重要。因为药物研发项目周期动辄数年,半年后你拿到的数据量可能是现在的三倍,如果预处理流程是一次性的、手动的,那所有工作都得重来。Snakemake 的价值就在这里:它把数据处理流程定义成有向无环图,改了任何一个环节,只有受影响的部分会重新计算,而不是全部重跑。

本章要点小结:

  • ADMET 是药物研发中决定成功率的五大关键属性,必须早期介入评估。
  • 数据来源包括公开数据库(ChEMBL/PubChem/DrugBank 等)、实验测定和计算预测三类,各有优劣。
  • 同一分子在不同来源的数据可能不一致,预处理时必须记录来源并做对齐。
  • 数据预处理不是可有可无的“脏活”,而是 ADMET 建模的前提条件。
  • 自动化管道(Snakemake)能保证流程可复现、可扩展,是工业级工程实践的基础。