OpenBabelではSWIGを用いて、そのほとんどクラスをPythonから利用できるようにしています(Perlからも利用できるみたいです)。
OpenBabelを普通にインストールしただけではPythonから利用できないので、ちょっとしたインストール作業が必要です。
1. openbabel-2.0.1.tar.gzを展開したディレクトリに移動します。
>cd $OpenBabelSrc/openbabel-2.0.2/scripts/python
2. ビルド、インストール作業を行います。
>python setup.py build
>python setup.py install
これで、PythonからOpenBabelのクラスが利用できるようになります。
3. 簡単なサンプルプログラムを動かしてみます。
sample.py:
import openbabel
mol = openbabel.OBMol()
conv = openbabel.OBConversion()
conv.SetInAndOutFormats("smi","mdl")
conv.ReadString(mol,"c1ccccc1O")
print mol.NumAtoms()
mol.AddHydrogens()
print mol.NumAtoms()
conv.WriteFile(mol,'phenol.mol')
実行:
$python sample.py
出力:
7 <-水素なしの時の原子数
13 <-水素ありの時の原子数
出力ファイル(phenol.mol):
OpenBabel
13 13 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 C 0 0 0 0 0
0.0000 0.0000 0.0000 O 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
0.0000 0.0000 0.0000 H 0 0 0 0 0
1 6 2 0 0 0
1 2 1 0 0 0
1 8 1 0 0 0
2 3 2 0 0 0
2 9 1 0 0 0
3 4 1 0 0 0
3 10 1 0 0 0
4 5 2 0 0 0
4 11 1 0 0 0
5 6 1 0 0 0
5 12 1 0 0 0
6 7 1 0 0 0
7 13 1 0 0 0
M END
OpenBabelでは、まだ2次元座標の生成機能がないこともあり、xyzが全て0となります。
ScriptからOpenBabelを利用できるとコンパイル作業もなく便利ですね。

人気ブログランキング(クリックして応援してね)