关于 zinc-database
ZINC 是由 UCSF 维护的可购买化合物数据库,面向药物发现与化学研究。CartBlanche22 API 支持按标识符或结构搜索、相似性查询、随机抽样,并获取化合物数据和 3D 结构。
主要功能
- 01按 ZINC ID 或 SMILES 搜索
- 02查找结构类似物
- 03查询供应商代码和目录
- 04随机抽取化合物
- 05获取化合物字段和 3D 结构
适用场景
- 01构建分子对接库
- 02查找命中化合物的可购类似物
- 03批量获取化合物用于分析
- 04为筛选抽样探索化学空间
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill zinc-database安装后在 Claude Code 中输入/zinc-database确认已加载。
附带文件references/api_reference.md
详细介绍
ZINC 数据库
概述
ZINC 是由 UCSF 维护的免费开放存取数据库,收录了超过 2.3 亿种可购买化合物。可通过 ZINC ID 或 SMILES 搜索,执行相似性搜索,下载可用于对接的 3D 结构,发掘用于虚拟筛选和药物发现的类似物。
何时使用此技能
在以下情况下应使用此技能:
- 虚拟筛选:为分子对接研究查找化合物
- 先导化合物发现:识别可用于药物开发的市售化合物
- 结构搜索:通过 SMILES 执行相似性或类似物搜索
- 化合物检索:通过 ZINC ID 或供应商代码查找分子
- 化学空间探索:探索可购买的化学多样性
- 对接研究:获取可用于对接的 3D 分子结构
- 类似物搜索:根据结构相似性查找相似化合物
- 供应商查询:识别特定化学品供应商提供的化合物
- 随机抽样:获取用于筛选的随机化合物集合
数据库版本
ZINC 已历经多个版本:
- ZINC22(当前版本):规模最大的版本,包含超过 2.3 亿种可购买化合物,以及数十亿种按需合成化合物
- ZINC20:仍在维护,专注于先导样和类药化合物
- ZINC15:前代版本,属于旧版,但仍有文档记录
此技能主要介绍当前最新、最全面的 ZINC22。
访问方式
Web 界面
主要访问入口:https://zinc.docking.org/ 交互式搜索:https://cartblanche22.docking.org/
API 访问
所有 ZINC22 搜索都可以通过 CartBlanche22 API 以编程方式执行:
基础 URL:https://cartblanche22.docking.org/
所有 API 端点均以文本或 JSON 格式返回数据,并支持自定义字段。
核心功能
1. 按 ZINC ID 搜索
使用 ZINC 标识符检索特定化合物。
Web 界面: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 表示法按化学结构查找化合物,并可选用距离参数搜索类似物。
Web 界面: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. 按供应商代码搜索
查询特定化学品供应商提供的化合物,或检索特定目录中的所有分子。
Web 界面:https://cartblanche22.docking.org/search/catitems
API 端点:
curl "https://cartblanche22.docking.org/catitems.txt:catitem_id=SUPPLIER-CODE-123"
使用场景:
- 确认特定供应商提供的化合物是否有货
- 检索某个目录中的所有化合物
- 将供应商代码与 ZINC ID 交叉查询
4. 随机化合物抽样
生成随机化合物集合,用于筛选或基准测试。
Web 界面: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:准备对接化合物库
-
根据靶标属性或目标化学空间定义搜索条件
-
使用合适的搜索方法查询 ZINC22:
# Example: Get drug-like compounds with specific LogP and MW curl "https://cartblanche22.docking.org/substance/random.txt:count=10000&subset=drug-like&output_fields=zinc_id,smiles,tranche" > docking_library.txt -
解析结果以提取 ZINC ID 和 SMILES:
import pandas as pd # Load results df = pd.read_csv('docking_library.txt', sep='\t') # Filter by properties in tranche data # Tranche format: H##P###M###-phase # H = H-bond donors, P = LogP*10, M = MW -
使用 ZINC ID 下载 3D 结构用于对接,或从文件存储库下载
工作流 2:查找热门化合物的类似物
-
获取热门化合物的 SMILES:
hit_smiles = "CC(C)Cc1ccc(cc1)C(C)C(=O)O" # Example: Ibuprofen -
使用距离阈值执行相似性搜索:
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 -
分析结果,找出可购买的类似物:
import pandas as pd analogs = pd.read_csv('analogs.txt', sep='\t') print(f"Found {len(analogs)} analogs") print(analogs[['zinc_id', 'smiles', 'catalogs']].head(10)) -
获取最有前景的类似物的 3D 结构
工作流 3:批量检索化合物
-
从文献、数据库或之前的筛选中整理 ZINC ID 列表:
zinc_ids = [ "ZINC000000000001", "ZINC000000000002", "ZINC000000000003" ] zinc_ids_str = ",".join(zinc_ids) -
查询 ZINC22 API:
curl "https://cartblanche22.docking.org/substances.txt:zinc_id=ZINC000000000001,ZINC000000000002&output_fields=zinc_id,smiles,supplier_code,catalogs" -
处理结果,用于后续分析或采购
工作流 4:化学空间采样
-
根据筛选目标选择子集参数:
- 片段:MW < 250,适合基于片段的药物发现
- 类先导化合物:MW 250-350,LogP ≤ 3.5
- 类药化合物:MW 350-500,符合 Lipinski 五法则
-
生成随机样本:
curl "https://cartblanche22.docking.org/substance/random.txt:count=5000&subset=lead-like&output_fields=zinc_id,smiles,tranche" > chemical_space_sample.txt -
分析化学多样性,为虚拟筛选做准备
输出字段
使用 output_fields 参数自定义 API 响应:
可用字段:
zinc_id:ZINC 标识符smiles:SMILES 字符串表示sub_id:内部物质 IDsupplier_code:供应商目录编号catalogs:提供该化合物的供应商列表tranche:编码后的分子属性(H 数量、LogP、MW、反应性阶段)
示例:
curl "https://cartblanche22.docking.org/substances.txt:zinc_id=ZINC000000000001&output_fields=zinc_id,smiles,catalogs,tranche"
Tranche 系统
ZINC 根据分子属性将化合物划分为不同的“tranche”:
格式:H##P###M###-phase
- H##:氢键供体数量(00-99)
- P###:LogP × 10(例如,P035 = LogP 3.5)
- M###:分子量,单位为道尔顿(例如,M400 = 400 Da)
- phase:反应性分类
Tranche 示例:H05P035M400-0
- 5 个氢键供体
- LogP = 3.5
- MW = 400 Da
- 反应性阶段 0
使用 tranche 数据根据类药性标准筛选化合物。
下载 3D 结构
用于分子对接的 3D 结构可通过文件仓库获取:
文件仓库:https://files.docking.org/zinc22/
结构按 tranche 组织,并提供多种格式:
- MOL2:包含 3D 坐标的多分子格式
- SDF:结构数据文件格式
- DB2.GZ:用于 DOCK 的压缩数据库格式
有关下载协议和批量访问方式,请参阅 ZINC 文档:https://wiki.docking.org。
Python 集成
在 Python 中使用 curl
import subprocess
import json
def query_zinc_by_id(zinc_id, output_fields="zinc_id,smiles,catalogs"):
"""Query ZINC22 by ZINC ID."""
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"):
"""Search ZINC22 by SMILES with optional distance parameters."""
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"):
"""Get random compounds from 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
# Query ZINC and parse as DataFrame
result = query_zinc_by_id("ZINC000000000001")
df = pd.read_csv(StringIO(result), sep='\t')
# Extract tranche properties
def parse_tranche(tranche_str):
"""Parse ZINC tranche code to extract properties."""
# Format: 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 网站:https://zinc.docking.org/
- CartBlanche22 界面:https://cartblanche22.docking.org/
- ZINC Wiki:https://wiki.docking.org/
- 文件存储库:https://files.docking.org/zinc22/
- GitHub:https://github.com/docking-org/
- 主要论文:Irwin 等,J. Chem. Inf. Model 2020(ZINC15)
- ZINC22 论文:Irwin 等,J. Chem. Inf. Model 2023
引用
在出版物中使用 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.