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

以前に、Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムを公開しました。

誘導体の化学構造を自動生成するプログラムを作りました。ご自由にお使いください
研究の関係で、ある骨格の誘導体の化学構造を生成したいことがありまして、生成したあとはその化学構造の活性だったり物性だったりを推定するので、Python で構造生成機を作ってしまいました。Github にありますので、必要な方はご自由にお使い...

 

メインの骨格を一つに設定して、その自由結合手に結合する側鎖を、フラグメントの候補の全ての組み合わせとして、化学構造を生成するプログラムでした。

その後に、メインの骨格がいくつかあり、フラグメントの候補もあるときに、それらをランダムに選びながら化学構造を生成する Python プログラムを公開しました。

メインの骨格を適当に変えたり、側鎖を適当に変えたりして、新たな化学構造を生成するPython プログラムを公開します
以前に、Structure Generator based on R-Group (SGRG) という化学構造を生成する Python プログラムを公開しました。 こちらは、メインの骨格を一つに設定して、その自由結合手に結合する側鎖を、フラ...

 

Google の collaboratory でも実行できるようにしました。

Google Colaboratory

 

ランダムにメインの骨格が選ばれると、自由結合手の数が決まり、その数だけランダムにフラグメントを選び構造を作ります。これを繰り返します。

今回は、回帰モデルから計算された物性や活性の推定値が大きくなるように、遺伝的アルゴリズム (Genetic Algorithm, GA) によりメインの骨格と側鎖を最適化するプログラムです。

Python プログラム structure_generator_based_on_r_group_ga.py はこちらの Github にありますので、とりあえず実行してどんな構造が生成されるか、確認するとよいと思います。なお structure_generator.py も一緒のフォルダ (ディレクトリ) に置いてください。サンプルデータセットとして、水溶解度が測定された化合物である molecules_with_logS.csv があります。

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 ...

 

回帰モデルを構築するための化合物データセットも、メインの骨格の候補も、側鎖のフラグメントの候補も、SMILES で読み込む必要があります。SMILES についてはこちらをご覧ください。

化学構造・分子・化合物の扱いに関する基本的なこと
データセットがあると、データセットの可視化・クラスタリング・クラス分類・回帰分析などができるようになったり、モデルの適用範囲を設定したり、実験計画法により実験候補を選択できます。こちらにいろいろな手法の説明があります。 ただ、どの手法を使う...

 

回帰モデルを構築するための化合物データセットの形式は、サンプルデータセットの molecules_with_logS.csv をご覧ください。同様の形式のデータセットを準備すれば、同じようにプログラムを利用できます。今回のプログラムは物性や活性の値を大きくするように化学構造を生成するプログラムなので、もし物性や活性の値を小さくするように化学構造を生成したいときは、あらかじめデータセットにおける物性や活性に -1 をかけておくとよいでしょう。

回帰分析手法として PLS と SVR がありますが、

部分的最小二乗回帰(Partial Least Squares Regression, PLS)~回帰分析は最初にこれ!~
部分的最小二乗回帰 (Partial Least Squares Regression, PLS) について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、PLSで何ができるか、どのようにPLSを計算するかが説...
サポートベクター回帰(Support Vector Regression, SVR)~サンプル数10000以下ならこれを使うべし!~
サポートベクター回帰(Support Vector Regression, SVR)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、SVRで何ができるか、SVRの特徴、どのように計算するかが説明されてい...

 

他にも追加することができます。

サンプルのメインの骨格の候補として sample_main_fragments.smi、サンプルの側鎖のフラグメントの候補として sample_sub_fragments.smi がプログラムと一緒にありますので、ぜひご利用ください。

回帰モデルを構築するための化合物データセットのファイルと、sample_main_fragments.smi と、sample_sub_fragments.smi を、プログラム structure_generator_based_on_r_group_ga.py と同じフォルダ (ディレクトリ) におき、プログラムを実行してください。

プログラム structure_generator_based_on_r_group_ga.py では、number_of_iteration_of_ga で GA による構造生成を何回繰り返すかを指定できます。GA の個体数である number_of_population × number_of_iteration_of_ga の数だけ化学構造が生成されるわけです。

生成された化学構造は SMILES で、回帰モデルによる推定値と一緒に generated_molecules.csv という名前の csv ファイルに保存されます。

メインの骨格の候補や側鎖のフラグメントの候補をご自身で準備して、ファイルの名前をそれぞれ sample_main_fragments.smi, sample_sub_fragments.smi とすれば、それらのメインの骨格や側鎖のフラグメントで、化学構造を生成できます。

 

ぜひご活用ください。

 

以上です。

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

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