zinc-database について
ZINCは、UCSFが運営する購入可能な化合物データベースで、創薬や化学研究を対象としています。CartBlanche22 APIでは、IDや構造による検索、類似検索、ランダム抽出に加え、化合物データや3D構造を取得できます。
主な機能
- 01ZINC 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 が管理する、230M 以上の購入可能な化合物を収録した、誰でも自由にアクセスできるリポジトリです。ZINC ID や SMILES で検索したり、類似性検索を行ったり、ドッキング用の 3D 対応構造をダウンロードしたり、仮想スクリーニングや創薬のためのアナログを探索したりできます。
このスキルを使用するタイミング
このスキルは次の場合に使用してください:
- 仮想スクリーニング:分子ドッキング研究向けの化合物を探す
- リード探索:創薬に利用できる市販化合物を特定する
- 構造検索:SMILES による類似性検索またはアナログ検索を行う
- 化合物の取得:ZINC ID またはサプライヤーコードで分子を調べる
- 化学空間の探索:購入可能な化学的多様性を探索する
- ドッキング研究:3D 対応の分子構造にアクセスする
- アナログ検索:構造類似性に基づいて類似化合物を見つける
- サプライヤーに関する問い合わせ:特定の化学メーカーの化合物を特定する
- ランダムサンプリング:スクリーニング用のランダムな化合物セットを取得する
データベースのバージョン
ZINC は複数のバージョンを経て発展してきました:
- ZINC22(現行):2 億 3,000 万以上の購入可能化合物と、数十億規模のオンデマンド合成化合物を収録する最大のバージョン
- 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 原子数、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 の 5 つのルールに従う
-
ランダムサンプルを生成:
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"
トランチェシステム
ZINC は分子特性に基づいて化合物を「トランチェ」に分類します。
形式: H##P###M###-phase
- H##: 水素結合ドナーの数(00-99)
- P###: LogP × 10(例: P035 = LogP 3.5)
- M###: 分子量(ダルトン単位)(例: M400 = 400 Da)
- phase: 反応性の分類
トランチェの例: H05P035M400-0
- 水素結合ドナー 5 個
- LogP = 3.5
- MW = 400 Da
- 反応性フェーズ 0
トランチェのデータを使用して、薬らしさの基準で化合物をフィルタリングしてください。
3D 構造のダウンロード
分子ドッキングのために、3D 構造はファイルリポジトリから入手できます。
ファイルリポジトリ: https://files.docking.org/zinc22/
構造はトランチェごとに整理されており、複数の形式で提供されています。
- MOL2: 3D 座標を含む複数分子形式
- SDF: 構造データファイル形式
- DB2.GZ: DOCK 用の圧縮データベース形式
ダウンロード手順およびバッチアクセス方法については、https://wiki.docking.org の ZINC ドキュメントを参照してください。
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)を使用してください
- 出力フィールドを制限する: データ転送量を減らすため、必要なフィールドのみをリクエストしてください
- クエリをまとめる: 可能な場合は、複数の ZINC ID を 1 回の API 呼び出しにまとめてください
パフォーマンスに関する考慮事項
- レート制限: サーバーのリソースを尊重し、短時間に連続してリクエストを送ることは避けてください
- キャッシュ: 頻繁にアクセスする化合物はローカルに保存してください
- 並列ダウンロード: 3D 構造をダウンロードする場合は、ファイルリポジトリに対して並列 wget または aria2c を使用してください
- サブセットによるフィルタリング: リード様、医薬品様、またはフラグメントのサブセットを使用して検索空間を縮小してください
データ品質
- 入手可能性の確認: サプライヤーのカタログは変更されるため、大量注文の前に化合物の入手可能性を確認してください
- 立体化学の確認: SMILES では立体化学が完全に指定されていない場合があるため、3D 構造で検証してください
- 構造の検証: RDKit、OpenBabel などのケモインフォマティクスツールを使用して、構造の妥当性を検証してください
- 相互参照: 可能な場合は、他のデータベース(PubChem、ChEMBL)と照合してください
リソース
references/api_reference.md
以下を含む包括的なドキュメント:
- API エンドポイントの完全なリファレンス
- URL の構文とパラメーターの仕様
- 高度なクエリパターンと例
- ファイルリポジトリの構成とアクセス
- 一括ダウンロードの方法
- エラー処理とトラブルシューティング
- 分子ドッキングソフトウェアとの統合
詳細な技術情報や高度な使用パターンについては、このドキュメントを参照してください。
重要な免責事項
データの信頼性
ZINC は次のように明言しています: 「We do not guarantee the quality of any molecule for any purpose and take no responsibility for errors arising from the use of this database.」
- 化合物の入手可能性は、予告なく変更される場合があります
- 構造表現に誤りが含まれている可能性があります
- サプライヤー情報は独自に確認してください
- 実験を行う前に、適切な検証を実施してください
適切な使用
- 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 et al., J. Chem. Inf. Model 2020 (ZINC15)
- ZINC22 論文: Irwin et al., 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.