Pirika logo
JAVA,HTML5と化学のサイト

Pirika トップ・ページ

Pirikaで化学
 物性化学
 高分子化学
 化学工学
 分子軌道
 情報化学

 その他の化学
 アカデミア
 MOOC講義資料
 プログラミング

ハンセン溶解度パラメータ(HSP):
 HSP基礎
 HSP応用
 ポリマー
 バイオ・化粧品
 環境
 物性推算
 分析
 化粧品の処方設計
 その他
 自分でやってみよう

雑記帳

Ad Space for you

 

Ad Space for you

 

 

 

Last Update

24-Jan-2019

情報化学:フリー・ツールの利用

非常勤講師:山本博志 講義補助資料


2018.12.8

Chemo-Informatics用のフリーウエアーの代表といえばrdkitであろう。ドキュメントはこちらにあるので参考にすると良いだろう。インストールの仕方、使い方などは、ネット上にいくらでも情報が溢れている。例えば、「化学の新しいカタチ」のHPは秀逸だ。
Pirikaの方針は、「表計算ソフト、ブラウザー、ネットワーク接続があれば、Materials Informaticsだろうが何だろうができてしまう」なので、インストールは必須では無い。大事なのは、化学の知識の方である。

授業の時に、「アセトンの構造がわかる人?」って聞いて愕然としたのだけど、誰もわからなかった。確かに、化学工学の学生にとっては、分子の構造などはどうでもいいのかもしれない。コンピュータにアセトンの分子構造を見せても画像としてしか認識しないように(構造がわからなければGoogleの画像検索でアセトンと検索してみよう)人間にとっても意味不明の記号のようだ。
コンピュータに分子の構造を教えるのには、自分はこの10年SMILESの構造式を使っている。昔書いた記事がこちらにある。Smilesで扱うことのメリットの一番は、表計算ソフトの中のセルに埋め込むことができることであろう。またマテリアルズ・インフォマティクス用のツールのほとんどもSMILES構造式に対応しているので、それも有難い。

注意:RDKitはサイズが6Mbyte以上あります。スマホなどでアクセスするのは避けたほうが良いです。

rdkitを使ったSmiles Viewer 2018.12.8
慣れてくれば、Smilesをみれば分子の大体の構造は見当がつくようになる。しかし、複雑な分子になると、一応構造を確認したいこともある。その時にはこのページでrdkitに構造を描かせれば良いだろう。SVGの綺麗な構造を書いてくれる。おまけでSVGデータも取り出せるようにしてみた。テキストエリアの構造を全部選択コピーして、テキストエディターにペーストする。それをXXX.svgと拡張子をsvgでセーブすれば(最新の)パワポなどに貼り付けることができる。rdkitを使ったSmiles ViewerはあくまでもSmilesを受け取って処理する部分のデモだ。この先rdkit自体は表に出ることは多くなく、バックグランドで縁の下の力持ちになる。SVGの画像データは美しいのは良いが、SVGデータからPNGに変換して、右クリックで画像をコピーできるように改造してみた。そこらへんの改造についてはプログラミング講座の方で解説しよう。

それでは、分子をお絵描きしてその分子のSmiles構造式を得るにはどうしたら良いだろうか? 予算があって有償の分子描画ソフトを買える場合には、大抵のソフトにはSMILES吐き出し機能が付いているので問題ないだろう。JChemPaintなどJAVAのアプリケーションもあるし、私もJavaScriptで分子のお絵描きソフトは作った。今使いたいなら、圧倒的に優れているのは、JSMEであろう。様々なHPに搭載されているので見た事、使った事があるだろう。

JSME 2018.12.9
本当は、本家本元から最新版をダウンロードして使って欲しい。ここでは、JSMEをフロントエンドにして様々な機能を統合していくので、pirikaに置かせてもらっています。分子の描き方は十分に慣れておいて欲しいと思います。このJSME自体にもSMILESの構造式などを受け付けて2D分子を表示する機能が含まれている。

