ZINC数据库Skill zinc-database

ZINC数据库技能用于访问包含230M+可购买化合物的ZINC数据库,支持通过ZINC ID、SMILES、供应商代码等进行搜索,用于虚拟筛选、药物发现、结构相似性搜索、化合物检索和化学空间探索。关键词:ZINC数据库,虚拟筛选,药物发现,SMILES搜索,化合物检索,化学信息学。

药物研发 0 次安装 0 次浏览 更新于 3/16/2026

name: zinc-database description: “访问ZINC(230M+可购买化合物)。通过ZINC ID/SMILES搜索,相似性搜索,3D就绪结构用于对接,类似物发现,用于虚拟筛选和药物发现。”

ZINC数据库

概述

ZINC是由UCSF维护的一个免费可访问的化合物库,包含230M+可购买化合物。通过ZINC ID或SMILES搜索,执行相似性搜索,下载用于对接的3D就绪结构,发现用于虚拟筛选和药物发现的类似物。

何时使用此技能

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

  • 虚拟筛选:为分子对接研究寻找化合物
  • 先导化合物发现:识别可用于药物开发的市售化合物
  • 结构搜索:通过SMILES执行相似性或类似物搜索
  • 化合物检索:通过ZINC ID或供应商代码查找分子
  • 化学空间探索:探索可购买的化学多样性
  • 对接研究:访问3D就绪分子结构
  • 类似物搜索:基于结构相似性寻找类似化合物
  • 供应商查询:识别来自特定化学供应商的化合物
  • 随机采样:获取用于筛选的随机化合物集

数据库版本

ZINC已通过多个版本演变:

  • ZINC22(当前):最大版本,包含230+百万可购买化合物和数十亿规模的按需合成化合物
  • ZINC20:仍维护,专注于类先导和类药化合物
  • ZINC15:前身版本,遗留但仍记录

此技能主要关注ZINC22,最当前和全面的版本。

访问方法

网页界面

主要访问点:https://zinc.docking.org/ 交互式搜索:https://cartblanche22.docking.org/

API访问

所有ZINC22搜索可通过CartBlanche22 API以编程方式执行:

基础URLhttps://cartblanche22.docking.org/

所有API端点以文本或JSON格式返回数据,可自定义字段。

核心功能

1. 通过ZINC ID搜索

使用ZINC标识符检索特定化合物。

网页界面https://cartblanche22.docking.org/search/zincid

API端点

curl "https://cartblanche22.docking.org/[email protected]_fields=smiles,zinc_id"

多个ID

curl "https://cartblanche22.docking.org/substances.txt:zinc_id=ZINC000000000001,ZINC000000000002&output_fields=smiles,zinc_id,tranche"

响应字段zinc_id, smiles, sub_id, supplier_code, catalogs, tranche(包括H-count, LogP, MW, phase)

2. 通过SMILES搜索

使用SMILES表示法通过化学结构查找化合物,可选距离参数用于类似物搜索。

网页界面https://cartblanche22.docking.org/search/smiles

API端点

curl "https://cartblanche22.docking.org/[email protected]=4-Fadist=4"

参数

  • smiles:查询SMILES字符串(必要时URL编码)
  • dist:Tanimoto距离阈值(默认:0,表示精确匹配)
  • adist:用于更广泛搜索的替代距离参数(默认:0)
  • output_fields:所需输出字段的逗号分隔列表

示例 - 精确匹配

curl "https://cartblanche22.docking.org/smiles.txt:smiles=c1ccccc1"

示例 - 相似性搜索

curl "https://cartblanche22.docking.org/smiles.txt:smiles=c1ccccc1&dist=3&output_fields=zinc_id,smiles,tranche"

3. 通过供应商代码搜索

查询来自特定化学供应商的化合物,或检索来自特定目录的所有分子。

网页界面https://cartblanche22.docking.org/search/catitems

API端点

curl "https://cartblanche22.docking.org/catitems.txt:catitem_id=SUPPLIER-CODE-123"

使用案例

  • 验证来自特定供应商的化合物可用性
  • 检索目录中的所有化合物
  • 交叉引用供应商代码与ZINC ID

4. 随机化合物采样

生成用于筛选或基准测试的随机化合物集。

网页界面https://cartblanche22.docking.org/search/random

API端点

curl "https://cartblanche22.docking.org/substance/random.txt:count=100"

