deepchem は何をしますか?
概要
DeepChemは、化学、材料科学、生物学に機械学習を適用するための包括的なPythonライブラリです。専門的なニューラルネットワーク、分子特徴量化手法、事前学習済みモデルを通じて、分子物性予測、薬物発見、材料設計、生体分子解析を実現します。
バージョンに関する注意: 例は deepchem 2.8.0(PyPI安定版、2024年4月)を対象としています。Python 3.7–3.11(PyPIでは<3.12)が必要です。コアユーティリティ(ローダー、フィーチャライザー、MoleculeNet)はDLバックエンドなしで動作しますが、GNNおよびトランスフォーマーモデルには対応するエクストラ(torch、tensorflow、またはjax)が必要です。GPUビルドを使用する場合は、最初にバックエンドフレームワークをインストールしてください。
このスキルを使用するタイミング
このスキルは以下の場合に使用します。
- 分子データ(SMILES文字列、SDFファイル、タンパク質配列)の読み込みと処理
- 分子物性(溶解性、毒性、結合親和性、ADMET特性)の予測
- 化学/生物学データセットでのモデル学習
- MoleculeNetベンチマークデータセット(Tox21、BBBP、Delaneyなど)の利用
- 分子のML対応特徴量への変換(フィンガープリント、グラフ表現、記述子)
- 分子向けグラフニューラルネットワーク(GCN、GAT、MPNN、AttentiveFP)の実装
- 事前学習済みモデル(ChemBERTa、GROVER、MolFormer)による転移学習の適用
- 結晶/材料物性(バンドギャップ、形成エネルギー)の予測
- タンパク質またはDNA配列の解析
中核機能
8つの中核機能分野と各コード例は、references/core_capabilities.mdにあります。
- 分子データの読み込みと処理 — ローダー、
NumpyDataset/DiskDataset。 - 分子の特徴量化 — 循環フィンガープリント、グラフ畳み込み、記述子。
- データ分割 — ランダム、スキャフォールド、層化、ブティナ分割、および分子に対してスキャフォールド分割が誠実なデフォルトである理由。
- モデルの選択と学習 — モデルファミリーとその適合方法。
- MoleculeNetベンチマーク — 標準データセットとその公開分割の読み込み。
- 転移学習 — 事前学習とファインチューニング。
- モデル評価 — 回帰および分類タスクに適した評価指標。
- 予測の実行 — 学習済みモデルの新しい分子への適用。
3つのエンドツーエンドワークフローはreferences/typical_workflows.mdにあります。
スクリプト例
このスキルには、scripts/ディレクトリに3つの本番環境対応スクリプトが含まれています。
1. predict_solubility.py
溶解性予測モデルの学習と評価。DelaneyベンチマークまたはカスタムCSVデータで動作します。
# Delaneyベンチマークを使用
python scripts/predict_solubility.py
# カスタムデータを使用
python scripts/predict_solubility.py \
--data my_data.csv \
--smiles-col smiles \
--target-col solubility \
--predict "CCO" "c1ccccc1"
2. graph_neural_network.py
分子データ上でさまざまなグラフニューラルネットワークアーキテクチャを学習します。
# Tox21でGCNを学習
python scripts/graph_neural_network.py --model gcn --dataset tox21
# カスタムデータでAttentiveFPを学習
python scripts/graph_neural_network.py \
--model attentivefp \
--data molecules.csv \
--task-type regression \
--targets activity \
--epochs 100
3. transfer_learning.py
事前学習済みモデル(ChemBERTa、GROVER、MolFormer)を分子物性予測タスク用にファインチューニングします。
# BBBPでChemBERTaをファインチューニング
python scripts/transfer_learning.py --model chemberta --dataset bbbp
# カスタムデータでGROVERをファインチューニング
python scripts/transfer_learning.py \
--model grover \
--data small_dataset.csv \
--target activity \
--task-type classification \
--epochs 20
共通パターンとベストプラクティス
パターン1: 分子には常にスキャフォールド分割を使用する
# 良い: データ漏洩を防ぐ
splitter = dc.splits.ScaffoldSplitter()
train, test = splitter.train_test_split(dataset)
# 悪い: 類似分子が学習とテストに含まれる可能性がある
splitter = dc.splits.RandomSplitter()
train, test = splitter.train_test_split(dataset)
パターン2: 特徴量とターゲットを正規化する
transformers = [
dc.trans.NormalizationTransformer(
transform_y=True, # ターゲット値も正規化
dataset=train
)
]
for transformer in transformers:
train = transformer.transform(train)
test = transformer.transform(test)
パターン3: シンプルに始めてから規模を拡大する
- Random Forest + CircularFingerprint(高速ベースライン)から始める
- RFがうまくいけばXGBoost/LightGBMを試す
- 5000サンプル以上ある場合は深層学習(MultitaskRegressor)に移行
- 10000サンプル以上ある場合はGNNを試す
- 小さなデータセットまたは新しいスキャフォールドには転移学習を使用する
パターン4: 不均衡データに対処する
# オプション1: バランシングトランスフォーマー
transformer = dc.trans.BalancingTransformer(dataset=train)
train = transformer.transform(train)
# オプション2: バランスの取れた評価指標を使用
metric = dc.metrics.Metric(dc.metrics.balanced_accuracy_score)
パターン5: メモリの問題を回避する
# 大規模データセットにはDiskDatasetを使用
dataset = dc.data.DiskDataset.from_numpy(X, y, w, ids)
# より小さなバッチサイズを使用
model = dc.models.GCNModel(batch_size=32) # 128の代わりに
よくある落とし穴
問題1: 薬物発見におけるデータ漏洩
問題: ランダム分割を使用すると、類似分子が学習セットとテストセットの両方に含まれる可能性がある。
解決策: 分子データセットには常にScaffoldSplitterを使用する。
問題2: GNNがフィンガープリントより性能が低い
問題: グラフニューラルネットワークが単純なフィンガープリントよりも性能が低い。 解決策:
- データセットが十分に大きいことを確認する(通常>10000サンプル)
- 学習エポック数を増やす(50-100)
- 異なるアーキテクチャを試す(GCNではなくAttentiveFP、DMPNN)
- 事前学習済みモデルを使用する(GROVER)
問題3: 小さなデータセットでの過学習
問題: モデルが学習データを記憶してしまう。 解決策:
- より強力な正則化を使用する(ドロップアウトを0.5に増やす)
- よりシンプルなモデルを使用する(深層学習ではなくRandom Forest)
- 転移学習を適用する(ChemBERTa、GROVER)
- より多くのデータを収集する
問題4: インポートエラー
問題: No module named 'torch' / No module named 'tensorflow' 警告、またはモデルクラスのインポートに失敗する。
解決策: DeepChemは遅延読み込みを行います。モデルに一致するバックエンドをインストールし、次に対応するエクストラを追加します。
uv pip install deepchem # ローダー、フィーチャライザー、MoleculeNetのみ
uv pip install 'deepchem[torch]' # GCN、GAT、AttentiveFP、HuggingFaceModel、GroverModel
uv pip install 'deepchem[tensorflow]' # レガシーKerasモデル
uv pip install 'deepchem[jax]' # Haiku/JAXモデル
GPUを使用する場合は、エクストラの前に、正しいCUDAビルドでPyTorchまたはTensorFlowをインストールします。zshではエクストラを引用符で囲みます: 'deepchem[torch]'。
Conda + PyTorchユーザーへ: import deepchem が undefined symbol: iJIT_NotifyEvent で失敗する場合、MKLを2025未満に固定してください(conda install "mkl<2025")。PyTorchのwheelがMKL 2025.0.0と互換性がない可能性があります。
リファレンスドキュメント
このスキルには包括的なリファレンスドキュメントが含まれています。
references/api_reference.md
完全なAPIドキュメント。以下を含みます:
- すべてのデータローダーとそのユースケース
- データセットクラスとそれぞれを使用するタイミング
- 選択ガイド付きの完全なフィーチャライザーカタログ
- カテゴリ別に整理されたモデルカタログ(50以上のモデル)
- MoleculeNetデータセットの説明
- 評価指標と評価関数
- 一般的なコードパターン
参照タイミング: 特定のAPIの詳細、パラメータ名、または利用可能なオプションを確認したい場合にこのファイルを検索します。
references/workflows.md
8つの詳細なエンドツーエンドワークフロー:
- SMILESからの分子物性予測
- MoleculeNetベンチマークの使用
- ハイパーパラメータ最適化
- 事前学習済みモデルを用いた転移学習
- GANによる分子生成
- 材料物性予測
- タンパク質配列解析
- カスタムモデル統合
参照タイミング: 完全なソリューションを実装するためのテンプレートとしてこれらのワークフローを使用します。
インストール
コアパッケージ(データローダー、フィーチャライザー、MoleculeNet、scikit-learnラッパー):
uv pip install deepchem
モデルバックエンドに一致するエクストラを追加します(GPUビルドの場合は最初にPyTorch/TensorFlow/JAXをインストールしてください):
uv pip install 'deepchem[torch]' # GNNs、TorchModel、HuggingFaceModel、GroverModel
uv pip install 'deepchem[tensorflow]' # Keras/TensorFlowモデル
uv pip install 'deepchem[jax]' # JAX/Haikuモデル
uv pip install 'deepchem[dqc]' # 微分可能量子化学(torch + xitorch)
ナイトリービルド: uv pip install --pre deepchem(--pre でも同じエクストラが適用されます)
モデルクラスごとのオプションの依存関係については、インストールガイドとソフト要件を参照してください。
追加リソース
- 公式ドキュメント: https://deepchem.readthedocs.io/
- GitHubリポジトリ: https://github.com/deepchem/deepchem
- チュートリアル: https://deepchem.readthedocs.io/en/latest/get_started/tutorials.html
- 論文: "MoleculeNet: A Benchmark for Molecular Machine Learning"
Scientific Agent Skillsの引用
このスキルはK-DenseによるScientific Agent Skillsの一部です。このスキルが原稿、報告書、プレゼンテーション、またはコードリリースに実質的に貢献した場合は、論文を参考文献またはソフトウェアセクションに追加し、その旨をユーザーに伝えてください:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065