关于 Checking ChEMBL for Structured SAR Data
Checking ChEMBL for Structured SAR Data 是一项供药物化学研究使用的技能,用于检查论文是否收录于 ChEMBL,并获取结构化生物活性数据。它要求通过 DOI 查询,并将数据库数据与全文研究结合使用。
主要功能
- 01通过 DOI 查询论文收录情况
- 02获取生物活性数据点数量
- 03按活性类型筛选数据
- 04将 ChEMBL 状态记录到研究摘要
- 05优先复用结构化数据,补充全文分析
适用场景
- 01筛查药物化学论文是否有 ChEMBL 数据
- 02获取论文中的 IC50 或 MIC 等活性数据
- 03在解析 PDF 表格前检查结构化数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ kthorn/ research-superpower --skill checking-chembl-for-structured-sar-data安装后在 Claude Code 中输入/checking-chembl-for-structured-sar-data确认已加载。
详细介绍
检查 ChEMBL 中是否有结构化 SAR 数据
概述
ChEMBL 是一个经过人工整理的数据库,收录了约 99,000 篇药物化学论文及提取、标准化后的生物活性数据。如果一篇论文已收录在 ChEMBL 中,你就可以直接访问结构化数据,无需解析 PDF。
核心原则: 检查药物化学论文时,优先查看 ChEMBL。经过整理的数据比从表格中解析的数据更可靠。
适用场景
以下情况适用此技能:
- 论文介绍药物化学 / 药物发现
- 摘要提及化合物系列、SAR 或活性数据
- 论文包含 IC50、MIC、Ki、EC50 或其他生物活性测量值
- 尝试从表格 / 图中提取数据之前
- 论文在相关性评估中的得分 ≥ 7
不适用场景:
- 非药物化学论文(细胞生物学、基因组学等)
- 不含活性测量值的论文
- 不含原始数据的综述
- 非常新的论文(< 6 个月,可能尚未整理)
ChEMBL API 基础知识
基础 URL: https://www.ebi.ac.uk/chembl/api/data/
无需身份验证
重要:只能通过 DOI 查询 ChEMBL,不能通过 PMID 查询
- API 会在结果中返回 PMID,但不接受将其作为查询参数
- 查询时始终使用 DOI:
?doi=10.1234/example - 即使论文已收录在 ChEMBL 中,使用 PMID 查询也会返回 0 条结果
分两步操作:
- 检查论文是否(通过 DOI)收录在 ChEMBL 中
- 如果已收录,获取生物活性数据
第 1 步:检查论文是否收录在 ChEMBL 中
通过 DOI 查询(唯一可用的方法):
curl -s "https://www.ebi.ac.uk/chembl/api/data/document.json?doi=DOI"
⚠️ 重要:必须使用 DOI,而非 PMID
# ✅ CORRECT - Use DOI
doi="10.1021/jm401507s"
curl -s "https://www.ebi.ac.uk/chembl/api/data/document.json?doi=$doi"
# ❌ WRONG - PMID won't work (will return 0 results)
pmid="24446688"
curl -s "https://www.ebi.ac.uk/chembl/api/data/document.json?pubmed_id=$pmid" # Does NOT work!
如果你只有 PMID: 先从 PubMed 获取 DOI,再使用该 DOI 查询 ChEMBL。
响应结构:
{
"documents": [
{
"document_chembl_id": "CHEMBL3120156",
"doi": "10.1021/jm401507s",
"title": "Discovery and development of simeprevir (TMC435), a HCV NS3/4A protease inhibitor.",
"abstract": "Hepatitis C virus is a blood-borne infection...",
"pubmed_id": 24446688,
"journal": "J Med Chem",
"year": 2014,
"doc_type": "PUBLICATION"
}
],
"page_meta": {
"total_count": 1
}
}
关键字段:
document_chembl_id- 用它获取活性数据doc_type- "PUBLICATION"(来自文献)或 "DATASET"(已提交的数据集)pubmed_id- 响应中会包含 PMID,但不能用它查询 ChEMBL- 如果
total_count= 0,则论文未收录在 ChEMBL 中
解析响应:
response=$(curl -s "https://www.ebi.ac.uk/chembl/api/data/document.json?doi=$doi")
if [ $(echo "$response" | jq -r '.page_meta.total_count') -gt 0 ]; then
chembl_id=$(echo "$response" | jq -r '.documents[0].document_chembl_id')
echo "✓ Found in ChEMBL: $chembl_id"
else
echo "✗ Not in ChEMBL"
fi
第 2 步:获取活性数据条目数
查询活性数据端点:
curl -s "https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=CHEMBL3120156&limit=1"
提取总条目数:
activity_url="https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=$chembl_id&limit=1"
activity_count=$(curl -s "$activity_url" | jq -r '.page_meta.total_count')
echo "→ $activity_count bioactivity data points"
第 3 步:向用户报告并更新摘要
立即报告:
📄 [15/127] Screening: "Discovery and development of simeprevir"
Abstract score: 9 → Fetching full text...
✓ ChEMBL: CHEMBL3120156 (101 activity data points)
→ IC50 data for HCV NS3 protease inhibitors available
添加到 SUMMARY.md:
### [Discovery and development of simeprevir (TMC435), a HCV NS3/4A protease inhibitor](https://doi.org/10.1021/jm401507s) (Score: 9)
**DOI:** [10.1021/jm401507s](https://doi.org/10.1021/jm401507s)
**PMID:** [24446688](https://pubmed.ncbi.nlm.nih.gov/24446688/)
**ChEMBL:** [CHEMBL3120156](https://www.ebi.ac.uk/chembl/document_report_card/CHEMBL3120156/) (101 data points)
**Key Findings:**
- IC50 data for HCV NS3/4A protease inhibitors (from ChEMBL)
- Lead compound simeprevir (TMC435) approved for HCV treatment
- Structures and full activity data: [ChEMBL API](https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=CHEMBL3120156)
**ChEMBL Activity Summary:**
- IC50 values for HCV NS3/4A protease
- PK parameters (AUC, Cmax, clearance)
- DMPK assays (metabolic stability, permeability)
始终注明 ChEMBL 状态:
- 如果找到:添加 ChEMBL ID 链接和数据点数量
- 如果未找到:注明“未收录在 ChEMBL 中”(这仍然是有价值的信息)
第 4 步:更新跟踪文件
添加到 papers-reviewed.json:
{
"10.1021/jm401507s": {
"pmid": "24446688",
"status": "relevant",
"score": 9,
"chembl_id": "CHEMBL3120156",
"chembl_activities": 101,
"has_structured_data": true
}
}
可选:提取结构化数据
对于 ChEMBL 数据丰富(>20 条活性数据)的论文,可考虑提取:
# Get all IC50 data
curl -s "https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=CHEMBL3120156&standard_type=IC50&limit=100" > chembl_data.json
# Summary statistics
jq '[.activities[] | .standard_value | tonumber] | "Min: \(min), Max: \(max), Count: \(length)"' chembl_data.json
向用户报告:
📊 ChEMBL data extracted:
- IC50 values for HCV NS3/4A protease
- All structures downloaded
- Data saved to: chembl_CHEMBL3120156_ic50.json
与其他技能集成
在 evaluating-paper-relevance 工作流中:
- 完成摘要筛选后(得分 ≥7)
- 深入阅读全文之前
- 使用此技能检查 ChEMBL
- 如果找到:
- 在 SUMMARY.md 中注明 ChEMBL ID
- 提取活性数据(比解析 PDF 更快)
- 仍需获取全文,以了解方法、讨论和上下文
- 如果未找到:
- 按常规方式评估 PDF
- 如有需要,手动解析表格
工作流集成点:
Stage 2: Deep Dive
├─ 1. Fetch Full Text (PMC → DOI → Unpaywall)
├─ 1.5. Check ChEMBL ← ADD THIS STEP
│ ├─ Query by DOI
│ ├─ If found: note ChEMBL ID + activity count
│ └─ Report to user
├─ 2. Scan for Relevant Content
└─ 3. Extract Findings
ChEMBL 中常见的活性类型
| 类型 | 描述 | 单位 |
|---|---|---|
| IC50 | 半数抑制浓度 | nM、µM |
| MIC | 最低抑菌浓度 | µg/mL、nM |
| Ki | 抑制常数 | nM、µM |
| EC50 | 半数有效浓度 | nM、µM |
| Kd | 解离常数 | nM、µM |
| Potency | 一般效力测量值 | 各种 |
按活性类型筛选:
curl "https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=ID&standard_type=MIC"
ChEMBL 覆盖范围
约 99,000 篇文献(截至 2025 年)
覆盖较好:
- 药物化学论文
- 涉及化合物系列的构效关系(SAR)研究
- 先导化合物优化项目
- 主要期刊上的论文(J Med Chem、Bioorg Med Chem、Eur J Med Chem 等)
覆盖较差:
- 非常新的论文(整理工作滞后 6–12 个月)
- 无法提取结构或活性数据的论文
- 非药物研发研究
- 纯机制研究
典型命中率:
- 药物化学论文约为 30–40%
- 聚焦 SAR 的期刊命中率更高
ChEMBL 数据的优势
与 PDF 表格解析相比:
- ✓ 结构已提取(SMILES 格式)
- ✓ 单位已标准化(所有 IC50 均以 nM 为单位)
- ✓ 数值经过验证和整理
- ✓ 机器可读的 JSON
- ✓ 没有 OCR 错误
- ✓ 与测定方案关联
- ✓ 可查询(按活性范围、靶点等筛选)
仍需使用 PDF 的情况:
- 完整的实验步骤
- 合成路线
- ChEMBL 中没有收录的论文
- 非常新的论文
- 背景和解读
进度报告
重要:对每篇相关论文都要报告 ChEMBL 检查结果
工作流报告示例:
📄 [15/50] Screening: "Novel MmpL3 inhibitors..."
Abstract score: 8 → Checking ChEMBL...
✓ ChEMBL: CHEMBL3456789 (34 data points)
→ Fetching full text...
→ Added to SUMMARY.md with ChEMBL link
对于未收录在 ChEMBL 中的论文:
📄 [16/50] Screening: "Another paper..."
Abstract score: 9 → Checking ChEMBL...
✗ Not in ChEMBL (likely too recent or review paper)
→ Fetching full text via Unpaywall...
辅助脚本模式
对于包含多篇药物化学论文的研究任务:
创建 check_chembl.py:
#!/usr/bin/env python3
import requests
import json
import sys
def check_chembl(doi):
"""Check if DOI is in ChEMBL and return summary
IMPORTANT: Must use DOI, not PMID. ChEMBL API does not accept PMID queries.
"""
# Query document (ONLY works with DOI)
doc_url = f"https://www.ebi.ac.uk/chembl/api/data/document.json?doi={doi}"
try:
doc_response = requests.get(doc_url, timeout=10).json()
except:
return None
# Check if found
if doc_response.get('page_meta', {}).get('total_count', 0) == 0:
return {'in_chembl': False}
doc = doc_response['documents'][0]
chembl_id = doc['document_chembl_id']
# Get activity count
act_url = f"https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id={chembl_id}&limit=1"
try:
act_response = requests.get(act_url, timeout=10).json()
activity_count = act_response.get('page_meta', {}).get('total_count', 0)
except:
activity_count = 0
return {
'in_chembl': True,
'chembl_id': chembl_id,
'activity_count': activity_count,
'doc_type': doc.get('doc_type'),
'title': doc.get('title')
}
if __name__ == "__main__":
doi = sys.argv[1]
result = check_chembl(doi)
if result and result['in_chembl']:
print(f"✓ {result['chembl_id']} ({result['activity_count']} activities)")
else:
print("✗ Not in ChEMBL")
用法:
python3 check_chembl.py "10.1021/jm401507s"
# Output: ✓ CHEMBL3120156 (101 activities)
常见错误
使用 PMID 查询: 使用 PMID 而不是 DOI → 始终返回 0 条结果,ChEMBL 只接受 DOI 查询
跳过 ChEMBL 检查: 不检查药物化学论文 → 错过已提取的结构化数据
检查非药物化学论文: 检查基因组学/细胞生物学论文 → 浪费时间,这些论文不会收录在 ChEMBL 中
不报告状态: 静默进行 ChEMBL 检查 → 用户无法了解进展
未添加到 SUMMARY.md: 忘记添加 ChEMBL ID → 用户之后更难访问数据
只使用 ChEMBL: 论文在 ChEMBL 中时未获取全文 → 缺少背景、方法和讨论
ChEMBL 中已有数据却仍解析 PDF: 结构化数据可用时仍手动提取表格 → 浪费时间并引入错误
快速参考
| 任务 | 命令 |
|---|---|
| 检查 DOI 是否在 ChEMBL 中 | curl "https://www.ebi.ac.uk/chembl/api/data/document.json?doi=DOI" |
| 获取活性数据数量 | curl "https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=ID&limit=1" |
| 获取所有活性数据 | curl "https://www.ebi.ac.uk/chembl/api/data/activity.json?document_chembl_id=ID&limit=1000" |
| 按活性类型筛选 | curl "...activity.json?document_chembl_id=ID&standard_type=MIC" |
| ChEMBL 论文页面 | https://www.ebi.ac.uk/chembl/document_report_card/CHEMBL_ID/ |
权限
添加到 .claude/settings.local.json.template:
"Bash(curl*https://www.ebi.ac.uk/chembl/api/data/*)",
"WebFetch(domain:www.ebi.ac.uk)"
成功标准
满足以下条件即表示 ChEMBL 检查成功:
- 已检查每篇药物化学论文(得分 ≥7)
- 立即向用户报告 ChEMBL 状态
- 将 ChEMBL ID 添加到 SUMMARY.md(如果找到)
- 在摘要中注明活性数据数量
- 更新 papers-reviewed.json 中的 ChEMBL 状态
后续步骤
检查 ChEMBL 后:
- 如果找到:考虑为高度相关的论文(≥9)提取结构化数据
- 继续评估全文,以了解背景
- 对于未收录在 ChEMBL 中的论文:按常规流程解析 PDF/表格
- 将所有发现更新到 SUMMARY.md
资源
- 完整文档: 参见
docs/CHEMBL_INTEGRATION.md - ChEMBL API 文档: https://chembl.gitbook.io/chembl-interface-documentation/
- ChEMBL 界面: https://www.ebi.ac.uk/chembl/