マテリアルズインフォマティクス (MI) において最も重要な要素のうちの一つとして、モデルの解釈が挙げられる。

モデルを解釈することで、ドメイン知識と照らし合わせてモデルの正しさを確認することや新たな知見を得ることができる。

化学構造とその化合物の性質を紐づけて解析を行う定量的構造物性相関 (Quantitative Structure-Property Relationship, QSPR) 手法のうちの一つとして、FingerPrintを説明変数、化合物の性質を目的変数として機械学習モデルを構築する方法がある。

この手法について調査したところ、FingerPrintが対応する部分構造とそれに紐づく寄与率を化学構造上に描画することで解釈を行う手法があることがわかった。

これについて検討を行い、実際に描画を行なった結果を以下に示す。


特別なソフトを使わずに化合物の3次元構造を描画できるようにしたかった。

実際、世の中に化合物を描画するソフトはたくさんあるが、基本的に自分だけでなく見る相手にもそのソフトを使用してもらう必要がある場合がほとんどである。

一般に、会社のPCにソフトをインストールするためには複雑な申請が必要であるケースがある(特に大きな会社)。したがって、そういった会社でも使用できるようなブラウザで化合物の三次元構造をグリグリとマウスで動かしながら触れるような形で出力したいと思った。


shapで解析した結果を可視化しようとした際、よくわからないmatplotlibのエラーに遭遇した。

調べても出てこず、色々試した結果うまくいったのでエラーコードと共に対処法を示す。

バグなのか仕様変更なのかはわかっていない。


訳があってRをやらなくてはならなくなった。

環境構築をするにあたってローカルにインストールすることも考えたが、再現性やソフトの競合を避けるという意味でdockerコンテナ上に環境を構築することにした。

単にrstudioのイメージを使用して環境構築することができなかったが、いくつか工夫をすることで対処することが可能だった。

その方法をメモしておく。


自分はコードブロックの表示のために、highlight.jsを利用している。

自分はPCがMac、スマホがAndroidなので、それらでWebサイトの表示を確認していた。

たまたまWindowsでこれを確認する機会があったのだが、システムデフォルトのフォントが適用され、個人的に苦手なフォントになっていた(Windowsのコマンドプロンプトのフォントみたいな感じ、見づらくないだろうか)。

これを改善するために配布されているオープンフォントをサブセット化、圧縮、アップロードを行なったので、その手順を残しておく。


最近の投稿

【matplotlib】なにかプロットされているか確認する関数
matplotlibで描画する関数を自分で定義する際、すでになにかがプロットされている場合は新しいAxesにプロットし、Axesは存在するけれど何もプロットされていない場合はそのAxesにプロットする、のような関数を定義したかったのだが、少しハマったのでメモ。最終的に最善と思われる関数を定義した。
【Python】MutableなSequenceを定義してみた
Pythonの勉強のため、deapにおけるIndividualを例に取ってMutableSequenceな自作クラスを定義してみた。
【備忘録】Google domainsからCloudflare Registrarへ移管
Google domainsからCloudflare Registrarにドメインを移管したときの個人的な備忘録。
optunaでearly-stoppingする
optunaの最適化を終了する方法として主に以下の2つが用いられる。 ある回数試行を繰り返したら終了する (n_trials) ある時間経過したら終了する (timeout) 参考: Python: Optuna で決められた時間内で最適化する - CUBE SUGAR CONTAINER ...
【Python】特定のモジュールがインストールされているか確認する方法
あるパッケージが入っているかどうかを確認する方法にはpkgutilsというモジュールが便利だったので、使い方について備忘録的にまとめる。