Imposing restraints between protein and ligand

Hello everyone,
I am trying to perform a protein-ligand MD simulation, and I want to impose a distance restraint between one atom in my protein and one atom in the ligand.
Could anyone please let me know the best way to impose such restraints?
I searched a lot, but it seems that distance restraints impose only on intramolecular distances.

Thank you

You can add intermolecular bonded interactions in an [ intermolecular_interactions ] section after the [ molecules ] section in the [ system ] section. I see now that the documentation is somewhat lacking in the manual. You list bonded interactions as normal here, but the atom indices are global atom indices instead of molecule local atom indices.

1 Like

Thank you so much for your reply,
For sure, I try what you said. But, I also found this way:
What I found is that for imposing a restraint between two different molecules (atom-a from molecule1 and atom-b from molecule2), first, we need to define atom-a in molecule1 as one separate group in .ndx file, and atom-b in molecule 2 as another group in that file. Then, add the pull code at the end of our *.mdp files. I’m not sure about the procedure!
Could you please let me know if it is correct?

I need to add this information that I want to perform a normal ligand-protein MD simulation (without a covalent bond between protein and ligand). I should impose a distance restraint between one atom in ligand and one atom in protein just for some nano seconds, and then continue the MD without any restraints.

No, that is that what I said. You can add normal bonded interactions or restraints in the topology file in an [ intermolecular_interactions ] section.

There are no options in GROMACS to turn interactions on and off as a function of time. You will need to stop the run, run grompp with a topology the extra interactions on, continue the simualtion with that, stop it, …

1 Like

I understand. Thank you very much

But, it any case I have to perform two MD simulations. In the first one I impose a restraint, and in the second one I remove that restraint. Then, I need to concatenate the two trajectories.

Now, I have another question. I tried both ways of imposing a restraint (in the case of my system):
(1. using the pull code,
2. adding the intermolecular bonded interactions in an [ intermolecular_interactions ] section after the [ molecules ] section in the [ system ] section).
Both methods work properly. My question is that what is the difference between them?

Once you have things set up and running, not much. The pull code has more performance overhead, in particular when running in parallel. So my advice would be to the intermolecular interactions approach. This is also simpler to set up.

Thank you for your information.

@hess Is not it a bias force that we are imposing while using pull-code of gromacs, so the potential energy of the system will have this as well(which requires unbias). While in the second approach “intermolecular interactions approach”, it seems a good one.
I also faced simillar problem: I have a system of Nanoparticle and small molecule , I want impose a restraint from surface atoms (not any particular index) to the com of a adsorbate molecule. How can I do this in gromacs?

I don’t think that is possible, unless you could do with a restraint of the COM to e.g. a reference value of the z-coordinate.