検証とベンチマーク

現行リリース: v1.0.13

機能の成熟度と既知の制限事項は現行リリースの案内です。比較ベンチマークは v1.0.1 の測定記録で、v1.0.13 の性能を直接測定した値ではありません。v1.0.3 では別途、MMFF94/3Dのローカル測定も追加されています。

chematicは、SMILES/SMARTS解析、分子記述子、フィンガープリント、2D構造式描画をカバーする、 オープンソース(MIT OR Apache-2.0)のRust製ケモインフォマティクスエンジンです。 このページは、chematicの出力がRDKitに対してどのように検証されているか、何が安定版で何が実験的か、 そしてベンチマーク数値が実際に何を意味し何を意味しないかをまとめたものです。詳細な手法、コーパス、 再現手順はchematicリポジトリにあります — このページはその要約であり、代わりとなるものではありません。

chematicとRDKitの使い分け

chematicを選ぶ場合

  • ブラウザやローカル環境で、軽量に分子解析を動かしたい。
  • Python・Rust・ブラウザで同じコアを共有したい。
  • 標準のPure Rust構成でC++ツールチェーンなしの小さな化学ツールを作りたい。

RDKitを選ぶ場合

  • 豊富な周辺ツールや長年の実運用実績を最優先したい。
  • 検証済みの高度な3D、反応処理、プラグイン互換性が必要。
  • 既存のRDKitワークフローとの互換性が必要。

これはどちらか一方を置き換えるための比較ではありません。必要な機能と検証実績に合わせて選んでください。

機能の成熟度

機能ステータス備考
SMILES / SMARTS parsingstable
Molecular descriptors (physicochemical core)stable
Fingerprints (ECFP, MACCS, etc.)stable
3D conformer generation (distance geometry + MMFF94)experimental
pKa / ADMET profilingexperimentalルールベースのスクリーニング用ヒューリスティックであり、臨床用途としての検証はされていません。
IUPAC name generationpartial25以上の構造クラスに対応。対応範囲外の構造には空文字列を返します。
InChI (default pure-Rust engine)approximate
InChI (optional native-inchi feature)stable同梱されたIUPAC C言語リファレンス実装により、ビット完全な標準InChIを生成します。

比較ベンチマーク(v1.0.1測定)

最新性に関する注記:比較結果は chematic v1.0.1(コミット bfaf1d52f9094702eda011451d6479ff0265d3cf)、 RDKit 2025.09.3、macOS arm64環境で測定されています。現在配布されているパッケージは v1.0.13 です。 以下の数値を v1.0.13 の性能値として扱わないでください。

5,000-molecule diverse corpusにおいて、chematicはECFP4フィンガープリントをRDKitの3.0×の速度で生成します (測定方法:chematicとRDKitによるECFP4フィンガープリント生成、分子あたりのwall-clock時間)。 これは本サイトが公開する唯一の速度に関する数値であり、このコーパス上でのECFP4フィンガープリント生成に限定した値です。 chematic全般の性能を示すものではありません。

詳細な手法、実行環境、生データ: https://github.com/kent-tokyo/chematic/blob/main/docs/benchmark.md

v1.0.3で追加されたMMFF94/3Dローカル測定:ベンチマーク記録。 これは同一環境内のCriterion測定であり、RDKitとの比較ではありません。

RDKitとの記述子一致度

Mol.descriptors() は合計194個の値を返します。この数自体は精度について何も語りません — これらの値は性質の大きく異なる2つのグループに分かれます。

  • 物理化学的コア記述子:物理化学的な中核記述子(分子量、LogP、TPSA、水素結合ドナー/アクセプター数、芳香環数)は、 4,999分子のChEMBLコーパスにおいてRDKitと100%一致します。
  • 拡張記述子:拡張記述子ファミリー(Kappa形状指数、BertzCT、BalabanJ、BCUT2D、VSA記述子、MQN、SA Score)はコーパス規模ではRDKitと大きく乖離しており、Mol.descriptors()が返す194個の値の一つであるという理由だけで検証済みとみなすべきではありません。

「194個の記述子」という数字それ自体を検証済みの根拠として扱わないでください。 ある記述子に依拠する前に、それがどちらのグループに属するかを必ず確認してください。

CIP立体中心(R/S)の精度

デフォルトエンジンでは、CIP割り当てはRDKitと96.30%の精度で一致します。

個別にオプトインが必要な高精度エンジンを使用した場合、一致率は~99.6–99.8%に達します — ただしこれには、高精度CIPエンジン(cip_assignments_accurate_json)を明示的に呼び出す必要があり、デフォルトの挙動ではありません。 このエンジンを明示的に呼び出さない限り、この高い数値は適用されません。

既知の制限事項

canonical_smiles() は安全な重複排除・キャッシュキーとして使用できません

5,000分子のChEMBLサンプルにおいて、約18分子に1つの割合で、同一の構造に対して2種類の異なる (それぞれ個別には有効な)canonical SMILES文字列が生成されます。これは見た目上の問題であり (構造的な破損は発生しません)、現時点では canonical_smiles() の出力を安定した識別子や キャッシュキーとして信頼すべきではないことを意味します。

出典: docs/rdkit-comparison.md