参数

  • count:要检索的随机化合物数量(默认:100)
  • subset:按子集过滤(例如,‘lead-like’, ‘drug-like’, ‘fragment’)
  • output_fields:自定义返回的数据字段

示例 - 随机类先导分子

curl "https://cartblanche22.docking.org/substance/random.txt:count=1000&subset=lead-like&output_fields=zinc_id,smiles,tranche"

常见工作流程

工作流程1:准备对接库

  1. 定义搜索标准 基于目标属性或所需化学空间

  2. 查询ZINC22 使用适当的搜索方法:

    # 示例:获取具有特定LogP和MW的类药化合物
    curl "https://cartblanche22.docking.org/substance/random.txt:count=10000&subset=drug-like&output_fields=zinc_id,smiles,tranche" > docking_library.txt
    
  3. 解析结果 提取ZINC ID和SMILES:

    import pandas as pd
    
    # 加载结果
    df = pd.read_csv('docking_library.txt', sep='\t')
    
    # 通过tranche数据中的属性过滤
    # Tranche格式:H##P###M###-phase
    # H = H-bond donors, P = LogP*10, M = MW
    
  4. 下载3D结构 用于对接,使用ZINC ID或从文件存储库下载

工作流程2:寻找命中化合物的类似物

  1. 获取命中化合物的SMILES

    hit_smiles = "CC(C)Cc1ccc(cc1)C(C)C(=O)O"  # 示例:布洛芬
    
  2. 执行相似性搜索 带有距离阈值:

    curl "https://cartblanche22.docking.org/smiles.txt:smiles=CC(C)Cc1ccc(cc1)C(C)C(=O)O&dist=5&output_fields=zinc_id,smiles,catalogs" > analogs.txt
    
  3. 分析结果 识别可购买的类似物:

    import pandas as pd
    
    analogs = pd.read_csv('analogs.txt', sep='\t')
    print(f"找到 {len(analogs)} 个类似物")
    print(analogs[['zinc_id', 'smiles', 'catalogs']].head(10))
    
  4. 检索3D结构 用于最有希望的类似物

工作流程3:批量化合物检索

  1. 编译ZINC ID列表 来自文献、数据库或先前筛选:

    zinc_ids = [
        "ZINC000000000001",
        "ZINC000000000002",
        "ZINC000000000003"
    ]
    zinc_ids_str = ",".join(zinc_ids)
    
  2. 查询ZINC22 API

    curl "https://cartblanche22.docking.org/substances.txt:zinc_id=ZINC000000000001,ZINC000000000002&output_fields=zinc_id,smiles,supplier_code,catalogs"
    
  3. 处理结果 用于下游分析或购买

工作流程4:化学空间采样

  1. 选择子集参数 基于筛选目标:

    • Fragment: MW < 250, 适用于基于片段的药物发现
    • Lead-like: MW 250-350, LogP ≤ 3.5
    • Drug-like: MW 350-500, 遵循Lipinski的五规则
  2. 生成随机样本

    curl "https://cartblanche22.docking.org/substance/random.txt:count=5000&subset=lead-like&output_fields=zinc_id,smiles,tranche" > chemical_space_sample.txt
    
  3. 分析化学多样性 并为虚拟筛选准备

输出字段

使用output_fields参数自定义API响应:

可用字段

  • zinc_id:ZINC标识符
  • smiles:SMILES字符串表示
  • sub_id:内部物质ID
  • supplier_code:供应商目录号
  • catalogs:提供该化合物的供应商列表
  • tranche:编码的分子属性(H-count, LogP, MW, 反应性阶段)

示例

curl "https://cartblanche22.docking.org/substances.txt:zinc_id=ZINC000000000001&output_fields=zinc_id,smiles,catalogs,tranche"

Tranche系统

ZINC基于分子属性将化合物组织成“tranches”:

格式H##P###M###-phase

  • H##:氢键供体数量(00-99)
  • P###:LogP × 10(例如,P035 = LogP 3.5)
  • M###:分子量以道尔顿为单位(例如,M400 = 400 Da)
  • phase:反应性分类

示例trancheH05P035M400-0

  • 5个氢键供体
  • LogP = 3.5
  • MW = 400 Da
  • 反应性阶段0

使用tranche数据通过类药性标准过滤化合物。

下载3D结构

对于分子对接,3D结构可通过文件存储库获取:

文件存储库https://files.docking.org/zinc22/

结构按tranches组织,提供多种格式:

  • MOL2:具有3D坐标的多分子格式
  • SDF:结构-数据文件格式
  • DB2.GZ:用于DOCK的压缩数据库格式

