技術屋にゃん兵衛のてくてくらぼ by データウィズ [DataWith]

気の向くままソフトについて書いてます。バリバリエンジニアではないのであくまでも初心者目線で。

Wolfram EngineをVisualBasicで使う(8:化学構造式の描画)

Wolfram EngineをVisualBasicで使う(8:化学構造式の描画)

 

今回は化学構造式を描画してみようと思います。

これはグラフの表示と同じでとっても簡単。

 

  1. これまで何度も使ってきたフォームで。TexBox1、Button1、PictureBox1です。

    GUIのレイアウト
  2. コードはグラフを書いた時と全く同じ。

    Public Class Form1

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

     

            Dim ml As IKernelLink = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname 'C:\Program Files\Wolfram Research\Wolfram Engine\13.3\WolframKernel.exe'")

            ml.WaitAndDiscardAnswer()

     

           Dim result As Image = ml.EvaluateToImage(TextBox1.Text, 200, 200)

            PictureBox1.Image = result

     

        End Sub

    End Class

  3. まずは、化学の分野でよくつかわれるSMILES(スマイルス)形式で書かれた分子を書いてみます。

    MoleculePlot[Molecule["CN1C=NC2=C1C(=O)N(C(=O)N2C)C"]]

    SMILESをWolfram Languageの関数に渡す
  4. 実行すると。正しくカフェインが描画されました!

    分子構造が表示された
  5. Wolfram Languageのドキュメントでは「Molecule」では、「体系的な化学名」も使えると書かれています。これは「IUPAK命名法」も受け付けるということです。なので、今度はカフェインのIUPAK名を入れてみます。

    MoleculePlot[Molecule["1,3,7-Trimethylpurine-2,6-dione"]]

    なんとなく向きが違いますが、同じ結果が出ました。

    IUPAK名で指定したときの表示
  6. 分子を表現する関数にはもうひとつ、「MoleculePlot3D」というのがあります。使い方は全く同じです。

    MoleculePlot3D[Molecule["CN1C=NC2=C1C(=O)N(C(=O)N2C)C"]]

    3Dでの分子の表示
  7. プロットの描画方法も指定することができます。

    MoleculePlot3D[Molecule["CN1C=NC2=C1C(=O)N(C(=O)N2C)C"], PlotTheme->”SpaceFilling”]

    のようすると、次のように描画できます。

    別の表示の形式

 

短いですが、今日はここまで。