ケモインフォマティクス とは?/化学構造データを読み込もう
このブログはケモインフォマティクスも一応テーマにしているので、その内容も少しずつ書いていこうと思います。
偉大なる先人のブログを見れば事足りそうですが・・・
こことか
こことか
こことか
そもそもケモインフォマティクスとはいったいなんなのか?
定義は色々あると思いますが、
「コンピューターを用いて化学の課題にアプローチする」
というざっくりとした定義でいいと思います。つまり、最近流行の AI や機械学習を使うことはもちろん、化学データを画面に表示させることや量子化学計算、分子動力学計算もケモインフォマティクスの領域とみなせますし、有機合成や分析化学など、実験と組み合わせたっていいのです。
化学の問題を扱うには、まずはデータを読み込む必要があります。
化学者にとって馴染み深い構造式のデータは、「SD file」として扱うことが多いです。拡張子は .sdf です。sdf データの作り方はいずれ述べるとして、データを読み込むのにはどうすればいいのか。
Python で化学データを扱うには、「RDKit」というライブラリが非常に強力です。RDKit を使いこなせると、ケモインフォの世界がグッと広がります。
手元のパソコンで RDKit を使えるようにするのは簡単で、anaconda をインストールして conda コマンドを使えるようにした上で、
mac: ターミナルで conda install -c rdkit rdkit を実行
windows: Anaconda prompt を開いて conda install -c rdkit rdkit を実行
すると使えるようになります。
データの読み込みも簡単で、Python3 で以下のようにできます。
〜
import numpy as np
import pandas as pd
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
data = Chem.SDMolSupplier("../data/logSdataset1290_2d.sdf")
data[0]
〜
1~4 行目はライブラリの読み込みです。
NumPy は Python で行列を扱うためのライブラリ、Pandas はデータフレームを扱うためのライブラリです。とりあえず「おまじない」だと思って読み込みましょう。4 行目の IPythonConsole は Jupyter Notebook で構造式を表示させるためのクラスで、これもとりあえず読み込んでおくと良いです。
5 行目が重要で、 Chem.SDMolSupplier という関数を使うと、sdf データを読み込めます。( ) の中はデータの名前と場所を示しています。つまり、実行しているコードと別のフォルダにデータがあっても、パスを正しく記載すれば、読み込むことが可能となります。他に注意すべき点としては、( ) の中は文字列として扱う必要があるので、両端をダブルクォーテーション(")で囲む必要があります(クォーテーション ' でもいいです)。
data という変数の型は supplier という形式で、複数の化合物データが入っています。それを、対応する番号を指定することで、任意の化合物データを mol クラスとして取り出すことが可能です。
データの読み込みを説明するだけで意外と長くなった上に、色々用語が出てきてわかりにくくなってしまいました。もしかしたら、今後改訂するかもしれません。