mcpField
D
datamol

datamol

github.com/kalarislabsデータ・データベース8440 回インストール今日更新
リポジトリ

datamol について

Datamolは、分子データのワークフロー向けにRDKitを扱いやすくするPythonケモインフォマティクスライブラリです。化合物ライブラリを扱う研究者や開発者に適し、並列処理と幅広い分子ファイル入出力を備えています。

主な機能

  1. 01分子形式の変換と標準化
  2. 02記述子とフィンガープリント
  3. 033Dコンフォマー生成
  4. 04クラスタリングと多様性選択
  5. 05骨格・フラグメント解析
  6. 06並列バッチ処理

活用シーン

  1. 01化合物ライブラリの標準化と絞り込み
  2. 02フィンガープリント類似度による分子比較
  3. 03分子解析用コンフォマーの生成
  4. 04骨格ベースの訓練・テスト分割

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill datamol

インストール後、Claude Code で/datamolを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
conformers_module.md
core_api.md
core_workflows.md
descriptors_viz.md
fragments_scaffolds.md
io_module.md
reactions_data.md
workflow_patterns.md

詳細

Datamol ケモインフォマティクススキル

概要

Datamol は、分子ケモインフォマティクス向けに、RDKit の上に軽量で Python らしい抽象化レイヤーを提供する Python ライブラリです。適切なデフォルト設定、効率的な並列処理、最新の I/O 機能により、複雑な分子操作を簡素化します。分子オブジェクトはすべてネイティブの rdkit.Chem.Mol インスタンスであり、RDKit エコシステムとの完全な互換性が保たれます。

バージョンに関する注意: ここでの例は datamol 0.12.x(PyPI 安定版:0.12.5、2024 年 6 月)を対象としています。0.10.0 以降、モジュールはデフォルトで遅延読み込みされます(無効にするには DATAMOL_DISABLE_LAZY_LOADING=1 を設定します)。0.12.2 以降、RDKit は datamol の直接的な PyPI 依存関係になりました。フィンガープリントでは RDKit の rdFingerprintGenerator API を使用します(0.12.5 以降)。

主な機能:

  • 分子形式の変換(SMILES、SELFIES、InChI)
  • 構造の標準化とサニタイズ
  • 分子記述子とフィンガープリント
  • 3D コンフォーマーの生成と解析
  • クラスタリングと多様性に基づく選択
  • 骨格とフラグメントの解析
  • 化学反応の適用
  • 可視化とアラインメント
  • 並列処理によるバッチ処理
  • fsspec によるクラウドストレージのサポート

インストールとセットアップ

datamol のインストール方法を案内します。

uv pip install datamol

RDKit は datamol とともに自動的にインストールされます。リモートファイルパス(S3、GCS、HTTP)を使用する場合は、対応する fsspec バックエンドをインストールします。

uv pip install s3fs   # AWS S3
uv pip install gcsfs  # Google Cloud Storage

インポート規約:

import datamol as dm

主なワークフロー

実行可能なコード例を含む 10 のワークフロー領域については、 references/core_workflows.md に記載されています。

#領域内容
1基本的な分子の処理to_mol、一括変換、エラー処理、正準 SMILES と異性体 SMILES、サニタイズと完全な標準化
2ファイルの読み書きSDF、SMILES、CSV、構造を描画した Excel、汎用リーダー/ライター、クラウドまたは HTTPS のパス
3記述子とプロパティ標準的な記述子セット、並列計算、芳香族性、立体化学、柔軟性、フィルタリング
4フィンガープリントと類似度ECFP4 などの種類、ペアワイズ距離と集合間距離、最近傍検索(Tanimoto 距離 = 1 − 類似度)
5クラスタリングと多様性類似度クラスタリング、多様なサブセットの選択、クラスタの重心
6骨格解析Bemis-Murcko 骨格、グループ化とカウント、骨格が重複しない学習/テスト分割
7フラグメンテーション分子のフラグメント化、ライブラリ内の共通フラグメントの検索、フラグメントベースのスコアリング
83D コンフォーマー生成、取得、RMSD クラスタリング、代表構造の選択、SASA
9可視化グリッド、ファイル、出版用 SVG、部分構造のアラインメント、原子と結合の強調表示、コンフォーマーの表示
10化学反応反応 SMARTS、分子またはライブラリ全体への適用

エンドツーエンドのパイプライン 3 種(読み込み/フィルタリング/解析、骨格系列ごとの SAR、バーチャルスクリーニング)については、 references/workflow_patterns.md に記載されています。

並列処理

Datamol には、多くの操作向けに並列処理機能が組み込まれています。n_jobs パラメーターを使用します。

  • n_jobs=1:逐次処理(並列化なし)
  • n_jobs=-1:利用可能な CPU コアをすべて使用
  • n_jobs=4:4 コアを使用