参考ZINC文档 https://wiki.docking.org 获取下载协议和批量访问方法。

Python集成

使用curl与Python

import subprocess
import json

def query_zinc_by_id(zinc_id, output_fields="zinc_id,smiles,catalogs"):
    """通过ZINC ID查询ZINC22。"""
    url = f"https://cartblanche22.docking.org/[email protected]_id={zinc_id}&output_fields={output_fields}"
    result = subprocess.run(['curl', url], capture_output=True, text=True)
    return result.stdout

def search_by_smiles(smiles, dist=0, adist=0, output_fields="zinc_id,smiles"):
    """通过SMILES搜索ZINC22,带有可选距离参数。"""
    url = f"https://cartblanche22.docking.org/smiles.txt:smiles={smiles}&dist={dist}&adist={adist}&output_fields={output_fields}"
    result = subprocess.run(['curl', url], capture_output=True, text=True)
    return result.stdout

def get_random_compounds(count=100, subset=None, output_fields="zinc_id,smiles,tranche"):
    """从ZINC22获取随机化合物。"""
    url = f"https://cartblanche22.docking.org/substance/random.txt:count={count}&output_fields={output_fields}"
    if subset:
        url += f"&subset={subset}"
    result = subprocess.run(['curl', url], capture_output=True, text=True)
    return result.stdout

解析结果

import pandas as pd
from io import StringIO

# 查询ZINC并解析为DataFrame
result = query_zinc_by_id("ZINC000000000001")
df = pd.read_csv(StringIO(result), sep='\t')

# 提取tranche属性
def parse_tranche(tranche_str):
    """解析ZINC tranche代码以提取属性。"""
    # 格式:H##P###M###-phase
    import re
    match = re.match(r'H(\d+)P(\d+)M(\d+)-(\d+)', tranche_str)
    if match:
        return {
            'h_donors': int(match.group(1)),
            'logP': int(match.group(2)) / 10.0,
            'mw': int(match.group(3)),
            'phase': int(match.group(4))
        }
    return None

df['tranche_props'] = df['tranche'].apply(parse_tranche)

最佳实践

查询优化

  • 从具体开始:在扩展到相似性搜索之前,先从精确搜索开始
  • 使用适当的距离参数:小dist值(1-3)用于紧密类似物,大值(5-10)用于多样化类似物
  • 限制输出字段:仅请求必要字段以减少数据传输
  • 批量查询:可能时在单个API调用中组合多个ZINC ID

性能考虑

  • 速率限制:尊重服务器资源;避免快速连续请求
  • 缓存:本地存储频繁访问的化合物
  • 并行下载:下载3D结构时,使用并行wget或aria2c用于文件存储库
  • 子集过滤:使用类先导、类药或片段子集减少搜索空间

数据质量

  • 验证可用性:供应商目录变化;在大订单前确认化合物可用性
  • 检查立体化学:SMILES可能未完全指定立体化学;验证3D结构
  • 验证结构:使用化学信息学工具(RDKit, OpenBabel)验证结构有效性
  • 交叉引用:可能时与其他数据库(PubChem, ChEMBL)交叉检查

资源

references/api_reference.md

全面文档包括:

  • 完整API端点参考
  • URL语法和参数规范
  • 高级查询模式和示例
  • 文件存储库组织和访问
  • 批量下载方法
  • 错误处理和故障排除
  • 与分子对接软件集成

查阅此文档获取详细技术信息和高级使用模式。

重要免责声明

数据可靠性

ZINC明确声明:“我们不保证任何分子用于任何目的的质量,并对使用此数据库产生的错误不承担责任。”

  • 化合物可用性可能更改而不通知
  • 结构表示可能包含错误
  • 供应商信息应独立验证
  • 在实验工作前使用适当验证

适当使用

  • ZINC旨在用于药物发现的学术和研究目的
  • 验证商业使用的许可条款
  • 处理专利化合物时尊重知识产权
  • 遵循您机构的化合物采购指南

额外资源

引用

在出版物中使用ZINC时,引用适当版本:

ZINC22: Irwin, J. J., et al. “ZINC22—A Free Multi-Billion-Scale Database of Tangible Compounds for Ligand Discovery.” Journal of Chemical Information and Modeling 2023.

ZINC15: Irwin, J. J., et al. “ZINC15 – Ligand Discovery for Everyone.” Journal of Chemical Information and Modeling 2020, 60, 6065–6073.