Skip to content

Instantly share code, notes, and snippets.

@ghutchis
Created January 24, 2020 20:52
Show Gist options
  • Save ghutchis/c6734e91828d0c13daff246d8909e0ae to your computer and use it in GitHub Desktop.
Save ghutchis/c6734e91828d0c13daff246d8909e0ae to your computer and use it in GitHub Desktop.
Open Babel optimizer
#!/usr/bin/env python
import sys, os
from openbabel import pybel
# read through multiple files on command-line
for argument in sys.argv[1:]:
filename, extension = os.path.splitext(argument)
# read the molecule from the supplied file
for mol in pybel.readfile(extension[1:], argument):
ff = pybel._forcefields["mmff94"]
success = ff.Setup(mol.OBMol)
if not success:
ff = pybel._forcefields["uff"]
success = ff.Setup(mol.OBMol)
if not success:
sys.exit("Cannot set up forcefield")
ff.ConjugateGradients(100, 1.0e-3)
ff.WeightedRotorSearch(100, 25)
ff.ConjugateGradients(250, 1.0e-4)
ff.GetCoordinates(mol.OBMol)
mol.write("sdf", "test.sdf", overwrite=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment