I am playing around with Molecule to run simple optimization on several water molecules in a single frame. The Molecule function only seems to create coordinates for a single molecule to use in MoleculeModify[mol,"EnergyMinimizeAtomicCoordinates"].

However, if I simply try to export disconnected molecules as pdb or sdf, the atomic coordinates are generated reasonably well.

So, it appears that Molecule function can create reasonable coordinates even for disconnected entities, however, energy minimization cannot be done yet. Does anyone know how to get energy minimization for disconnected entities to work in Mathematica? I wonder if there are any plans to extend Molecule's functionality to cover such cases.

Thank you,

Version:"13.2.0 for Linux x86 (64-bit) (December 7, 2022)"


1 Answer 1


I don't quite agree with this statement

Molecule function can create reasonable coordinates even for disconnected entities

The individual fragments are embedded in 3D separately and then just arranged so that they don't overlap, there isn't really any physics involved in the layout of the fragments.

disconnected = Molecule["water propane benzene caffeine sodium chloride"];
MoleculePlot3D[disconnected] (* gives a message warning about the bad coordinates *)

enter image description here

That being said, you can experiment with the force field settings by running

With[{symbol = Symbol@First@Names["*`RDGetMMFF"]},
 SetOptions[symbol, "IgnoreInterfragInteractions" -> False]

to try for a better result in the minimization

disconnected // MoleculeModify["EnergyMinimizeAtomCoordinates"] // MoleculePlot3D

enter image description here

I can't really say whether the resulting coordinates are reasonable though. This is far from a molecular dynamics simulation.

  • $\begingroup$ Thank you so much for showing how it could be achieved. I have a follow-up small question. Would it be possible to combine two Molecule objects to export out a single pdb/sdf file? Say, I had Molecule["Pentane"], Molecule ["Heptane"] and I would like to create conformers of each and combine them as pairs into a single pdb for further processing. Thanks a lot! $\endgroup$
    – bhopshang
    Commented May 14, 2023 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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