3. 靶点-药物相互作用数据库介绍归纳总结

做药物靶点建模,数据就是燃料。我刚入行的时候,总觉得算法模型最牛。实践了两年才发现,花在找数据、清洗数据上的时间,远比调参多。这一章,我把那些必须知道的靶点-药物数据库拉出来溜溜,咱们把它们的脾气秉性摸透。

3.1 主流数据库一览

先把几个最常用的数据库放在一个表里对比着看。这样你心里就有数了,什么场景该用什么库。

数据库名称 核心数据类型 特色 访问方式 一句话点评
ChEMBL 化合物活性数据 (IC50, Ki, Kd) 文献数据人工精选,质量高 Web界面 / Python API / 下载 药物化学活性数据首选
DrugBank 已批准/在研药、靶点机制 临床信息详细,有药物-靶点关系 Web界面 / XML / API 查药物机制和适应症必备
PDB 生物大分子三维结构 结构数据权威,用于对接 Web界面 / FTP下载 结构建模的基石
PubChem 小分子化学结构、活性数据 数据量巨大,覆盖面广 Web界面 / FTP / PUG REST 化合物信息大全
BindingDB 结合亲和力数据 聚焦蛋白-小分子结合数据 Web界面 / 下载 做打分函数训练的好来源

3.2 深入几个关键数据源

表格看完了,咱们一个个细聊。我会结合自己的实战经验,告诉你每个库的门道。

3.2.1 ChEMBL:活性数据的宝库

我个人最常用的是ChEMBL。它侧重于药物化学活性数据,说白了,就是IC50、Ki、Kd这些值。它把文献里的这类数据都扒下来整理好,对我们做QSAR或者训练打分函数,简直是量身定做。

举个例子,你有个靶点蛋白,想知道它已知的化合物活性。用Python客户端非常简单:

from chembl_webresource_client.new_client import new_client
targets = new_client.target
target = targets.search('CHEMBL_ID')
activities = new_client.activity
activities.filter(target_chembl_id__in=['TARGET_ID']).filter(pchembl_value__isnull=False)

我去年做一个激酶项目,就是用这个接口拉了10万条活性数据。这里要注意,ChEMBL的数据版本很重要。我建议你固定一个版本号,不然以后想复现结果,发现数据对不上了,那可就头大了。

3.2.2 DrugBank:临床与机制的集大成者

DrugBank则更偏向临床和药物机制。它有已批准药的详细靶点信息、代谢途径。如果你想知道一个药物是激动剂还是拮抗剂,或者它有没有副作用,DrugBank是不二之选。

我的使用技巧: DrugBank提供XML格式的完整数据包。虽然解析起来稍微有点麻烦,但胜在结构稳定。我会写一个脚本,定时从里面提取“药物-靶点-作用机制”三要素,存到自己的数据库里。

3.2.3 PDB:结构的起点

PDB是结构生物学家的圣殿。做对接的话,结构质量至关重要。我一般会过滤一下分辨率,低于3.0Å的我才放心拿去用。分辨率太低的模型,对接出来的结果容易飘。

3.3 数据获取策略与API使用

为什么不建议每次都去网页上下载?因为数据库更新很频繁。而且手动下载不便于流程化。我个人习惯是写脚本,通过API或FTP定时同步。

这里我提供一个批量获取ID映射的方法,这个在数据整合时常用:

# 使用 UniProt ID 映射 API
import requests
url = "https://rest.uniprot.org/idmapping/uniprotkb"
params = {"from": "ACC", "to": "CHEMBL", "ids": "P04637"}
response = requests.post(url, params=params)
print(response.json())
避坑注意: 不同数据库对同一个化合物或靶点的ID可能完全不同。活性值的单位也可能不同,有的用nM,有的用uM,甚至还有用mM的。不统一单位就直接建模,结果就是一团糟。

3.4 数据整合流程 (SVG)

上面说了这么多数据库,它们不是孤立的。真正做项目时,需要把它们串联起来。我整理了一张图,你看完就知道数据是怎么流动的了。

靶点-药物相互作用数据来源与整合逻辑 ChEMBL DrugBank PDB PubChem BindingDB 数据整合层:跨库ID映射 / 活性值标准化 / 数据去重 QSAR 模型 分子对接 药效团建模 Fig:多源数据整合是药物靶点建模成功的关键预步骤

3.5 避坑指南:我的数据清洗血泪史

我刚入行时吃过一个大亏。曾经痴迷于堆数据,从四个数据库里凑活性数据,结果训练出来的模型在测试集上表现极差。后来一查,是数据打架了。

  • 单位不统一:同一个化合物,一个库标的是10 nM,另一个标的是10 uM。差了一千倍,模型直接学歪了。
  • ID映射错误:有些数据库的ID不是唯一的,一个靶点可能有多个Entry。映射时如果不做过滤,会串数据。
  • 活性值模糊:有的文献只写了 " > 10000 nM",这种不确定数据要慎用。直接扔掉往往比留着更安全。

所以我现在建了个内部脚本库,专门用来做数据清洗和标准化。每次开始新项目,第一条命令就是跑一遍标准化流程,确保数据源干净无歧义。

3.6 本章总结

数据库是建模的根基。我个人觉得,与其把时间花在调参上,不如花心思把数据源头理清楚。把ChEMBL、DrugBank、PDB这些库的特点和脾气摸透了,再把它们的数据整合起来,你的模型就已经成功了一半。