[Pythonコードあり] GTMR(Generative Topographic Mapping Regression)でデータの可視化・回帰分析・モデルの適用範囲・モデルの逆解析・化学構造生成をいっぺんにやってしまいます! (物性・活性が2つ以上でもOK)

またまた Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムへの、新たな機能追加です。

GitHub - hkaneko1985/structure_generator_based_on_r_group: Structure Generator based on R-Group (SGRG)
Structure Generator based on R-Group (SGRG). Contribute to hkaneko1985/structure_generator_based_on_r_group development ...

 

前回はベイズ最適化 (Bayesian Optimization, BO) の追加でして、

[Pythonコードあり] ベイズ最適化で所望の物性や活性となる確率の高い化学構造を生成する (物性・活性が2つ以上でもOK)
Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムへの、新たな機能追加です。今回の機能追加でバージョンを 1.0 → 2.0 としました。 SGRG に...

 

今回の機能追加もバージョン 2.0 への追加となります。SGRG に関するこれまでの流れはこちらをご覧ください。

 

誘導体の化学構造を自動生成するプログラムを作りました。ご自由にお使いください
研究の関係で、ある骨格の誘導体の化学構造を生成したいことがありまして、生成したあとはその化学構造の活性だったり物性だったりを推定するので、Python で構造生成機を作ってしまいました。Github にありますので、必要な方はご自由にお使い...
Structure Generator based on R-Group (SGRG) を使って何ができますか?
こちらにおいて、 誘導体の化学構造を自動生成するプログラム Structure Generator based on R-Group (SGRG) の話をしました。 今回は SGRG を活用してどんなことができるのか、について書いておきます...
メインの骨格を適当に変えたり、側鎖を適当に変えたりして、新たな化学構造を生成するPython プログラムを公開します
以前に、Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムを公開しました。 こちらは、メインの骨格を一つに設定して、その自由結合手に結合する側鎖を、フラ...
物性や活性の推定値が大きくなるように、メインの骨格と側鎖を遺伝的アルゴリズムで最適化して、新たな化学構造を生成するPythonプログラムを公開します
以前に、Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムを公開しました。 メインの骨格を一つに設定して、その自由結合手に結合する側鎖を、フラグメントの...
[Pythonコードあり] ベイズ最適化で所望の物性や活性となる確率の高い化学構造を生成する (物性・活性が2つ以上でもOK)
Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムへの、新たな機能追加です。今回の機能追加でバージョンを 1.0 → 2.0 としました。 SGRG に...

 

今回は、回帰モデルを構築するだけでなく、データの可視化も一緒に行いたい人向けのプログラムです。

以前に Generative Topographic Mapping (GTM) で回帰分析を行う Generative Topographic Mapping Regression (GTMR) という手法を開発しました。

Generative Topographic Mapping(GTM)でデータの可視化・回帰分析・モデルの適用範囲・モデルの逆解析を一緒に実行する方法 [金子研論文]
今回は、Generative Topographic Mapping (GTM) でデータの可視化・回帰分析・モデルの適用範囲・モデルの逆解析を一緒に実行できる手法を開発し、QSPR 解析・QSAR 解析と分子設計を行った論文が、molec...

 

なかなか面白い手法だと思っていまして (自画自賛)、データの可視化・回帰分析・モデルの適用範囲・モデルの逆解析を同時に行うことができるんです。しかも、物性・活性の数が複数でも、同様に扱うことができます (というか、GTMR では目的変数と説明変数の区別がありません)。

データセットと物性・活性の目標値が与えられましたら、GTMR だけを行うことで、二次元平面にサンプルをプロットして、記述子の値から物性・活性の値を推定して、物性・活性の目標値から記述子の値を推定して、目標値に対応する二次元平面上の座標を決めることができます。それぞれの “推定” にはモデルの適用範囲が考慮されています。

例を用いて具体的に示します。前回

[Pythonコードあり] ベイズ最適化で所望の物性や活性となる確率の高い化学構造を生成する (物性・活性が2つ以上でもOK)
Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムへの、新たな機能追加です。今回の機能追加でバージョンを 1.0 → 2.0 としました。 SGRG に...

 

でも扱ったサンプルデータセットである、水溶解度が測定された化合物において、仮想的な物性を 2 つ追加して目的変数の数を 3 つにした molecules_with_multi_y.csv を用います。

GTMR でモデルを構築すると、下のように 3 つの物性の値ごとに色付けしてデータを可視化できます。

 

各サンプルの座標は 3 つの図においてすべて同じです。もちろん可視化だけでなく、回帰分析・モデルの逆解析も、モデルの適用範囲を考慮した上で、行われますので、たとえば 3 つの物性の目標値 [1, -60, 30] となる二次元平面での座標を計算することもできます。

 

 

上の図で、赤いバツの位置が目標の物性値に対応する座標です。この座標は記述子空間における座標にも対応しています。

この座標、つまり記述子の値の組み合わせを目指して、化学構造を生成させます。具体的には、遺伝的アルゴリズム (Genetic Algorithm, GA) により目的関数を、目標の記述子の値の組との距離の逆数にして、化学構造を最適化します。結果的に、モデルの適用範囲を考慮した上で物性・活性の目標を満たす確率の高い化学構造が得られます。

こちらからご利用ください。

GitHub - hkaneko1985/structure_generator_based_on_r_group: Structure Generator based on R-Group (SGRG)
Structure Generator based on R-Group (SGRG). Contribute to hkaneko1985/structure_generator_based_on_r_group development ...

 

コードは structure_generator_based_on_r_group_ga_multi_y_gtmr.py です。基本的な使い方はこれまでと同じです。

 

target_y_value = [1, -60, 30]

 

で物性・活性の目標値を順番に設定してください (上の例では、1つ目の物性の目標値が 1、2つ目の物性の目標値が -60、3つ目の物性の目標値が 30 になります)。

また GTM のハイパーパラメータは

 

  • shape_of_map = [30, 30]
  • shape_of_rbf_centers = [8, 8]
  • variance_of_rbfs = 0.03125
  • lambda_in_em_algorithm = 0.5

 

で設定します。これらのハイパーパラメータの最適化に関しては、目的変数がありますのでクロスバリデーションで最適化するとよいでしょう。GTMR のハイパーパラメータをクロスバリデーションにより最適化するコードはこちらの demo_opt_gtmr_with_cv_multi_y.py です。

GitHub - hkaneko1985/gtm-generativetopographicmapping: GTM (Generative Topographic Mapping)
GTM (Generative Topographic Mapping). Contribute to hkaneko1985/gtm-generativetopographicmapping development by creating...

 

とりあえず実行してどんな構造が生成されるか、確認するとよいと思います。

ぜひご活用ください。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました