再現する必要のある実験から始める

まず科学実験を定義してから、パッケージを選びます。目的ラベル、単位、分子表現、予測の想定用途を記録してください。分子グラフ上の特性回帰実験は、幾何構造に依存するポテンシャルやタンパク質–リガンドのワークフローとは別のタスクです。パッケージが化学全般に焦点を当てているというだけで、対応していると推測しないでください。

何かをインストールする前に、簡潔な実験仕様を書いてください。

  • どの観測データを合法的に使用できますか?各ラベルは何を測定していますか?
  • 新しいサンプルを予測する際、どの情報を利用できますか?
  • 評価では、新しい化学ファミリー、後の時点での測定、または別の運用状況を想定すべきですか?
  • どの程度の予測誤差またはカバレッジがあれば、出力を有用とみなせますか?

以下の比較手順は評価計画の提案であり、科学的テストの報告でも、どちらかのパッケージが優れているという主張でもありません。

パッケージの評判ではなく、文書で確認できる適用範囲を比較する

Chempropのドキュメントでは、分子特性予測のためのメッセージパッシングニューラルネットワークを訓練・評価するPyTorchフレームワークとして説明されています。コマンドラインでの訓練と予測のチュートリアルに加え、データ処理、グラフの特徴化、モデル構築用のPythonモジュールが用意されています。掲載されている例には、分類、多成分回帰、反応回帰、マルチタスクモデルが含まれます。そのほか、原子・結合の予測、学習済みフィンガープリント、不確実性、解釈を扱うワークフローも文書化されています。

DeepChemのリポジトリでは、創薬、材料科学、量子化学、生物学にまたがる、より広範な科学機械学習ツールチェーンとして紹介されています。TensorFlow、PyTorch、JAXをサポートし、それぞれの依存関係は個別に指定されていると説明されています。また、順序立てられたチュートリアルや追加の例もあります。この幅広さは、すべてのモデルがすべてのバックエンドや表現に対応することを示すものではありません。

分子特性MPNN実験では、Chempropは検討に値する特化型の候補です。複数の科学モデルファミリーや表現を検討するプロジェクトでは、DeepChemはより幅広い探索の出発点となります。どちらの場合も、インターフェースを比較する前に、実験に合った文書化済みの例を選んでください。適用範囲だけでは、精度も使いやすさも判断できません。

入力と出力の仕様を定める

まずパッケージに依存しないデータ仕様を作成し、選んだ各チュートリアルの実際のスキーマに合わせて調整します。参照資料抜粋からは、すべてのワークフローで受け付けられる正確なファイル形式や出力レイアウトは確認できません。

提案する入力仕様では、安定したサンプルID、分子表現、目的変数、単位、ラベル欠損時のルール、追加特徴量を明確にしてください。元の観測データは、変換後のモデル入力とは別に保持します。解析失敗、重複の処理、除外、測定値が矛盾する場合の扱いを記録してください。

期待する出力仕様も定義します。サンプルID、予測値、目的変数の単位、モデル識別子、未対応または処理に失敗した入力を示す明確なステータスを含めてください。不確実性が必要な場合は、求める量と評価方法を指定します。文書化された不確実性ワークフローがあっても、あなたのデータで不確実性が較正されているとは限りません。

RDKitのドキュメントは、用意されたRDKitの草稿に記載のとおり、分子処理や記述子・フィンガープリント生成に関する参考資料として役立ちます。DeepChemもRDKitを依存関係の一つとして挙げています。ここで提案する共通のRDKit前処理またはベースラインパイプラインは、設計案であり、テスト済みのChemprop–DeepChem連携ではありません。分子データを共有しても、特徴量やチェックポイントが相互に利用できるとは限りません。

共通の評価プロトコルを構築する

両候補に同じ適格な観測データと目的変数の定義を使用します。パッケージのデフォルト設定に依存せず、分割対象を固定して、両方の実験が同じ問いに答えるようにします。科学的設計上必要な場合は、重複記録や関連する記録を同じ分割にまとめ、学習する前処理は訓練パーティションだけで適合させます。

