m3g / packmol

Packmol - Initial configurations for molecular dynamics simulations
http://m3g.github.io/packmol
MIT License
214 stars 48 forks source link

Output pdb from packmol has rings speared by bonds from other molecules #63

Closed tfhughes closed 2 months ago

tfhughes commented 2 months ago

Please see the attached image and tarball containing packmol input and output. I am trying to build a bilayer involving molecules with rings. Packmol exits with the imperfect packing error which from my experience can simply mean that some restrictions were violated which standard MD can usually resolve. But in this case several rings are speared by atoms from other molecules, for example a bond from one molecule goes right through the center of the ring of another molecule. See the tfh_out.pdb in the attached tarball. Since it is a meta-stable state these are things that standard MD typically can't resolve.

Maybe I am trying to pack to too high a density? Or some other input is obviously wrong? Is there a general strategy to try to avoid such solutions? Any advice is greatly appreciated.

C3237

C3237.tar.gz

lmiq commented 2 months ago

If the packing is not successful, probably the density is too large, indeed.

But, in any case, one way to try to avoid the entangling of molecules is start the packing with a much larger tolerance, such that the molecules repel each other and then the system slowly shrinks to its actual size.

This can be done with the option:

discale 2.0

where 2.0 is the initial scale of the tolerance. For example, if you set tolerance 2.0 the packing will start with tolerance == 4.0 and reduce it progressively (the default is discale 1.1). Using 2.0 or maybe a larger value may alleviate that problem.

tfhughes commented 2 months ago

Just to be sure that is a parameter that goes outside of any structure block, etc. like the following?

tolerance 2 filetype pdb output tfh_out.pdb

seed 123 nloop 100 discale 2.0 sidemax 10000.0

structure solvent.pdb number 29 inside box 0 0 0 20.0 20.0 13.747570705878516 resnumbers 0 end structure

lmiq commented 2 months ago

Yes.

tfhughes commented 2 months ago

Thanks for the reply. For the job in the attached tarball I tried discale values of 1.5, 2, and 3 and at least for this specific example packmol still exits with the imperfect packing error and the best output pdb still has these types of ring-spears. From the user guide I can see that packmol has lots of options for potentially improving solutions. Do you have any other immediate suggestions?

lmiq commented 2 months ago

I'm not sure. What exactly do you want to achieve there?

The solvent molecule has 9.3 Angs of length:

image

And the constraint is inside box inside box 0 0 0 20.0 20.0 13.74, which means a length of 13.74 in one dimension, which is almost the length of the box. Does that density and number of molecules make sense?

lmiq commented 2 months ago

FWIW, with 25 molecules in that same region a proper solution is still found.

lmiq commented 2 months ago

With these options:

tolerance 2
filetype pdb
output tfh_out.pdb

seed 123
nloop 200
sidemax 10000.0

discale 5.0
movebadrandom
packall

structure solvent.pdb
  number 29
  inside box 0 0 0 20.0 20.0 18.0
  resnumbers 0
end structure

structure surfactant.pdb
  number 16
  inside box 0 0 14.747570705878516 20.0 20.0 34.5
  atoms 53 54 79 80
    below plane 0 0 1 24.099579538476977
  end atoms
  atoms 11 13
    over plane 0 0 1 29.56189267646963
  end atoms
  resnumbers 0
end structure

structure surfactant.pdb
  number 16
  inside box 0 0 35.5 20.0 20.0 55.252429294121484
  atoms 53 54 79 80
    over plane 0 0 1 45.90042046152303
  end atoms
  atoms 11 13
    below plane 0 0 1 40.438107323530375
  end atoms
  resnumbers 0
end structure

structure solvent.pdb
  number 29
  inside box 0 0 52.0 20.0 20.0 70.0
  resnumbers 0
end structure

image

I got a configuration that is more or less what you want, I think. (attached here) tfh_out.pdb.tar.gz

tfhughes commented 2 months ago

Thank you for your insight on this. You have given me a few things to think about here. I will go ahead and close this ticket.