228

BindingDB:蛋白-配体结合数据怎么用

BindingDB 专注实测的蛋白-配体结合亲和力,是 DTI 与亲和力预测建模的重要来源。这篇讲清它与 ChEMBL 的差别、下载方式与建模注意事项。

BindingDB 是专注蛋白-小分子结合亲和力的公开数据库。相比 ChEMBL 覆盖各类生物活性,BindingDB 更聚焦于可测量的结合常数(Ki、Kd、IC50、EC50),并且特别注重与结构数据的关联——很多条目能直接对应到 PDB 结构,这是它做结构-活性联合建模时的独特价值。

规模与特点

内容 量级
结合数据点 约 300 万条
化合物 约 120 万个
蛋白靶点 约 9,500 个
可关联 PDB 结构的条目 数万条

数据来自文献人工提取、专利,以及从 ChEMBL、PubChem 等库整合。与 ChEMBL 有相当大的重叠——两者一起用时必须去重,否则会造成数据泄漏。

获取方式

# 全量下载(TSV,压缩后约几百 MB)
wget https://www.bindingdb.org/bind/downloads/BindingDB_All_202X.tsv.zip

# 按 UniProt ID 取子集
curl "https://bindingdb.org/axis2/services/BDBService/getLigandsByUniprots?\
uniprot=P00533&code=0&response=application/json"
import pandas as pd

cols = ["Ligand SMILES", "Target Name Assigned by Curator or DataSource",
        "UniProt (SwissProt) Primary ID of Target Chain",
        "Ki (nM)", "IC50 (nM)", "Kd (nM)", "EC50 (nM)",
        "PDB ID(s) of Target Chain", "Curation/DataSource",
        "Temperature (C)", "pH"]
df = pd.read_csv("BindingDB_All.tsv", sep="\t", usecols=cols,
                 low_memory=False, on_bad_lines="skip")

建模前的清洗

  • 处理不等号:数值列里带 >< 前缀的是删失数据(如 >10000),读进来是字符串。必须显式处理:
    def parse_affinity(v):
        if pd.isna(v):
            return None, None
        s = str(v).strip()
        if s.startswith(">") or s.startswith("<"):
            return float(s[1:]), s[0]      # 值 + 关系,删失数据单独标记
        return float(s), "="
  • 不要混用 Ki / Kd / IC50:Ki 和 Kd 是热力学结合常数,IC50 依赖测定条件(底物浓度、酶浓度)。把三者当同一个量训练是常见错误。要么分开建模,要么只用其中一种。
  • 换算成 p 值:统一转成 pKi = −log10(Ki[M]),让分布更接近正态,也便于跨数量级比较。
  • 与 ChEMBL 去重:两库重叠严重。合并时按「标准化 SMILES + UniProt ID」去重,否则同一条数据可能同时落在训练集和测试集。
  • 记录实验条件:温度和 pH 列虽然常缺失,但有值时应保留——不同条件下的结合常数不完全可比。

它的独特价值:结构-活性配对

BindingDB 的 PDB ID(s) 列让你能直接构建「复合物结构 + 实测亲和力」的配对数据集,这正是训练打分函数和结合亲和力预测模型所需要的。

# 筛出有 PDB 关联且有精确 Kd 的条目
mask = df["PDB ID(s) of Target Chain"].notna() & df["Kd (nM)"].notna()
structural = df[mask].copy()
print(f"可用于结构-活性建模的条目:{len(structural)}")

不过要注意,PDB 关联是按靶点链给的,不保证那个 PDB 结构里就结合着这个配体。要构建严格的复合物-亲和力数据集,PDBbind(见 238《PDBbind》)更直接。

许可

BindingDB 数据可免费下载用于学术研究;商业使用前应核对当前的使用条款。它整合了多个来源的数据,不同来源可能带有各自的许可要求。

上手提示

  • Ki / Kd / IC50 含义不同,不要混作同一个标签训练;
  • 数值列含 > < 前缀的删失数据,必须显式解析处理;
  • 与 ChEMBL 重叠严重,合并时务必按标准化结构 + UniProt 去重;
  • PDB 关联列是它的特色,但严格的复合物数据集用 PDBbind 更合适。

延伸资源