2. 数据来源与采集策略:公开数据库、文献挖掘、内部实验数据
做ADMET建模,数据从哪里来?这是所有工作的起点。我见过不少项目,算法调得再好,最后模型不准,回头一查,根子就在数据来源上出了问题。
今天这部分,我会带着大家梳理三种主要的数据来源:公开数据库、文献挖掘和内部实验数据。每种方法怎么用、有什么坑、我踩过哪些雷,都会讲到。
2.1 公开数据库:拿现成的,但别直接入模
公开数据库是最快的搞数据途径。你想想看,ChEMBL、PubChem、Tox21这些平台,存了几千万条化合物活性数据,而且是免费开放。但我个人的习惯是:用得越方便,质控越要较真。
ChEMBL
ChEMBL是欧洲生物信息学研究所维护的数据库,收录了药物靶点结合数据、ADMET数据、毒理数据。它的优点是高度结构化,每次发布都会做标准化。
- 数据规模:目前有200万+化合物,10万+靶点,1.8亿+活性数据点。
- 数据类型:IC50、Ki、EC50、Kd,以及溶解度、渗透性等ADET标签。
- 下载方式:提供SQLite dump、SDF、CSV,也支持REST API。
我记得刚开始做项目时,从ChEMBL下载了人的CYP2D6抑制数据。看起来有1万多条,但一跑质控脚本,发现问题不少:有些值是"IC50 > 10uM"这种半定量,有些是"not active"这样模糊的描述。最终能用进建模的不到3000条。
PubChem
PubChem数据量比ChEMBL还大,但质量控制参差不齐。因为它允许外部实验室直接提交数据,重复性差是常见问题。
| 对比维度 | ChEMBL | PubChem |
|---|---|---|
| 数据清洗程度 | 高(官方有标准化流程) | 中(依赖提交方,官方做基础校验) |
| 重复化合物处理 | 已做合并 | 存在多个CID对应同一结构 |
| ADMET数据完整性 | 较好 | 分布稀疏,很多实验只有部分属性 |
| 推荐场景 | 靶点结合建模、ADET预测 | 初筛、大规模虚拟筛选 |
怎么拉PubChem数据?他们那个PUG REST API好使。
# 示例:按SMILES查询化合物CID
curl -X POST "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/smiles/cids/JSON" \
-d "smiles=CCO"
# 返回示例
{"IdentifierList":{"CID":[702]}}
# 再查这个CID的溶度数据
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug_view/data/compound/702/JSON"
Tox21
Tox21是美国EPA、NIH和FDA联合搞的项目。它主要关注内分泌干扰、细胞毒性、应激通路激活这些。
它最大的特点就是标准化。所有实验都是96/384孔板,用统一的浓度区间(0.1 nM-100 uM),活性判定也有明确的cutoff。说白了,它的数据整理质量,比一般数据库高一个档次。
但是有一点要注意:Tox21的化合物库是有偏的。它主要覆盖的是农药、工业化学品这些,药物相关结构很少。你用它的数据训练模型,预测新的药物类分子,泛化能力可能打折扣。
2.2 文献挖掘:吃螃蟹,但核要挑干净
公开数据库覆盖不了的数据,只能去文献里挖。我之前做过一个项目,要建血浆蛋白结合率的模型,ChEMBL和PubChem里只有3000条可用的,远远不够。
最后我们团队决定做文献挖掘。这里头门道很多,简单讲几个策略:
- 关键词搜索:PubMed、Google Scholar、ACS、RSC,用"plasma protein binding"+"in vitro"+"human"这种组合。
- 表格提取:很多文献把数据放在PDF表格里。传统方法是用Tabula这类工具,但现在AI辅助抽取效果也不错。
- 补充材料:别只看正文,很多期刊的ESI补充材料里包含全量数据,而且通常是Excel或CSV格式。
- 交叉验证:同一条数据出现在两篇或更多文献里,才能复用。
文献挖掘的常见坑
- 单位不统一:Mg/mL、ng/mL、uM、nM,同一个值可能用几种单位,必须显式归一化。
- 实验条件不完整:温度、pH值、缓冲液类型、血清来源,这些缺失了,数据就没法交叉比较。
- 化合物命名混乱:同一个化合物可能有通用名、商品名、CAS、SMILES。我建议只用标准化InChI Key做唯一键。
嗯,这里要特别提一句,我一直用rdkit.Chem.MolFromSmiles做标准化,然后再转成InChI Key。这样可以规避名字歧义的问题。
2.3 内部实验数据:最可靠,也最麻烦
如果公司有自己的湿实验室,那内部数据是最宝贵的。因为实验流程、仪器、批次都是可控的,不像外部数据那样各种不确定性。
但是,内部数据有个致命伤:数据孤岛。我见过不少公司,每个课题组用各自的Excel表格,命名规范不一致、单位不一致、日期格式不一致。想统一起来,比重新做一轮实验还费劲。
内部数据整合的三个要点
- 制定数据录入标准:从ELN(电子实验记录本)入手,强制使用下拉菜单。IC50单位只能选"nM"或"uM",不能自由填写。
- 统一化合物注册:每个化合物注册到内部管理系统,分配唯一ID、SMILES、CAS。
- 记录实验元数据:实验日期、操作人、仪器型号、批次号。模型预测不准时,这些元数据是排查的第一入口。
我遇到过这样一个案例:同一个化合物,A课题组测的CYP3A4抑制IC50是2uM,B课题组测的是20uM。大家吵半天,最后发现A组用的底物是睾酮,B组用的是咪达唑仑。你看,底物不同,结果能差10倍。所以内部数据质的控制,不只是格式问题,更是对实验设计的理解问题。
2.4 三种来源怎么选?看这张图就明白了
2.5 不同来源的融合策略
大部分的模型最终都会把几个来源的数据合在一起用。问题来了:怎么保证融合后数据是一致的?
- 结构匹配必须用同一套算法:我推荐RDKit的
MolFromSmiles+CanonSmiles,确保同一化合物在不同数据源里不被当成两个实体。 - 实验值的冲突处理:同一化合物、同一属性、不同来源,差异超过2倍,就标记为"冲突"并丢弃;差异在20%以内的,取几何均值。
- 分布对齐:把内部数据、文献数据和公开数据库的数据分别做个分布图。如果某一部分的活性值范围明显不同,就要考虑是否加批处理或做校正。