chematic for Rust

chematicは、分子の解析、記述子計算、フィンガープリントや2D構造式の生成を行うPure Rustのケモインフォマティクスクレートです。 FFIラッパーではなくネイティブクレートなので、chematicをRustのサーバー、コマンドラインツール、組み込み/エッジ環境に 直接追加でき、デフォルトの機能セットではC++ツールチェインを用意する必要もありません。chematicは、複数の専門クレートからなる Cargoワークスペースとして提供されており、フィンガープリント用のchematic-fp、WebAssemblyバインディング用のchematic-wasmなど、約20個のクレートが同じコアの上に構築されています。

cargo add chematic --features "smiles,perception,chem,3d,fp"

機能はフィーチャーフラグで制御します。上記のコマンドはsmilesperceptionchem3dfpを有効にしています。必要な機能だけを有効化し、 必要になったタイミングで追加してください。フィーチャーの全リストはdocs.rsのAPIリファレンスを参照してください。

既定でPure Rust、例外は1つだけ明示

Pure Rust by default。The optional native-inchi feature vendors the IUPAC InChI C reference implementation for bit-exact standard InChI output. It is opt-in and isolated to the chematic-inchi crate.

この限定はクレート全体にも当てはまります。chematic-mcp is #![forbid(unsafe_code)]. The library as a whole is not: the default depict feature (shipped in both the pip and npm packages) pulls in resvg/rustybuzz/tiny-skia for 2D rendering, which contain unsafe code.chematicは「unsafeコードを一切含まない」とは主張していません。上記で名指しした例外を除き、 コアとなる構文解析と化学ロジックが既定でunsafeを避けている、という主張にとどまります。

どんな用途に向いているか

  • Rust製のWebサービスやジョブワーカーに化学ロジックを直接組み込む — サブプロセスや別立ての化学マイクロサービスは不要です。
  • 分子データを解析・フィルタ・注釈付けするコマンドラインツール。
  • 同じクレートはWebAssemblyにもコンパイルでき(ブラウザ向けchematicを参照)、chematicのModel Context Protocolサーバーであるchematic-mcpも支えています。

次に見るべきページ