Mathematica で化学構造認識(OCSR)その2

はじめに

前回は、 Mathematica での化学構造式の光学認識 (Optical Chemical Structure Recognition) の性能を検証しました。 今回は、OCSR の機能を Graphical User Interface (GUI) に落とし込んでみます。

Mathematica で GUI 構築

Mathematica には実行可能形式 (exe) を作成する機能はないため、ノートブック上に GUI を構築するとします。 Mathematica ではすべてが関数なので、それらを組み合わせることで GUI を作成できます。

Panel[] で枠を、Button[] でボタンを配置できます。

左下の Browse ボタンでファイルブラウザを開くようにします。 Button[] 内で SystemDialogInput[] を使うには Method -> "Queued" を定義する必要があります。

    Button["Browse", file = SystemDialogInput["FileOpen"], 
      Method -> "Queued", ImageSize -> {45, 25}]

このとき、file に画像のパスがセットされます。パスがセットされると、左側の Panel に画像が表示されるようにします。

ただし、Mathematica では値を更新しても他で参照している値を更新してくれません。なので、Dynamic[] で括る必要があります。

    Dynamic[
    If[file === Null || FailureQ[image = Import[file]],
    noImage, image]
    ]

Dynamic[] は括る範囲によって怒られる時もあります。基本的になるべく大きくとるといいです。

Convert ボタンをクリックすると、画像を認識して右側の Panel に表示します。

ラジオボタンで 3D 表示にも対応しておきました。

ちなみに、Edit ボタンをクリックすると、MoleculeDraw[] が起動します。使用感は人それぞれだと思いますが、Mathematica 内で完結できるのはすごいです。 Ts はトシル基のことで今回はうまく認識できていません。

Save ボタンで mol ファイル、Export ボタンで png ファイルを保存できます。

所感

今回は、GUI 構築の話がメインだったと思います。率直に言って、私の手には余るといった感じですか。 幸いにも、先人の例は山ほどあります。 そもそも、Mathematica には GUI ビルダーが無く、難易度高めです(自分で作ればいいじゃん・・・という話ですが)。

ちなみに、Wolfram Cloud で MoleculeRecognize[] は使えません。今後に期待!!!

参考文献