mcpField
C
chembl-database

chembl-database

github.com/davila7数据与数据库33.0k278 次安装今天更新
代码仓库

关于 chembl-database

chembl-database 是通过 ChEMBL Python 客户端查询经整理的生物活性分子数据的 skill,服务于药物化学和药物发现研究,可查询化合物、靶点、活性及药物信息。

主要功能

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

适用场景

  1. 01查找针对生物靶点的抑制剂
  2. 02探索化合物与靶点的活性关系
  3. 03查看药物的作用机制和适应症
  4. 04在构效关系研究中比较相似化合物

安装

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

$npx skills add https://github.com/davila7/claude-code-templates --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