目的
pythonライブラリにあるRdkitを使って、化合物を2次元可視化すること※ちなみに、これを書いた人は完全な文系であるため、専門的知識はない。(本やネットで得た知識を自分なりに解釈をしている。)そのため、間違っていたら、ご教授を願いたい!
実装
まずは、データ入手から始める。 今回は、pythonライブラリの1つである「pubchempy」を使って、[pubchem](https://pubchem.ncbi.nlm.nih.gov/)から化合物データを入手する! ※pubchempyはAnacondaから入手できる(https://anaconda.org/bioconda/pubchempy)from rdkit.Chem import Draw #可視化する時に使う
import pubchempy as pcp #pubchemからデータを入手に使う
まずはこれらをインポートをして置く。
columns = ['IUPACName', 'MolecularFormula', 'CanonicalSMILES']
先にpubchemから入手しておきたいカラム名をリスト型で決めておく。(左から、「IUPA名、分子式、smiles」)
今回は、「セロトニン」をpubchemから取ってくる。
#次に、セロトニンをpubchemからDataFrameに取得
sample.py
sero = pcp.get_properties(properties, 'Serotonin','name', as_dataframe=True)
sero #=> CanonicalSMILES:C1=CC2=C(C=C1O)C(=CN2)CCN IUPACName:3-(2-aminoethyl)-1H-indol-5-ol MolecularFormula:C10H12N2O
sample.py
pcp.get_properties(properties, 'Serotonin','name', as_dataframe=True)
as_dataframe=Trueにすることで、pandasのDataFrameのような形になります。
#次に、可視化をして行きます。
sample.py
a = sero.iloc[:, 0].values
for i in a:
mol = Chem.MolFromSmiles(i)
Draw.MolToImage(mol) #=>MolToImageが描写するメソッド
あまり美しくないが、今回は「可視化」が目的なので省略します。
これによって、出されるのが
このように表示されます。Wikiやpubchemで実際の形を見てみると、左右逆になっているが、とりあえずOKかな!?
(SMILES式で描写しました。違ったら指摘してください)
#まとめ
今回は、Rdkitを使って描写をしたが、他にも計算や三次元の描写ができるらしい。まだまだ使い始めたばかりだが、挑戦して行きたい。
#参考文献