ChEMBL数据库技能Skill:让 AI 直接帮你查生物活性分子与药物发现数据
- 一句话定位:这是一个把 ChEMBL 数据库(由欧洲生物信息学研究所 EBI 维护的手动管理生物活性分子库)接入 AI 的技能,可用自然语言提问、用 Python 客户端精确取数。
- 数据体量可观:覆盖超过 200 万个化合物、1900 万条生物活性测量、13000 多个药物靶点,以及已批准药物与临床候选药物数据。
- 核心能力:分子查询、靶点检索、IC50/Ki/EC50 等活性数据查询、相似性与子结构搜索、药物作用机制与适应症查询、SAR(结构-活性关系)研究。
- 上手门槛低:安装官方 Python 客户端后即可编程访问,支持 Django 风格过滤运算符、24 小时自动缓存与自动分页。
- 适合人群:药物化学、计算化学、化学生物学研究者,以及需要做虚拟筛选、药物再利用分析的开发者。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
技能中文名:ChEMBL数据库技能Skill 技能英文名:chembl-database 技能ID:11984
它要解决的问题很具体:药物发现研究里,化合物、靶点、活性数据散落在论文、专利和各种数据库里,人工检索和整理极其费时。ChEMBL 本身已经把超过 200 万个化合物、1900 万条生物活性测量、13000 多个药物靶点做了手动整理,但对不熟悉接口的研究者来说,取数仍然要写不少查询代码。这个技能把「ChEMBL 的查询能力」和「AI 的对话式理解能力」结合起来:你可以直接说"帮我找 IC50 小于 100 nM 的 EGFR 抑制剂",由 AI 翻译成规范的 ChEMBL 客户端查询语句并执行、整理结果。
安装前提:
- 具备可运行 Python 的本地或云端环境;
- 环境中装有
uv(用于包管理,也可用你惯用的 Python 包管理方式替代); - 网络可访问 ChEMBL 官方接口。
安装步骤:
- 在你的 AI 技能平台/客户端中搜索技能 ID
11984或英文名chembl-database,将该技能添加到当前会话或工作区(具体入口与授权方式以官方说明为准); - 安装 ChEMBL 官方 Python 客户端,这是编程访问的核心依赖:
uv pip install chembl_webresource_client
- 在会话中向 AI 说明你的研究目标(如"查询靶点 CHEMBL203 的强效抑制剂"),技能会自动按需调用相应端点。
验证是否生效:安装完成后执行下面这段最简代码,若能打印出阿司匹林的名称,说明客户端与网络都正常:
from chembl_webresource_client.new_client import new_client
molecule = new_client.molecule
aspirin = molecule.get('CHEMBL25')
print(aspirin['pref_name'])
若返回为空或报错,优先排查网络连通性与依赖版本,具体排错方式以官方说明为准。
该技能的主要功能和特点
- 分子查询:支持按 ChEMBL ID 精确检索(如
CHEMBL25)、按名称模糊搜索(pref_name__icontains)、按分子属性过滤(如分子量 ≤ 500、alogP ≤ 5)。 - 靶点查询:可按靶点 ID 获取蛋白质、酶等信息,也可按靶点类型筛选(如
target_type='SINGLE PROTEIN'+ 名称包含 kinase,快速锁定全部激酶靶点)。 - 生物活性数据查询:围绕 IC50、Ki、EC50 等标准测量类型检索,支持数值区间过滤(如
standard_value__lte=100、standard_units='nM'),并用pchembl_value做归一化活性比较。 - 结构搜索:提供相似性搜索(给定 SMILES 与相似度阈值,如 85%)与子结构搜索(如查找含苯环的化合物),这是普通关键词检索工具做不到的。
- 药物信息查询:可直接取已批准药物的基本信息、作用机制(mechanism)与适应症(drug_indication),用于药物再利用研究。
- Django 风格过滤运算符:
__exact、__icontains、__gt/__gte/__lt/__lte、__range、__in、__isnull等,表达力强,写法贴近开发者直觉。 - 结果可直接进分析流程:查询结果可转为 pandas DataFrame,直接做统计描述与分组汇总。
- 性能友好:客户端自带 24 小时缓存(可配置或关闭)、懒评估(访问时才真正执行查询)、自动分页遍历大数据集。
- 配套资源齐全:提供示例查询脚本(含分子信息、名称搜索、属性过滤、活性查询、相似性搜索、子结构搜索、药物信息、激酶抑制剂搜索、DataFrame 导出等现成函数)与完整 API 参考文档。
与"自己去官网页面一条条点选"相比,它的优势在于可编程、可批量、可复现;与"从零手写接口请求"相比,它的优势在于封装好了端点、缓存与分页,AI 还能替你组织查询逻辑。
如何使用该技能?
第 1 步:建立客户端与端点对象
from chembl_webresource_client.new_client import new_client
molecule = new_client.molecule
target = new_client.target
activity = new_client.activity
drug = new_client.drug
第 2 步:先用名称定位靶点,拿到靶点 ID
targets = new_client.target.filter(pref_name__icontains='EGFR')
target_id = targets[0]['target_chembl_id']
第 3 步:围绕靶点查活性数据
activities = new_client.activity.filter(
target_chembl_id=target_id,
standard_type='IC50',
standard_value__lte=100
)
第 4 步:抽取化合物 ID 并回查分子详情
compound_ids = [act['molecule_chembl_id'] for act in activities]
compounds = [new_client.molecule.get(cid) for cid in compound_ids]
第 5 步:做结构相似性 / 子结构扩展
similar = new_client.similarity.filter(
smiles='CC(=O)Oc1ccccc1C(=O)O',
similarity=85
)
rings = new_client.substructure.filter(smiles='c1ccccc1')
第 6 步:查药物机制与适应症(药物再利用场景)
mechanisms = new_client.mechanism.filter(molecule_chembl_id='CHEMBL25')
indications = new_client.drug_indication.filter(molecule_chembl_id='CHEMBL25')
第 7 步:导出结果做统计分析
import pandas as pd
df = pd.DataFrame(list(activities))
print(df['standard_value'].describe())
print(df.groupby('standard_type').size())
输入输出示例:输入一句"找分子量 300–500、alogP ≤ 5、氢键受体 ≤ 10、氢键给体 ≤ 5 的候选化合物",技能会转成 molecule.filter(molecule_properties__mw_freebase__range=[300, 500], ...) 并返回符合条件的分子列表,附带 ChEMBL ID、名称与关键属性,可直接进入下一步筛选。注意查询是懒评估的,记得用 list() 强制执行再统计。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| ChEMBL数据库技能Skill(chembl-database) | AI 驱动的 ChEMBL 生物活性数据查询技能 | 分子/靶点/活性/药物查询、相似性与子结构搜索、SAR 分析、DataFrame 导出 | 需安装 chembl_webresource_client,在 AI 技能平台添加技能;查询语法由 AI 协助生成 |
药物化学研究、抑制剂发现、SAR 与虚拟筛选 | 优势:数据手动管理、活性测量丰富、可编程批量查询、缓存与分页省心;不足:数据可能存在不一致,需人工核对有效性字段 |
| PubChem 相关接口与客户端 | 通用化学信息与化合物数据库访问 | 化合物基础信息、结构、部分生物活性与文献关联 | 需自行对接官方接口或第三方客户端,以官方说明为准 | 化合物基础信息检索、结构查询 | 优势:覆盖面广、化合物数量庞大;不足:生物活性测量的标准化与药物发现针对性不如 ChEMBL |
| DrugBank 类药物数据库 | 药物与靶点知识库 | 已批准药物、相互作用、适应症等 | 部分内容或接口需授权,以官方说明为准 | 临床药物信息、药物相互作用研究 | 优势:药物条目精炼、临床视角强;不足:覆盖面聚焦于药物而非大规模活性测量集 |
| 本地自建脚本 + 化学信息学工具库 | 完全自助的数据管线 | 自行请求接口、自行解析结构、自行计算属性 | 需要较强编程与运维能力 | 定制化流程、私有数据融合 | 优势:灵活度最高、可深度定制;不足:开发与维护成本高,缺少现成的缓存、分页与查询封装 |
选型建议:以生物活性测量(IC50/Ki)驱动的药物发现为主,优先 ChEMBL 技能;以化合物基础信息与广谱检索为主,PubChem 更合适;需要临床药物与相互作用视角,再补充 DrugBank 类资源。
该技能的典型应用场景与实际体验情况
场景一:药物化学研究者寻找某靶点的强效抑制剂
痛点是手工翻阅文献效率极低。使用方式是先用靶点名称模糊定位 ID,再用 standard_type='IC50' 与 standard_value__lte=100 一次筛出强效化合物,最后回查结构与属性。实际体验:上手难度低,几步就能得到候选清单;注意同一化合物可能有多条活性记录,需结合 data_validity_comment 与 potential_duplicate 标志判断。
场景二:计算化学方向做 SAR(结构-活性关系)研究 痛点是同类物系列难以系统收集。使用方式是以一个先导化合物的 SMILES 做相似性搜索(如 85% 阈值),再逐个化合物拉取活性数据,结合分子属性分析属性-活性关系。实际体验:结构搜索省去了大量人工检索;建议把相似度阈值从高到低多试几档,避免一次阈值过低引入噪声。
场景三:药物再利用(老药新用)探索
痛点是已有药物的潜在靶点关系不透明。使用方式是用 new_client.drug.filter() 取已批准药物,再用 mechanism 端点查询每个药物的作用机制,进而反推可能的新适应症方向。实际体验:一次可批量覆盖多个药物,效率明显高于逐个查阅;批量化时务必注意速率限制,避免高频连续请求。
场景四:早期虚拟筛选的候选池构建
痛点是在做分子对接之前,需要先按类药性规则把化合物池收窄。使用方式是用 molecule_properties__mw_freebase__range、alogp__lte、hba__lte、hbd__lte 组合过滤。实际体验:过滤条件写好之后,可复用为脚本模板;注意客户端默认缓存 24 小时,参数变化后如需最新结果,可调整缓存过期时间或暂时关闭缓存。
该技能能为用户带来的价值
- 效率提升:把"翻文献—记数据—做表格"的循环压缩成一次查询加一次导出,数千条活性记录可在分钟级完成初步筛选与统计。
- 门槛降低:不熟悉 ChEMBL 接口规范的研究者,也能通过 AI 生成合规查询;Django 风格过滤器对会一点 Python 的人几乎零学习成本。
- 可复现性:查询以代码形式留存,实验记录与研究过程可被完整复现和审计,这是纯手工检索做不到的长期价值。
- 决策质量:基于 13000 多个靶点与 1900 万条活性测量做筛选,比凭经验挑选候选化合物更有数据支撑。
- 成本可控:缓存机制减少重复请求,自动分页避免大结果集丢失,配合批量下载策略可在合规前提下高效取数。
常见问题 FAQ
Q1:这个技能怎么安装?需要会编程吗?
A:两步走——在 AI 技能平台添加技能 ID 11984(入口与授权以官方说明为准),再安装 Python 客户端 uv pip install chembl_webresource_client。不写代码也能用自然语言提问,但要拿到精确过滤结果,建议掌握基础的 Python 语法。
Q2:使用它收费吗? A:技能本身是访问公开数据库的查询能力封装;ChEMBL 数据由欧洲生物信息学研究所(EBI)维护并公开提供。具体是否有平台侧费用、接口调用的配额与授权政策,以官方说明为准。使用中请遵守 ChEMBL 的公平使用政策与速率限制。
Q3:数据可以直接用于科研结论吗?
A:可以作为强有力的起点,但需人工核查。ChEMBL 数据是手动管理的,仍可能存在不一致之处,建议始终检查活性记录的 data_validity_comment 字段与 potential_duplicate 标志,并确认 standard_type 与单位(nM、uM 等)是否统一。
Q4:和 PubChem、DrugBank 相比怎么选? A:看目标。做抑制剂筛选和 SAR 研究,ChEMBL 的标准化活性测量最贴合;查化合物基础信息与广谱结构数据,PubChem 覆盖面更大;关注临床药物、适应症与相互作用,DrugBank 类资源更聚焦。三者不是替代关系,常见做法是组合使用。
Q5:查询返回很慢或结果不全怎么办?
A:先确认是否触发了懒评估——filter() 返回的是惰性结果,需用 list() 强制执行。结果多时依赖自动分页遍历;重复查询可由 24 小时缓存加速,也可通过 Settings.Instance().CACHE_EXPIRE 调整过期时间。大规模数据集建议考虑批量下载而非高频实时请求。