pirika logo

ホームページ Pirikaで化学 ブログ 業務案内 お問い合わせ
Pirikaで化学トップ 情報化学+教育 HSP 化学全般
情報化学+教育トップ 情報化学 MAGICIAN MOOC プログラミング
MAGICIANとは、材料ゲノム(Materials Genome)、材料情報学(Materials Informatics)、情報化学(Chemo-Informatics)とネットワーク(Networks)を結びつけて(Associate)いかれる人材です。
プログラミング・トップ 親子で JavaScript演習 化学系 HSPiP用

化学系プログラミング

2021.2.9改訂 (2020.2.7)

化学,薬学系の親子で楽しみながらプログラミング

小学校、中学校でもプログラムが必要になってきています。
でも、教える教師が十分でない事も多いようです。

子供の勉強にかこつけて、プログラミングを勉強しましょう。 学校の先生が利用するのもウエルカムです。

Javascript化学系演習

私のプログラムは素人なので汚いです。
だから人には見せたくないです。

化学者以外に教えるつもりもありません(教えられるとも思っていません)。

早く誰かにバトンタッチできれば、それにこしたことはありません。

取り敢えず、化学系の学生が知っておいた方が良いJavaScriptのコマンドと使い方をまとめ始めました。

(▶︎をクリックして開く) 日本でHSPiP(Hansen Solubility Parmeters in Practic[実践ハンセンの溶解度パラメータ])を販売し始めて10年以上になります。多くのユーザーがHSPiPを利用して、特許、論文を書いてくださるので、知名度もとても高くなってきました。

このHSPiPの中に、私の作成したY-MB(Yamamoto Molecular Break)機能が搭載されています。元々は、名前の通り「分子を分割する山本のアルゴリズム」です。

SMILESの分子構造式を原子団に分割します。それと物性推算機能を組み合わせたので、YMBは物性推算法と考えている人も多くいるようです。

YMBは山本が作る化学系のプログラムぐらいに思ってください。

YMBの元の機能

物性推算機能、Y-MB(Yamamoto Molecular Break)は、溶解性を扱うときに、HSPだけでは足りない機能、例えば蒸気圧などを取り扱うために搭載されました。元々は、名前の通り「分子を分割するアルゴリズム」です。SMILESやIncheの分子構造式を原子団に分割します。

例えばJOBACK法を用いて臨界定数を推算しようとしたときに、各分子の原子団の数が必要となります。
Van Krevelen法を用いてポリマーの物性値を推算したいときには、高分子に含まれる原子団の数が必要になります。
気液平衡を推算する場合にはUNIFACの原子団の数が必要になります。
様々な推算式が必要とする原子団は、種類と加算値が異なるので異なるテーブルを用意しなければなりませんでした。

実際に原子団寄与法で推算式を構築していると、原子団を増やしたり減らしたりは頻繁に行われます。その度にテーブルを作り直す手間は非常に大きいのです。

また、間違った原子団認識、例えば、エステル基をケトン基とエーテル基のように間違って認識すると、意図とは全く違う結果を与えてしまう事があります。

YMBはそうした問題点を吸収してくれるように設計したものです。

物性推算式については、pirika.comの化学で扱います。
その解析ツールについては情報化学で扱います。

YMBは、マテリアルズ・インフォマティクス (MI)の識別子ジェネレーターとしても盛んに用いられるようになってきました。

材料ゲノムやMIをやろうとした時には目的変数と説明変数が必要になります。
目的変数は文字通り、目的とする材料物性の値です。
説明変数はその材料物性を説明する変数です。

HSPやYMBによる熱物性値推算値を用いたMI式は、情報の流れがはっきり分かる式になるので利用が増えているのでしょう。

そうした、YMBの作者として、特に化学系のプログラミングに関して、最近とても危惧しています。
レゴブロックのようなpython系のプログラム言語は利用者の裾野を広げるにはすごく役に立っているとは思います。
でも、ロジックを組むというプログラム能力は、世界レベルと比べどんどん低下していると思います。

特に、化学系は化学特有の問題があるので、化学者でないとできない事がたくさんあります。

化学者の
化学者のための
化学者による
化学系プログラミング講座。
化学を知らないデータ・サイエンティストに負けない力をもとう。

とTwitterで呟いたところ、
「写経するようにプログラムを書いた事がある」
とコメントを頂きました。

非常に大事な点で、私は1981年から化学系のプログラムを書いてきました。
当時は、ソースコードを打ち込まなければ、PCは動きもしませんでした。
そこで、「写経のように」良いソースコード(Fortran)を読んで写す(移す:C)を繰り返しました。

2021.6   この講座の成果物とも言えるGROVE解析ツールがリリースされました。

