[Pythonコードあり] ベイズ最適化で所望の物性や活性となる確率の高い化学構造を生成する (物性・活性が2つ以上でもOK)

シェアする

Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムへの、新たな機能追加です。今回の機能追加でバージョンを 1.0 → 2.0 としました。

https://github.com/hkaneko1985/structure_generator_based_on_r_group

SGRG に関するこれまでの流れはこちらをご覧ください。

誘導体の化学構造を自動生成するプログラムを作りました。ご自由にお使いください
研究の関係で、ある骨格の誘導体の化学構造を生成したいことがありまして、生成したあとはその化学構造の活性だったり物性だったりを推定するので、P...
Structure Generator based on R-Group (SGRG) を使って何ができますか?
こちらにおいて、 誘導体の化学構造を自動生成するプログラム Structure Generator based on ...
メインの骨格を適当に変えたり、側鎖を適当に変えたりして、新たな化学構造を生成するPython プログラムを公開します
以前に、Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プロ...
物性や活性の推定値が大きくなるように、メインの骨格と側鎖を遺伝的アルゴリズムで最適化して、新たな化学構造を生成するPythonプログラムを公開します

前回は、回帰モデルから計算された物性や活性の推定値が大きくなるように、遺伝的アルゴリズム (Genetic Algorithm, GA) によりメインの骨格と側鎖を最適化するプログラム structure_generator_based_on_r_group_ga.py では、確かに物性・活性の推定値が向上する化学構造が得られるのですが、モデルの適用範囲 (Applicability Domain, AD) は考慮されていませんでした。

モデルの適用範囲・モデルの適用領域 (Applicability Domain, AD) ~回帰モデル・クラス分類モデルを使うとき必須となる概念~
今回は、モデルの適用範囲・モデルの適用領域 (Applicability Domain, AD) についてです。AD は回帰モデル・クラス分...

そこで今回は、AD ももちろん考慮されている、ベイズ最適化 (Bayesian Optimization, BO)

ベイズ最適化(Bayesian Optimization, BO)~実験計画法で使ったり、ハイパーパラメータを最適化したり~
ガウス過程による回帰をうまく使って、実験計画法における新しい実験候補を探索したり、回帰モデルやクラス分類モデルのハイパーパラメータ (学習で...

により化学構造を最適化する機能を追加しました。ガウス過程による回帰 (Gaussian Process Regression, GPR)

ガウス過程による回帰(Gaussian Process Regression, GPR)~予測値だけでなく予測値のばらつきも計算できる!~
ガウス過程による回帰(Gaussian Process Regression, GPR)について、pdfとパワーポイントの資料を作成しました...

をして、事前に決めた物性・活性の目標範囲に入る確率を、遺伝的アルゴリズム (Genetic Algorithm, GA) の目的関数にして、構造を最適化するわけです。結果的に、物性・活性の目標を満たす確率の高い化学構造が得られます。

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

https://github.com/hkaneko1985/structure_generator_based_on_r_group

structure_generator_based_on_r_group_ga.py において

method_name = ‘gp’

とすると、今回の機能を利用できます。その下の

target_range = [1, 3]

で目標の範囲を設定してください (上の例では、目標範囲は 1 から 3 までになります)。他のやり方は前回

物性や活性の推定値が大きくなるように、メインの骨格と側鎖を遺伝的アルゴリズムで最適化して、新たな化学構造を生成するPythonプログラムを公開します

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

さらに今回は物性・活性が複数の場合にも、ベイズ最適化によりすべての物性・活性の目標を同時に満たす確率の高くなるような化学構造を生成するプログラムも開発しました。structure_generator_based_on_r_group_ga_multi_y.py です。目的変数ごとの目標範囲を設定するため、settings_of_target_ys.csv という csv ファイルで目標範囲を設定し、同じフォルダ (ディレクトリ) に置く必要があります。最初の settings_of_target_ys.csv では目的変数が 3 つあるときに、

  • 1 つ目: 目標範囲 1 から 5 まで
  • 2 つ目: 目標範囲 20 から 40 まで
  • 3 つ目: 目標範囲 -40 から -20 まで

となっています。これらの値を変更したり、目的変数が 4 つ以上の場合は、新たに列を作成したりしてください。他のやり方は前回

物性や活性の推定値が大きくなるように、メインの骨格と側鎖を遺伝的アルゴリズムで最適化して、新たな化学構造を生成するPythonプログラムを公開します

と同じです。こちらも、とりあえず実行してどんな構造が生成されるか、確認するとよいと思います。サンプルデータセットとして、水溶解度が測定された化合物において、仮想的な物性を 2 つ追加して目的変数の数を 3 つにした molecules_with_multi_y.csv があります。

ぜひご活用ください。

以上です。

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

シェアする

フォローする