datamol について
Datamolは、分子データのワークフロー向けにRDKitを扱いやすくするPythonケモインフォマティクスライブラリです。化合物ライブラリを扱う研究者や開発者に適し、並列処理と幅広い分子ファイル入出力を備えています。
主な機能
- 01分子形式の変換と標準化
- 02記述子とフィンガープリント
- 033Dコンフォマー生成
- 04クラスタリングと多様性選択
- 05骨格・フラグメント解析
- 06並列バッチ処理
活用シーン
- 01化合物ライブラリの標準化と絞り込み
- 02フィンガープリント類似度による分子比較
- 03分子解析用コンフォマーの生成
- 04骨格ベースの訓練・テスト分割
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill datamolインストール後、Claude Code で/datamolを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/conformers_module.mdcore_api.mdcore_workflows.mddescriptors_viz.mdfragments_scaffolds.mdio_module.mdreactions_data.mdworkflow_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 | フラグメンテーション | 分子のフラグメント化、ライブラリ内の共通フラグメントの検索、フラグメントベースのスコアリング |
| 8 | 3D コンフォーマー | 生成、取得、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:化学反応およびサンプルデータセット
ベストプラクティス
-
外部ソースの分子は必ず標準化してください。
mol = dm.standardize_mol(mol, disconnect_metals=True, normalize=True, reionize=True) -
分子のパース後に None 値がないか確認してください。
mol = dm.to_mol(smiles) if mol is None: # Handle invalid SMILES -
大規模なデータセットでは並列処理を使用してください。
result = dm.operation(..., n_jobs=-1, progress=True) -
クラウド I/O は要求された場合にのみ使用してください。リモートへの書き込みパスを確認し、必要に応じて
s3fs/gcsfsをインストールしてください。df = dm.read_sdf("s3://bucket/compounds.sdf") -
類似度に適したフィンガープリントを使用してください。
- ECFP(Morgan):汎用的で、構造類似性の評価に適しています
- MACCS:高速で、特徴空間がより小さくなります
- Atom pairs:原子のペアと距離を考慮します
-
スケールの制限を考慮してください。
- Butina クラスタリング:約1,000分子(距離行列全体を使用)
- より大規模なデータセットの場合:多様性選択または階層的手法を使用してください
-
ML のスキャフォールド分割:スキャフォールドに基づいて適切に訓練データとテストデータを分離してください。
-
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)をインストールし、そのバックエンドに必要なプロバイダー認証情報のみが設定されていることを確認してください(上記の「リモートファイルのサポート」を参照)
その他のリソース
- Datamol ドキュメント:https://docs.datamol.io/
- RDKit ドキュメント:https://www.rdkit.org/docs/
- GitHub リポジトリ:https://github.com/datamol-io/datamol
関連スキル
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)で低分子ライブラリをフィルタリングし、トリアージします。