並列処理に対応する関数:

  • dm.read_sdf(..., n_jobs=-1)
  • dm.descriptors.batch_compute_many_descriptors(..., n_jobs=-1)
  • dm.cluster_mols(..., n_jobs=-1)
  • dm.pdist(..., n_jobs=-1)
  • dm.conformers.sasa(..., n_jobs=-1)

プログレスバー:多くのバッチ処理では progress=True パラメーターをサポートしています。

リファレンスドキュメント

API の詳細については、以下のリファレンスファイルを参照してください。

  • references/core_api.md:コア名前空間の関数(変換、標準化、フィンガープリント、クラスタリング)
  • references/io_module.md:ファイルの入出力操作(SDF、CSV、Excel、リモートファイルの読み書き)
  • references/conformers_module.md:3D コンフォーマーの生成、クラスタリング、SASA 計算
  • references/descriptors_viz.md:分子記述子および可視化関数
  • references/fragments_scaffolds.md:スキャフォールドの抽出、BRICS/RECAP によるフラグメント化
  • references/reactions_data.md:化学反応およびサンプルデータセット

ベストプラクティス

  1. 外部ソースの分子は必ず標準化してください。

    mol = dm.standardize_mol(mol, disconnect_metals=True, normalize=True, reionize=True)
    
  2. 分子のパース後に None 値がないか確認してください。

    mol = dm.to_mol(smiles)
    if mol is None:
        # Handle invalid SMILES
    
  3. 大規模なデータセットでは並列処理を使用してください。

    result = dm.operation(..., n_jobs=-1, progress=True)
    
  4. クラウド I/O は要求された場合にのみ使用してください。リモートへの書き込みパスを確認し、必要に応じて s3fs/gcsfs をインストールしてください。

    df = dm.read_sdf("s3://bucket/compounds.sdf")
    
  5. 類似度に適したフィンガープリントを使用してください。

    • ECFP(Morgan):汎用的で、構造類似性の評価に適しています
    • MACCS:高速で、特徴空間がより小さくなります
    • Atom pairs:原子のペアと距離を考慮します
  6. スケールの制限を考慮してください。

    • Butina クラスタリング:約1,000分子(距離行列全体を使用)
    • より大規模なデータセットの場合:多様性選択または階層的手法を使用してください
  7. ML のスキャフォールド分割:スキャフォールドに基づいて適切に訓練データとテストデータを分離してください。

  8. SAR 系列を可視化する際は、分子をアラインメントしてください。

エラー処理

# Safe molecule creation
def safe_to_mol(smiles):
    try:
        mol = dm.to_mol(smiles)
        if mol is not None:
            mol = dm.standardize_mol(mol)
        return mol
    except Exception as e:
        print(f"Failed to process {smiles}: {e}")
        return None

# Safe batch processing
valid_mols = []
for smiles in smiles_list:
    mol = safe_to_mol(smiles)
    if mol is not None:
        valid_mols.append(mol)

機械学習との統合

Datamol には、依存関係として scipy と scikit-learn が含まれています。通常の PyPI パッケージとしてインポートしてください。これらは、このスキルに同梱されたスクリプトではありません。

import numpy as np

# Feature generation
X = np.array([dm.to_fp(mol) for mol in mols])

# Or descriptors
desc_df = dm.descriptors.batch_compute_many_descriptors(mols, n_jobs=-1)
X = desc_df.values

# Train model (scikit-learn PyPI package)
from sklearn.ensemble import RandomForestRegressor  # third-party library
model = RandomForestRegressor()
model.fit(X, y_target)

# Predict
predictions = model.predict(X_test)

トラブルシューティング

問題:分子のパースに失敗する

  • 解決策:まず dm.standardize_smiles() を使用するか、dm.fix_mol() を試してください

問題:クラスタリングでメモリーエラーが発生する

  • 解決策:大規模な集合では、全件クラスタリングの代わりに dm.pick_diverse() を使用してください

問題:コンフォーマー生成が遅い

  • 解決策:n_confs を減らすか、rms_cutoff を増やして、生成するコンフォーマーの数を減らしてください

問題:リモートファイルへのアクセスに失敗する

  • 解決策:対応する fsspec バックエンド(uv pip install s3fs または gcsfs)をインストールし、そのバックエンドに必要なプロバイダー認証情報のみが設定されていることを確認してください(上記の「リモートファイルのサポート」を参照)

その他のリソース

関連スキル

  • rdkit:RDKit(Python)を使用して SMILES、MOL/SDF、InChI を読み書きする方法、記述子(MW、LogP、TPSA)を計算する方法、Morgan/… を生成する方法を説明します。
  • molfeat:計算器、scikit-learn… を提供する molfeat(0.11.0)を使用して、SMILES 文字列または RDKit/datamol 分子を数値特徴量に変換します。
  • medchem:RDKit と datamol を基盤として、Python の medchem ライブラリ(datamol-io、v2.0.5)で低分子ライブラリをフィルタリングし、トリアージします。

コメント