mcpField
C
chembl-database

chembl-database

github.com/ovachiever数据与数据库5648 次安装48 周前更新
代码仓库

关于 chembl-database

ChEMBL Database 是由 EBI 维护的人工整理生物活性分子数据库,可通过 Python 客户端查询化合物、靶点、活性和药物信息。它适用于药物发现与药物化学研究,也支持按结构搜索及跨数据分析。

主要功能

  1. 01按名称、ID 和属性搜索分子
  2. 02查询靶点及生物活性测量
  3. 03执行相似性与子结构搜索
  4. 04检索药物机制和适应症
  5. 05将查询结果导出为 DataFrame

适用场景

  1. 01寻找特定靶点的抑制剂
  2. 02分析已知药物的机制与活性
  3. 03开展结构相似性及构效关系研究

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ovachiever/droid-tings --skill chembl-database

安装后在 Claude Code 中输入/chembl-database确认已加载。

附带文件references/api_reference.mdscripts/example_queries.py

详细介绍

ChEMBL 数据库

概述

ChEMBL 是由欧洲生物信息学研究所(EBI)维护的人工整理生物活性分子数据库,包含 200 多万个化合物、1,900 多万条生物活性测量数据、13,000 多个药物靶点,以及已批准药物和临床候选药物的数据。使用 ChEMBL Python 客户端,以编程方式访问和查询这些数据,用于药物发现和药物化学研究。

何时使用此技能

在以下情况下使用此技能:

  • 化合物搜索:按名称、结构或属性查找分子
  • 靶点信息:检索有关蛋白质、酶或生物靶点的数据
  • 生物活性数据:查询 IC50、Ki、EC50 或其他活性测量数据
  • 药物信息:查询已批准药物、作用机制或适应症
  • 结构搜索:执行相似性或子结构搜索
  • 化学信息学:分析分子属性和成药性
  • 靶点-配体关系:探索化合物与靶点之间的相互作用
  • 药物发现:识别抑制剂、激动剂或生物活性分子

安装和设置

Python 客户端

以编程方式访问需要 ChEMBL Python 客户端:

uv pip install chembl_webresource_client
基本使用模式
from chembl_webresource_client.new_client import new_client

# Access different endpoints
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')

按属性筛选:

# Find small molecules (MW <= 500) with favorable LogP
results = molecule.filter(
    molecule_properties__mw_freebase__lte=500,
    molecule_properties__alogp__lte=5
)
2. 靶点查询

检索靶点信息:

target = new_client.target
egfr = target.get('CHEMBL203')

搜索特定类型的靶点:

# Find all kinase targets
kinases = target.filter(
    target_type='SINGLE PROTEIN',
    pref_name__icontains='kinase'
)
3. 生物活性数据

查询靶点的活性数据:

activity = new_client.activity
# Find potent EGFR inhibitors
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
# Find compounds similar to aspirin
similar = similarity.filter(
    smiles='CC(=O)Oc1ccccc1C(=O)O',
    similarity=85  # 85% similarity threshold
)

子结构搜索:

substructure = new_client.substructure
# Find compounds containing benzene ring
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:查找某个靶点的抑制剂
  1. 识别靶点,按名称搜索:

    targets = new_client.target.filter(pref_name__icontains='EGFR')
    target_id = targets[0]['target_chembl_id']
    
  2. 查询该靶点的生物活性数据:

    activities = new_client.activity.filter(
        target_chembl_id=target_id,
        standard_type='IC50',
        standard_value__lte=100
    )
    
  3. 提取化合物 ID 并检索详情:

    compound_ids = [act['molecule_chembl_id'] for act in activities]
    compounds = [new_client.molecule.get(cid) for cid in compound_ids]
    
工作流 2:分析已知药物
  1. 获取药物信息:

    drug_info = new_client.drug.get('CHEMBL1234')
    
  2. 检索作用机制:

    mechanisms = new_client.mechanism.filter(molecule_chembl_id='CHEMBL1234')
    
  3. 查找所有生物活性数据:

    activities = new_client.activity.filter(molecule_chembl_id='CHEMBL1234')
    
工作流 3:构效关系(SAR)研究
  1. 查找相似化合物:

    similar = new_client.similarity.filter(smiles='query_smiles', similarity=80)
    
  2. 获取每种化合物的活性数据:

    for compound in similar:
        activities = new_client.activity.filter(
            molecule_chembl_id=compound['molecule_chembl_id']
        )
    
  3. 使用结果中的分子属性,分析属性与活性之间的关系。

筛选运算符

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))

# Analyze results
print(df['standard_value'].describe())
print(df.groupby('standard_type').size())

性能优化

缓存

客户端会自动缓存结果 24 小时。配置缓存:

from chembl_webresource_client.settings import Settings

# Disable caching
Settings.Instance().CACHING = False

# Adjust cache expiration (seconds)
Settings.Instance().CACHE_EXPIRE = 86400
惰性求值

只有在访问数据时才会执行查询。转换为列表以强制执行:

# Query is not executed yet
results = molecule.filter(pref_name__icontains='aspirin')

# Force execution
results_list = list(results)
分页

结果会自动分页。遍历所有结果:

for activity in new_client.activity.filter(target_chembl_id='CHEMBL203'):
    # Process each activity
    print(activity['molecule_chembl_id'])

常见用例

查找激酶抑制剂
# Identify kinase targets
kinases = new_client.target.filter(
    target_type='SINGLE PROTEIN',
    pref_name__icontains='kinase'
)

# Get potent inhibitors
for kinase in kinases[:5]:  # First 5 kinases
    activities = new_client.activity.filter(
        target_chembl_id=kinase['target_chembl_id'],
        standard_type='IC50',
        standard_value__lte=50
    )
探索药物再利用
# Get approved drugs
drugs = new_client.drug.filter()

# For each drug, find all targets
for drug in drugs[:10]:
    mechanisms = new_client.mechanism.filter(
        molecule_chembl_id=drug['molecule_chembl_id']
    )
虚拟筛选
# Find compounds with desired properties
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 图像

附加资源

评论

支持 Markdown