PubChem(NCBI 维护)是全球最大的免费化学信息数据库。它与 ChEMBL 的定位差别很大:ChEMBL 是人工审编、质量优先,PubChem 是自动汇聚、覆盖优先。理解这个差别,才知道什么时候该用哪个。
三层数据结构
| 层 | 标识 | 含义 | 量级 |
|---|---|---|---|
| Compound | CID | 标准化后的唯一化学结构 | 约 1.2 亿 |
| Substance | SID | 各机构提交的原始记录(同一结构可有多条) | 约 3 亿 |
| BioAssay | AID | 生物测定实验 | 约 170 万 |
CID 与 SID 的区别是使用中最容易混淆的地方:SID 是「某机构提交的这条记录」,CID 是「PubChem 标准化后认定的这个结构」。多个 SID 可以映射到同一个 CID。做结构层面的分析用 CID,追溯数据来源用 SID。
PUG-REST:最实用的接口
# 按名称查 CID
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/aspirin/cids/TXT"
# 按 CID 取性质(批量,逗号分隔)
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244,3672,5090/property/\
CanonicalSMILES,MolecularWeight,XLogP,TPSA,HBondDonorCount/CSV"
# 子结构检索
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/substructure/smiles/c1ccccc1O/cids/TXT?MaxRecords=100"
# 相似性检索(Tanimoto 阈值 90%)
curl "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/fastsimilarity_2d/smiles/\
CC(=O)Oc1ccccc1C(=O)O/cids/TXT?Threshold=90&MaxRecords=50"
import requests, pandas as pd
def fetch_props(cids, props):
url = ("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"
+ ",".join(map(str, cids)) + "/property/" + ",".join(props) + "/CSV")
return pd.read_csv(url)
# 每次不超过 ~100 个 CID,控制频率(每秒不超过 5 次请求)
df = fetch_props([2244, 3672, 5090],
["CanonicalSMILES", "MolecularWeight", "XLogP", "TPSA"])
频率限制要遵守:官方要求每秒不超过 5 次请求、每分钟不超过 400 次。批量作业要加延时和重试,否则会被封禁。
大规模下载走 FTP
# 全量化合物 SDF(分块,压缩后数十 GB)
wget -r -np -nH --cut-dirs=5 \
ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF/
# 只要结构与基本性质的话,用 Extras 里的 TSV 更省
wget ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/Extras/CID-SMILES.gz
要做上百万级的处理,一定走 FTP 下全量文件,用 REST 接口拉是不现实的。
生物测定数据的质量问题
PubChem BioAssay 包含大量高通量筛选数据,这是它相对 ChEMBL 的独特资源(尤其是 NIH 的 MLPCN 数据)。但用于建模时要注意:
- 假阳性比例高:HTS 单点筛选的阳性中,很大一部分是聚集体、荧光干扰、化合物降解等造成的假象。用作训练标签前应过 PAINS / 聚集体过滤。
- 活性判定标准不一:不同 AID 的活性阈值和判定逻辑差别很大,跨 assay 合并标签要非常小心。
- 极度不平衡:典型 HTS 的阳性率在 0.1%~1%,建模时必须用 PR-AUC 等适合不平衡数据的指标。
- 结构自动标准化可能出错:自动汇聚意味着没有人工审核,立体化学、盐型、互变异构偶有问题。
什么时候用 PubChem 而不是 ChEMBL
- 用 PubChem:需要最大化学空间覆盖;要查某个化合物的基本信息、供应商、专利、文献;需要 HTS 规模的筛选数据;做子结构/相似性检索(它的检索服务很快且免费)。
- 用 ChEMBL(见 226《ChEMBL》):要训练定量活性模型;需要可靠的靶点归属与 assay 元数据;需要 pIC50 这类已统一换算的数值。
- 组合用法:用 ChEMBL 做建模主数据,用 PubChem 补充化学空间、查供应商与外部信息。
上手提示
- 分清 CID(标准化结构)与 SID(原始提交记录);
- 批量下载走 FTP,REST 接口有严格频率限制;
- BioAssay 的 HTS 阳性假阳率高,作训练标签前必须过滤;
- 覆盖面用 PubChem,定量建模用 ChEMBL。
延伸资源
- 对照数据源:226《ChEMBL》、228《BindingDB》;
- 化合物采购:232《Mcule》、233《eMolecules》;
- 数据清洗见「分子表示」模块。