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スタイルのツールボックスを提供し、ベンチマークデータ、事前学習済みチェックポイント、簡単なモデル永続化を備えています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト