name: chembl-database description: “查询ChEMBL的生物活性分子和药物发现数据。通过结构或属性搜索化合物,检索生物活性数据(IC50、Ki),查找抑制剂,进行SAR研究,用于医学化学。”
ChEMBL 数据库
概述
ChEMBL 是由欧洲生物信息学研究所(EBI)维护的手动管理生物活性分子数据库,包含超过200万种化合物、1900万生物活性测量、13,000多种药物靶点,以及已批准药物和临床候选药物的数据。使用ChEMBL Python客户端以编程方式访问和查询这些数据,用于药物发现和医学化学研究。
何时使用此技能
此技能应在以下情况使用:
- 化合物搜索:通过名称、结构或属性查找分子
- 靶点信息:检索蛋白质、酶或生物靶点的数据
- 生物活性数据:查询IC50、Ki、EC50或其他活性测量
- 药物信息:查找已批准药物、机制或适应症
- 结构搜索:执行相似性或子结构搜索
- 化学信息学:分析分子性质和药物相似性
- 靶点-配体关系:探索化合物-靶点相互作用
- 药物发现:识别抑制剂、激动剂或生物活性分子
安装和设置
Python 客户端
需要ChEMBL Python客户端以进行程序化访问:
pip install chembl_webresource_client
基本使用模式
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
核心能力
1. 分子查询
通过ChEMBL ID检索:
molecule = new_client.molecule
aspirin = molecule.get('CHEMBL25')
通过名称搜索:
results = molecule.filter(pref_name__icontains='aspirin')
通过属性筛选:
# 查找小分子(分子量 ≤ 500)且具有良好LogP的化合物
results = molecule.filter(
molecule_properties__mw_freebase__lte=500,
molecule_properties__alogp__lte=5
)
2. 靶点查询
检索靶点信息:
target = new_client.target
egfr = target.get('CHEMBL203')
搜索特定靶点类型:
# 查找所有激酶靶点
kinases = target.filter(
target_type='SINGLE PROTEIN',
pref_name__icontains='kinase'
)
3. 生物活性数据
查询靶点的活性数据:
activity = new_client.activity
# 查找强效EGFR抑制剂
results = activity.filter(
target_chembl_id='CHEMBL203',
standard_type='IC50',
standard_value__lte=100,
standard_units='nM'
)
获取化合物的所有活性数据:
compound_activities = activity.filter(
molecule_chembl_id='CHEMBL25',
pchembl_value__isnull=False
)
4. 基于结构的搜索
相似性搜索:
similarity = new_client.similarity
# 查找与阿司匹林相似的化合物
similar = similarity.filter(
smiles='CC(=O)Oc1ccccc1C(=O)O',
similarity=85 # 85% 相似度阈值
)
子结构搜索:
substructure = new_client.substructure
# 查找包含苯环的化合物
results = substructure.filter(smiles='c1ccccc1')
5. 药物信息
检索药物数据:
drug = new_client.drug
drug_info = drug.get('CHEMBL25')
获取作用机制:
mechanism = new_client.mechanism
mechanisms = mechanism.filter(molecule_chembl_id='CHEMBL25')
查询药物适应症:
drug_indication = new_client.drug_indication
indications = drug_indication.filter(molecule_chembl_id='CHEMBL25')
查询工作流程
工作流程 1: 查找靶点抑制剂
-
通过名称识别靶点:
targets = new_client.target.filter(pref_name__icontains='EGFR') target_id = targets[0]['target_chembl_id'] -
查询该靶点的生物活性数据:
activities = new_client.activity.filter( target_chembl_id=target_id, standard_type='IC50', standard_value__lte=100 ) -
提取化合物ID并检索详细信息:
compound_ids = [act['molecule_chembl_id'] for act in activities] compounds = [new_client.molecule.get(cid) for cid in compound_ids]
工作流程 2: 分析已知药物
-
获取药物信息:
drug_info = new_client.drug.get('CHEMBL1234') -
检索作用机制:
mechanisms = new_client.mechanism.filter(molecule_chembl_id='CHEMBL1234') -
查找所有生物活性数据:
activities = new_client.activity.filter(molecule_chembl_id='CHEMBL1234')
工作流程 3: 结构-活性关系(SAR)研究
-
查找相似化合物:
similar = new_client.similarity.filter(smiles='query_smiles', similarity=80) -
获取每个化合物的活性数据:
for compound in similar: activities = new_client.activity.filter( molecule_chembl_id=compound['molecule_chembl_id'] ) -
使用分子属性分析属性-活性关系。
筛选运算符
ChEMBL 支持Django风格的查询筛选器:
__exact- 精确匹配__iexact- 不区分大小写的精确匹配__contains/__icontains- 子字符串匹配__startswith/__endswith- 前缀/后缀匹配__gt,__gte,__lt,__lte- 数值比较__range- 值在范围内__in- 值在列表中__isnull- 空值/非空值检查
数据导出和分析
将结果转换为pandas DataFrame进行分析:
import pandas as pd
activities = new_client.activity.filter(target_chembl_id='CHEMBL203')
df = pd.DataFrame(list(activities))
# 分析结果
print(df['standard_value'].describe())
print(df.groupby('standard_type').size())
性能优化
缓存
客户端自动缓存结果24小时。配置缓存:
from chembl_webresource_client.settings import Settings
# 禁用缓存
Settings.Instance().CACHING = False
# 调整缓存过期时间(秒)
Settings.Instance().CACHE_EXPIRE = 86400
懒评估
查询仅在访问数据时执行。转换为列表以强制执行:
# 查询尚未执行
results = molecule.filter(pref_name__icontains='aspirin')
# 强制执行
results_list = list(results)
分页
结果自动分页。遍历所有结果:
for activity in new_client.activity.filter(target_chembl_id='CHEMBL203'):
# 处理每个活性数据
print(activity['molecule_chembl_id'])
常见用例
查找激酶抑制剂
# 识别激酶靶点
kinases = new_client.target.filter(
target_type='SINGLE PROTEIN',
pref_name__icontains='kinase'
)
# 获取强效抑制剂
for kinase in kinases[:5]: # 前5个激酶
activities = new_client.activity.filter(
target_chembl_id=kinase['target_chembl_id'],
standard_type='IC50',
standard_value__lte=50
)
探索药物重定位
# 获取已批准药物
drugs = new_client.drug.filter()
# 为每个药物查找所有靶点
for drug in drugs[:10]:
mechanisms = new_client.mechanism.filter(
molecule_chembl_id=drug['molecule_chembl_id']
)
虚拟筛选
# 查找具有所需属性的化合物
candidates = new_client.molecule.filter(
molecule_properties__mw_freebase__range=[300, 500],
molecule_properties__alogp__lte=5,
molecule_properties__hba__lte=10,
molecule_properties__hbd__lte=5
)
资源
scripts/example_queries.py
即用型Python函数演示常见ChEMBL查询模式:
get_molecule_info()- 通过ID检索分子详细信息search_molecules_by_name()- 基于名称的分子搜索find_molecules_by_properties()- 基于属性的筛选get_bioactivity_data()- 查询靶点的生物活性数据find_similar_compounds()- 相似性搜索substructure_search()- 子结构匹配get_drug_info()- 检索药物信息find_kinase_inhibitors()- 专用激酶抑制剂搜索export_to_dataframe()- 将结果转换为pandas DataFrame
请参阅此脚本获取实现细节和使用示例。
references/api_reference.md
全面的API文档,包括:
- 完整端点列表(分子、靶点、活性、测定、药物等)
- 所有筛选运算符和查询模式
- 分子属性和生物活性字段
- 高级查询示例
- 配置和性能调优
- 错误处理和速率限制
需要详细API信息或故障排除查询时,请参考此文档。
重要说明
数据可靠性
- ChEMBL数据是手动管理的,但可能包含不一致性
- 始终检查活性记录中的
data_validity_comment字段 - 注意
potential_duplicate标志
单位和标准
- 生物活性值使用标准单位(nM、uM等)
pchembl_value提供标准化活性(-log标度)- 检查
standard_type以了解测量类型(IC50、Ki、EC50等)
速率限制
- 尊重ChEMBL的公平使用政策
- 使用缓存最小化重复请求
- 考虑批量下载大型数据集
- 避免用快速连续请求冲击API
化学结构格式
- SMILES字符串是主要结构格式
- 化合物提供InChI键
- 可以通过图像端点生成SVG图像