Scaling position restraints with restraint-lambdas

GROMACS version: 2020.3
GROMACS modification: No

I am attempting to restrain the orientation of a small molecule using three position restraints that span the ligand and to scale these restraints from 0-800 kJ mol-1 nm-2 using restraint-lambdas in order to compute the free energy of coupling the restraints.
After first using [ position_restraints ] in the ligand topology and seeing that restraint-lambdas “only the restraint interactions: dihedral restraints, and the pull code restraints are controlled with this component of the lambda vector,” I opted to define three pull groups between each of the ligand atoms and a super-imposed, frozen dummy atom.
However, the restraint-lambdas still have no effect on de-coupling these restraints.
I saw a post recently: that seems to be attempting a similar protocol, but they also had no success implementing restraint-lambdas.
Am I missing a crucial mdp parameter or topology definition?

The position restraint force constant should be coupled by the restraint lambda. Have you provides values 0 for the A state and values 800 for the B state in the topology file?

Ah, I had assumed that lambda 1.0 would simply use the k defined by pull-coord1-k in the pull code and other lambdas would scale this linearly.
Am I able to use standard position restraints instead of pull code and then add A and B force constants in the [ position_restraints ] section of the topology? e.g.

[ position_restraints ]
; ai funct fcxA fcyA fczA fcxB fcyB fczB
53 1 0 0 0 1000 1000 1000

Otherwise, I’m unable to find the relevant documentation in the manual.


Great, thank you!
I may also try scaling COM distance restraints between two index groups using the pull code in the future.
Is there also a way to couple restraint-lambdas to those?

The lambda in the pull code is part of the restraint lambda group.