化合物の立体構造を計算したい

openbabel-2.2.0のpythonバインディングはOBBuilderを呼べないのでラッパーを使います。OBOp.FindType('Gen3D')がそれです。

import openbabel

obConversion = openbabel.OBConversion()
obConversion.SetInAndOutFormats("smi", "mdl")
 
mol = openbabel.OBMol()
obConversion.ReadString(mol, "c1ccccc1")

builder = openbabel.OBOp.FindType('Gen3D')
builder.Do(mol)

mol.AddHydrogens()

print obConversion.WriteString(mol) 

ただし、これで得た構造は荒いので、最適化構造を求めたければさらに精度の高い計算を行う必要があります。