liugangcode/torch-molecule

torch-molecule is a deep learning package for molecular discovery, designed with an sklearn-style interface for property prediction, inverse design and representation learning.

torch‑molecule – 分子発見のためのディープラーニング(sklearnスタイルAPI)

何であるか – PyTorchに基づくPythonライブラリで、研究者やエンジニアが分子AIモデル(予測、生成、表現)を、馴染み深いscikit‑learnスタイルのインターフェースを使って訓練・評価・デプロイできるようにします。

なぜ重要か – 分子発見(ドラッグ設計、材料科学、毒性予測など)は、グラフニューラルネットワークやTransformerモデルにますます依存しています。torch‑moleculeは、最新のアーキテクチャ、事前学習済みチェックポイント、ベンチマークデータセットを多数統合し、データ処理、モデル構築、ハイパーパラメータチューニングのボイラープレートを隠蔽しています。


主なコンポーネント

コンポーネント 機能 例モデル
予測モデル 分子グラフまたはSMILES文字列に対する教師あり回帰/分類 GRIN, BFGNN, GREA, DIR, SGIR, GNNs, Transformer (SMILES), LSTM (SMILES)
生成モデル デノボ分子生成、条件付き生成、スケルトンガイド付きサンプリング DeFoG, Graph DiT, DiGress, GDSS, MolGPT, JTVAE, GraphGA, 事前学習済み生成器(NovoMolGen, MolGen‑large, Molexar, SAFE‑GPT)
表現モデル 下流タスク用のグラフまたはSMILESエンコーダの自己教師付き事前学習 MoAMa, GraphMAE, AttrMasking, ContextPred, EdgePred, InfoGraph, BERT/GPTスタイルの多数の事前学習モデル

バンドルされたデータセット

  • qm9 – 量子化学的性質(約134,000分子)
  • chembl2k / broad6k – 薬物様バイオアクティビティデータ
  • toxcast – 毒性ラベル
  • admet – 吸収/分布/代謝/排泄/毒性
  • gasperm – ポリマーのガス透過性
  • zinc250k – 無標識ZINCサブセット(無条件生成用)

すべて torch_molecule.datasets.load_<name>() でロードでき、.data(SMILESリスト)と .target(numpy配列または None)を持つシンプルなオブジェクトを返します。

インストール

# 新しいconda環境を作成(Python 3.11推奨)
conda create -n torch_molecule python=3.11.7 && conda activate torch_molecule

# PyPIからパッケージをインストール
pip install torch-molecule

最新のソースを使用する場合:

git clone https://github.com/liugangcode/torch-molecule
cd torch-molecule
pip install .

一部のモデルには追加の依存関係が必要(例:torch-scatter, transformers, selfies, fragment-selfies, molexar, safe-mol)。READMEに正確な pip コマンドが記載されています。

一般的なワークフロー(予測例)

from torch_molecule.datasets import load_qm9
from torch_molecule import GREAMolecularPredictor

# 1️⃣ データをロードして分割
qm9 = load_qm9(local_dir='torchmol_data')
train, val = qm9.train_test_split(test_size=0.2, method='scaffold', seed=42)

# 2️⃣ モデルをインスタンス化(sklearnスタイル)
model = GREAMolecularPredictor(
    num_task=1,
    task_type='regression',
    evaluate_higher_better=False,
    verbose='progress_bar'
)

# 3️⃣ ハイパーパラメータを自動チューニングして適合
model.autofit(
    X_train=train.data, y_train=train.target,
    X_val=val.data,   y_val=val.target,
    n_trials=10
)

# 4️⃣ 新しいSMILESに対して予測
preds = model.predict(['C1=CC=CC=C1', 'CCO'])

同じパターンは生成モデル(HFPretrainedMolecularGenerator)や表現エンコーダにも適用可能。

チェックポイントの取り扱い

  • Hugging Faceに保存 – model.save_to_hf(repo_id='user/repo', task_id='qm9_grea', ...)
  • Hugging Faceからロード – model.load_from_hf(repo_id='user/repo', local_cache='.../GREA_qm9.pt')
  • ローカル保存/ロード – model.save_to_local('qm9_grea.pt') と model.load_from_local('qm9_grea.pt')

拡張性

  • 新しいデータセットはローダ関数を貢献することで追加可能。
  • コミュニティ貢献者により、多くの事前学習済み生成器(MolGen, Molexar, SAFE‑GPT)とデータセット分割ユーティリティが統合済み。
  • ライブラリはオープンソース。プルリクエストを歓迎しています。

要するに – torch‑moleculeは、最新のグラフおよびTransformerベースの分子AIのためのワンストップ、sklearnスタイルのツールボックスを提供し、ベンチマークデータ、事前学習済みチェックポイント、簡単なモデル永続化を備えています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト