mcpField
C
chembl-database

chembl-database

github.com/leonchaox数据与数据库99470 次安装15 周前更新
代码仓库

关于 chembl-database

chembl-database 是面向药物发现与药物化学研究的 ChEMBL 数据库查询技能,通过 Python 客户端检索分子、靶点、生物活性和药物信息,并支持结构搜索。

主要功能

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

适用场景

  1. 01筛选特定靶点的抑制剂
  2. 02探索候选化合物的结构与活性关系
  3. 03查询已知药物的作用机制
  4. 04按分子性质筛选虚拟筛选候选物

安装

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

$npx skills add https://github.com/leonchaox/qinyan-academic-skills --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