次に、以下の順序で進めます。

  1. 各パッケージから文書化されたモデル経路を一つ選び、必要な表現と依存関係を記録します。
  2. 欠損または無効な入力も含め、小規模な開発用サブセットで読み込みと予測を確認します。
  3. 同じ分割と指標の定義を用いて、単純なベースラインを評価します。
  4. 比較可能な調整予算を設定し、テストパーティションをモデル選択に使わないようにします。
  5. サンプルID付きの予測を保存し、共通の評価コードで評価します。

予測指標に加えてデータカバレッジも報告してください。一方の候補がより多くの入力を拒否する場合は、共通して評価可能なサブセットでの結果を示し、適格データセット全体に対するカバレッジも別途説明します。除外によって見かけ上の精度が有利になったかのように、説明なく扱わないでください。

計画例:仮想的な溶解度比較

あるチームが、SMILES表現と一貫した定義のlog-solubilityラベルを持つ分子レコードを2,000件保有しているとします。これは仮想的な計画例であり、このレコード数はベンチマークでも観測結果でもありません。

チームはまず測定条件を確認し、重複する分子レコードをグループ化して、未知の化学ファミリーへの性能評価を意図した固定の訓練・検証・テスト分割を作成します。提案する入力テーブルにはsample_id、smiles、log_solubilityが含まれます。これらは計画用の項目であり、特定パッケージで必須とされる列だと主張するものではありません。

Chemprop候補では、文書化された分子特性回帰経路を使用します。DeepChem候補は、選んだ表現を受け付ける回帰例をチームが見つけ、その依存関係を確認するまで未指定とします。記述子またはフィンガープリントに基づくベースラインは別途計画し、その構築方法を記録します。

訓練前に、チームは目的変数の対数単位での平均絶対誤差を主要指標として選び、共通の調整予算を記録し、保存したシードを用いた複数回の実行を計画します。各候補はテストサンプルIDに対応付けられた予測と、失敗記録を出力する必要があります。最終比較には誤差、カバレッジ、実測したリソース使用量、未解決の連携上の問題を含めます。有利な一回の実行結果だけで勝者を選んではいけません。

制約と運用への適合性を確認する

リリース固有のドキュメントを選び、パッケージのバージョン、特徴化設定、分割対象、シード、探索予算、環境の詳細を記録してください。Chempropのドキュメントでは、v2で大幅な書き換えが行われ、デフォルト設定も変更されたとされています。そのため、古い例は慎重に解釈する必要があります。用意されたDeepChemの草稿では、情報源によってPython互換性の宣言に不一致があるとされています。一つの範囲を確定事項として扱わず、選んだリリースを確認してください。

運用上の問いと科学上の問いは分けて検討します。環境を再現できますか?保存済みモデルを再読み込みできますか?推論は実測した制約を満たしますか?オプションの依存関係は誰が保守しますか?コード、重み、データセットの条件はそれぞれ独立して確認し、一つのライセンスがすべての成果物を対象とすると仮定しないでください。

参照資料は、あなたのエンドポイントにおける予測精度、スループット、汎化性能を示していません。例の実行に成功しても、その環境で実装可能であることを示すだけで、科学的妥当性やデプロイ準備が整っていることを意味しません。デプロイを決定する前に、分子特性モデルを評価するを参照してください。

実行チェックリスト

  • 目的変数、単位、表現、想定する意思決定を定義する。
  • 各候補について、対応する文書化済みワークフローを選ぶ。
  • 適格な記録、前処理ルール、分割対象を固定する。
  • 予測出力、失敗、不確実性の要件を指定する。
  • 共通の評価コードを使い、ベースラインと両候補を比較する。
  • カバレッジ、バージョン、予算、運用上の測定結果を記録する。
  • 未解決の互換性および科学上の疑問を明示する。