現在は、レゴブロックのように、モジュール化したブロックを組み合わせるだけになってしまったように思えます。

同じ化学系のプログラミングでも、情報化学系のプログラミングは情報化学で扱います。

化学系プログラミング

私は、高校の時カシオのFX-502Pを入手して以来、プログラムを作り続けてきました。

いわゆる、職業プログラマーではありません。
メモリーの使用量を下げるとか、高速化などはほとんど興味がありません。
自分の専門である化学を助けるためだけのソフトが、望むべくはMac, Windows, Linuxで動作してくれればいいのです。

開発言語をJAVAに切り替えたのは、Appleがやばくなった時に、ソフト資産を守ためです。
生まれたてのJAVA言語は、意図しない動作(言語のバグ?)もあり、それが私のプログラミング上のバグなのか分からずに随分苦労しました。OSの出来も悪く、すぐにクラッシュしました。

だから私のプログラミングのやり方は、非常にシンプルな機能しか使いません。
化学の実験と同じように、あーしてみて、こーしてみてを繰り返し、何となく動くようにしてしまっています。

だから、プログラミングの専門家を育成するつもりはありません。
あくまでも、化学の専門家が、化学現象をコンピュータで扱うのに必要なプログラミング・スキルを身につけるのを手伝うだけです。

また、私は数学が嫌いで、化学の道に入りました。
そこで、数理統計を教えるつもりもありません。
あくまでも、化学をやろうとした時に、数学者の数理統計ではダメな部分を回避するプログラミング・スキルを身につけるのを手伝うだけです。

マイコン、パソコンの聰明期には、良い本が沢山ありました。
また、逆にそうした本に載っているプログラムを自分で打ち込まない限り、パソコンは(ゲーム以外)何もできなかったのです。

今は、Excelを使ったXXXとか、Pythonを使ったXXXで、プログラムなど作成する必要性すら無くなってきました。
逆にいえば、「こんな事がしたい」その為には「XXXを実現する必要がある」と考える力が極端に衰えてしまっているように思えます。

のび太はしょうもない奴だけど、「こんな事がしたい」があるから、ドラえもんは助ける事ができます。

「こんな事がしたい」に対して、逆さ引きの書籍を利用していくのもいいでしょう。
それを進める前に、どんな準備が必要なのか「化学系の例題」を見ておくのは悪く無いと思います。その先の何かがインスパイアーされるかもしれません。
昔からPirikaに置いてあったものですが、リニューアルの際に欠落していたものです。

HSPiP用のプログラム

HSPiPはWindows用のソフトです。
Abbott教授はVisual Basicで開発を行なっています。

私はMac使いです。
開発は、最近はJavaScriptを、以前はJavaやC#を使っています。

Java, Javascript, C#はほぼ文法は同じなので、山本の作ったコードは、C#に書き直してHSPiPに搭載されます。

古い記述。(▶︎をクリックして開く) 売り物のHSPiPはそれでいいのですが、試しに作った機能などは、Macで動作確認したい事が多いです。
その際にはJavaScriptの方が便利です。
使うコマンドを制限すれば、AndroidやiPadのブラウザーでも動かす事ができます。

HSPiP用に作った古いJavascriptのプログラムをまとめておきます。

もしかしたら、そうしたプログラムにインスパイアーされて、プログラミングの道に入る人が出てくることを願って。

ユーザーのフィードバックを元に機能を拡張してきましたので、できる事が増えました。また、逆に、誰も使わない機能は容赦なく切り捨てられてきました。

実際には日本からのフィードバックはほとんどありません。すると、これまで使ってきた機能が、「バージョンアップと共に使えなくなった」という事も頻繁に起きています。

欧米系の研究者のフィードバックにより、欧米系の研究者が使いたい機能が搭載されていくというのは、日本人の開発者としては歯痒いことではあります。

説明変数に原子団の数を入れるのは古くから行われています。「原子団寄与法」と呼ばれます。

最近は、量子化学計算結果やトポロジカル・インデックスなどを入力する事が多くなってきました。
どんな分子も計算できるので説明変数として優れているのですが、目的変数との関係はニューラル・ネットワークの作り出すブラックボックスとなる事が多いようです。

溶解度パラメータというのは分子間力を表す指標で、実験値から導き出されます。

それを3次元に分割したハンセンの溶解度パラメータ(HSP)は、ハンセン先生、アボット教授、山本の三人がある意味「恣意的」に決めている値であり、実験値ではありません。

YMBは他のMOOCMAGICIANの基礎となる技術なので考え方をしっかり学んんで欲しいと思います。

HSPiPを用いた様々な応用記事はpirika/ HSPで紹介しています。自分のやりたいことと似たものが無いか探してみましょう。


Copyright pirika.com since 1999-
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。