I already now about the Optimize.py plugin, which seems to be working well, but I don't see an option to prevent it from changing double bonds to single ones. If Optimize isn't capable of such, how can I achieve a minimized molecule from a hand-built one?

As far as I know Optimize uses Open Babel. I could imagine that the problem is, that it doesn't export the state of bonds at all.


1 Answer 1


Disclaimer: I don't typically use PyMol, so I only made a quick look at the Optimize.py script.

You're right that the problem is with the bond orders. The Optimize.py script uses a PDB file as an intermediate representation that it sends to Open Babel for force field optimization and other properties.

The problem is that PDB does not support bond orders. So yes, you don't get double-bond information back, and I can't verify if Open Babel is getting bond orders from PyMol and Optimize.py.

I looked through the PyMol commands and it seems as if there's a way to write an MDL Molfile (which would have bond orders) but not read one - PDB is the only option for reading and writing in a PyMol script.

My suggestions:

  • Either push the PyMol developers to support other formats (e.g., Sybyl .mol2 or MDL Mol) in the scripting commands.
  • Use another program like Avogadro to draw and optimize the geometry and export to read into PyMol later.

(Disclaimer: I'm an Avogadro and Open Babel developer, but there are many programs that could be used.)

  • $\begingroup$ Unfortunately I have a "QGLFramebufferObject: Framebuffer incomplete, missing attachment" error with Avogadro, but not with Avogadro2 which works correctly $\endgroup$
    – FloriOn
    Jan 30, 2016 at 19:34
  • $\begingroup$ What OS do you use? (and what graphics driver?) $\endgroup$ Jan 31, 2016 at 2:46
  • $\begingroup$ Linux with ati fglrx $\endgroup$
    – FloriOn
    Feb 1, 2016 at 14:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.