RDkit 識別子作成説明のページ 2018.12.9
マテリアルズ・インフォマティクスなどでは、自分の知りたい物性値を予測するために説明変数を必要とする。説明変数として分子に含まれる原子団を使う場合には原子団寄与法と呼ぶ。分子の体積や表面積、形状の因子などを説明変数に用いることも多い。RDKitを本格的に使う場合にはPythonなどの知識が必要だが、ブラウザーだけでできることも多い。実際に識別子を作ってMaterials Informaticsをやってみよう。
2019.1.9:分子結合インデックスの計算に誤りがありました。本来、Chiパラメータは水素原子は計算に含めないはずです。Smilesの構造から3次元分子を作る際に水素を付加させていました。この付加の影響でRDKitの計算結果のうち特にChiパラメータなどが大きくずれてしまっていました。

EPA T.E.S.T. 2019.1.23
EPA(United States Environmental Protection Agency:米国環境保護庁)からTESTと言うフリーウエアーが配布されている。TESTというのは、Toxicity Estimation Software Toolの略だ。毒性をやるのであれば非常に優れたソフトであるのでインストールしておこう。また毒性に関連して非常に有用なデータセットも提供されている。その解析例を作ったので自分でやってみよう。 識別子作成ソフトとしても非常に優れている。内部的にはCDK(Chemistry Development Kit)を使っている。このCDKも古くから定評のあるソフトウエアーだ。それ以外、EPAからはEPI Suiteと言うソフトも公開されている。EPI (Estimation Program Interface)はWindows版しか無いので使ったことがないが中に入っているデータセットは有用だ。

Avogadro
Webベースではないが、Mac,Windowsで使える分子の3次元表示のプログラムとして著名なソフトウエアーである。内部的にはOpenBabelを用いてファイル構造変換を行なっている。時々クラッシュするし、更新されていなかったので余り使っていなかった。全く別件で調べていたところ、Open ChemistryからAvogadro2の形で配布されているのを見つけた。時間を見つけて使い方を紹介しよう。

OpenBabel
Babelというソフトも息の長いソフトだ。分子構造のフォーマットを変換するソフトとして長く使われている。ここでは主にSMILESの構造式から、3次元分子構造への変換に用いる。SDFフォーマット中の3次元構造は基本的にはmolフォーマットと同じである。ただし、molフォーマットは、2次元のもの、水素を付加しないものなど中途半端なものが多いので、pirikaではmolフォーマットは採用せず、mol2フォーマットを採用している。Winmostarとの連携はmol2フォーマットで行う。rdkitではSDFのファイルフォーマットには変換できるのだが、mol2などのフォーマット、分子軌道計算を行う用のフォーマットに変換できるOpenBabelは重要だろう。自分はMacを使っていると、iBabelというGUI付きのソフトが公開されている。非常に使い勝手が良い。JavaScript用のopenbabel.jsも公開されているが、まだ完全では無いようだ。水素の付加がうまくいかない。

JSmolなどの分子の3次元表示ソフト
JSmolというのは、JmolのJavascript版で、分子を3次元表示するソフトウエアーである。元々はJava版であったが、Javaがそのセキュリティーの問題からアプレットしては使われなくなった。そこで、Javascript版として復活してきたのかもしれない。RDKitやOpenBabelと連携を取ろうかと思ったが、最近のOSではセキュリティーの関係で404エラーが出てしまうので、とりあえずは自作の3次元表示ソフトの方を使う。見栄えはJMolほどは良くないが、RDKitの吐き出す3D構造の妥当性を検証するには手軽である。RDKitの古いバージョンでは、二重結合に付加する原子が同じ平面に乗らなかったが、新しいバージョンでは直っていた。

SDFファイルの取り扱い
分子のSDFフォーマットというのは、原子の3次元位置や結合を示すmolフォーマットに様々な物性値や名称、CAS番号などを書き込んで、さらに複数の分子をひとまとめにしたファイル・フォーマットです。大きいものでは数千分子をひとまとめにしたものもある。これを1分子1行の表計算フォーマットに変換するソフトを作ってみた。データをSDFフォーマットでダウンロードした場合にはこのように処理します

フリーのWebサービス
PubChem:
化合物の情報を得たいのであれば、このサイトはピカイチです。
PubChem Identifier Exchange Service
というのがあって、CAS番号、PubChem CID, InChis, Smilesなどの分子を特定するIdentifierを他のものに一括変換できます。変換スピードが早いのが特徴です。

CTS, The Chemical Translation Service:
このページも化合物の名称などから、様々な分子のIdentifierへ変換してくれます。対応するフォーマットが広いのはいいですが、変換は遅いです。