見出し画像

化合物の特徴を数値に変換する

こんにちはそんです。前回は、データ解析を活用して材料開発を行う(=MI)の全体像と流れを把握しました。流れはこんな感じ。

MIを材料開発に使う流れ
1. データを取得する
2. データを蓄積・保存する
3. データを使って解析する
4. 提案された新材料候補を実際に作ってみる→1. に戻る

今回は「1.データを取得する」の前段階として、そもそもどんなデータを扱うのかを勉強します。

化合物の特徴を数値に変換する
私がMIを使って一番やりたいのは、化合物の構造と物性の関係を明らかにすることです。つまり、目的変数が物性、説明変数が化合物の構造です。MIで取り扱うにはデータ=数値である必要がありますね。物性とは例えば曲げ弾性率とか屈折率のことで通常は数値で表されていることがほとんどです。これは問題なさそう。では、化合物の構造はどうするのか?

ベンゼンを題材にします。最も速い方法で描画します。

画像1

この時点では「手書きの絵」ですね。絵の状態のままではMIは取り扱えませんから、これをデータ化(=数値化)する必要があります。

当たり前過ぎてわざわざ書くことでもないですが、まず最初にChemdrawMarvinを使って「手書きの絵」を「PC上の絵」に変換します。

スクリーンショット 2022-02-06 13.59.10

描けました。このMarvinで描いた絵は、様々なfile形式で表現することが可能です。一般的にはmol形式またはSMILES形式が使われています。例えば、ベンゼンを各形式で表現するとこんな感じ。

SMILES
C1=CC=CC=C1

MOL file
MJ220100
6 6 0 0 0 0 0 0 0 0999 V2000
-0.0781 2.3875 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7925 1.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7925 1.1499 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0781 0.7374 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6363 1.1499 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
0.6363 1.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 0 0 0 0
2 3 1 0 0 0 0
3 4 2 0 0 0 0
4 5 1 0 0 0 0
5 6 2 0 0 0 0
6 1 1 0 0 0 0
M END

数値が並んでいていかにもMIやってる感が出てきました。

SMILESを分子記述子に変換する(RDkit)
次にSMILESやMOL fileで表現された化学構造を読み込み、その特徴を数値化します。特徴の数値化とはつまりパワプロで言うところの、チャンスA、対左投手D、走塁Cみたいな感じでしょうか。数値化された特徴量のことを、分子記述子、構造記述子、または単に記述子と言います。私の周りでは分子記述子と言ってる人が多いです。

分子記述子は実験で得られた測定値(LogP、モル屈折率、分極率など)と分子の記号的表現から得られる理論的分子記述子の2つに大別されます。理論的分子記述子は化合物の構造を数値で表したものと言い換えることもできます。構造を数値に変換する際に考慮した化合物空間によって、分子記述子のタイプは0~4次元の5つに分類されます。

1. 0D記述子(構成記述子,カウント記述子など)
2. 1D記述子(構造フラグメントのリスト,フィンガープリントなど)
3. 2D記述子(グラフ不変量など)
4. 3D記述子(例:3D-MoRSE記述子、WHIM記述子、GETAWAY記述子、量子化学記述子、サイズ、立体、表面および体積記述子など)
5. 4D記述子(例:GRID法やCoMFA法から得られるもの、Volsurf)

とりあえずここでは「まあ色々あるんやな」くらいの理解で留めておきます。分子記述子は5,000種類くらいあるらしいです。この時点でひとつひとつ理解していくのは現実的ではないですね。

さて、実際にSMILES(or MOL file)を分子記述子に変換する方法はどのようなものがあるでしょうか?一般的に広く使われている方法としては、プログラミング言語としてPythonを、ライブラリとしてRDkit、mordredを使います。ライブラリは他にPaDELやDRAGONなどもあるようですね。違いをちゃんと理解していないですがライブラリによって扱える分子記述子が異なり、RDkitで計算できる記述子は400個程度、mordredは約2,000個のようです。何を解析したいかよってライブラリを使い分けるのかな?この点はまた改めて勉強します。

RDkitを使ってSMILESを分子記述子に変換します。ベンゼンを分子記述子に変換するとこんな感じ。

スクリーンショット 2022-02-06 10.55.39

※横幅が長いので省略しています。

中身を見ると、ベンゼンはChi0n 3.46410161513776、LabuteA 37.431403119497・・・等の特徴を持つ分子と表現できることがわかりました。

以上のように化合物の構造を数値化し、分子記述子によって化合物の特徴まで表現することができました。数値化したことで、コンピュータが化合物の特徴を理解できるようになりました。

次回は1. データを取得する、3. データを解析する、あたりを勉強します。

参考にさせて頂いた記事
RDkitのweb版
web版RDkitの使い方(pirika.com様)
MOL file/SMILESの優しい解説(明治大金子研究室HP)
分子記述子wiki
分子記述子の解説(In-Silico NoteBOOK様)

この記事が気に入ったらサポートをしてみませんか?