PyAutoFEP icon indicating copy to clipboard operation
PyAutoFEP copied to clipboard

prepare_dual_topology.py should generate position restraint files for the ligands and, when using system builder, for the receptor

Open insukjoung opened this issue 4 years ago • 3 comments

According to some energy minimization and MD mdp files, positional restrains are desirable. However, the topology files do not have [ position_restraints ] in both complex and ligand systems. Also, the definition has a different name. In the complex topology generated, the definition name is POSRES not POSRES_PROTEIN. Input files such as min01.mdp requires POSRES_PROTEIN as the definition name. I manually add [ position_restraints ] after calling prepare_dual_topology, but it looks like prepare_dual_topology should handel it.

insukjoung avatar Jan 02 '22 05:01 insukjoung

I am not sure what topology file you are describing. No topology files are provided by default, so the topology files you are observing may lack a [ position_restraints ] directive. In case you are using the system builder, GROMACS adds a #ifdef POSRES to the topology file for each chain or to the end of the system topology file. Indeed, the names in min01.mdp and nve.mdp should match the GROMACS defaults. Also, it would be useful to automatically generate ligand position restraints in any case. So here whats I am doing:

  • Using POSRES instead of POSRES_PROTEIN in the min01.mdp and nve.mdp
  • Generating a ligand position restrains automatically

luancarvalhomartins avatar Jan 06 '22 22:01 luancarvalhomartins

I use parmed to generate the topology. By default parmed does not generate position_restraints in the topology file for both ligand and protein systems. Currently, there is no position_restraints in the topology file generated by prepare_dual_topology using these topology files. Only water molecules show position_restraints and the definition name is 'POSRES'. Adding position_restraints manually is not a big deal. It is not appropriate to use POSRES instead of POSRES_PROTEIN. I think it is the user's responsibility to create position_restraints on the receptor part. However, since the ligand topology is reconstructed due to topology mixing, the position_restraints on ligands should be added either automatically or manually.

insukjoung avatar Jan 07 '22 00:01 insukjoung

I use parmed to generate the topology. By default parmed does not generate position_restraints in the topology file for both ligand and protein systems.

Hum, I never used parmed to prepare topologies, but I guess that's a common choice, given how popular parmed is. Maybe prepare_dual_topology.py should run gmx genrestr for proteins when the system builder is used.

It is not appropriate to use POSRES instead of POSRES_PROTEIN. I think it is the user's responsibility to create position_restraints on the receptor part. However, since the ligand topology is reconstructed due to topology mixing, the position_restraints on ligands should be added either automatically or manually.

I agree. I would say that using -DPOSRES in the mdp means "restraint everything possible, but waters". That's why I used POSRES_PROTEIN. I think that prepare_dual_topology.py should handle receptor restraints when the system builder is used.

luancarvalhomartins avatar Jan 07 '22 21:01 luancarvalhomartins

This had been fixed by c6e427c and f20b3c0.

luancarvalhomartins avatar Jan 11 '23 21:01 luancarvalhomartins