Extract Temperature of a group

GROMACS version: 2021.1
GROMACS modification: No

Hello everyone! My simulation has the temperature coupling of the whole system, i.e., tc-grps = System. However, I hope to extract the temperature of each group separately from the energy file, e.g., for protein (or any residue name) and water, respectively. Can anyone help me with this? I do not think that the temperatures could be different between protein and water with the system-wide thermostat, but I hope to confirm this by either modifying the .mdp file of the run, or any post processing method. Can anyone help me with this? Thank you in advance.

Historically, that has been exactly the problem when using certain methods, however these are largely tied to inaccurate electrostatics methods but still could pop up. Look up the “hot solvent/cold solute” problem; it’s a rather interesting history.

You cannot extract this information from an .edr file if there was only one group specified for thermostatting. If you saved velocities from the simulation to the .trr file, then you can (after correcting the degrees of freedom for constraints), compute temperatures of a given group. If you did not save velocities, there is no way to calculate the temperature of different groups.

Thank you professor.

So the conclusion is, if use system-wide thermostat, the only way to compute temperatures from different groups is to calculate from the velocities with post processing code/script. Do you have any recommendations of such kind of code?

gmx traj -ot gives the system temperature (not corrected for constraints). Then you can apply the correction:

T_real = T_calc * [natoms / (natoms - nconstraints)]