Positional restraint, grompp -r error, restraint coordinates does not match topology

GROMACS version:2019
GROMACS modification: No
Here post your question
Dear Gromacs users,
In continuation with the question posted by @acnash (Grompp -r --does not match the number of atoms in the topology),
I’m facing same sort of issue as mentioned in the above posted question where I have been wanting to restrain some part of protein-RNA chain, basically I want to restrain a part of protein which is beyond 32 Angstrom from the ligand and had saved the cordinates and generated positional restraints(posre.itp) for the chains of these cordinates.
My topology description is as follows:

;
;	File 'topol.top' was generated
;	By user: 
;	On host: 
;	At date: Wed Aug 18 17:09:36 2021
;
;	This is a standalone topology file
;
;	Created by:
;	                     :-) GROMACS - gmx pdb2gmx, 2019 (-:
;	
;	Executable:   /usr/local/gromacs/bin/gmx
;	Data prefix:  /usr/local/gromacs
;	Working dir:  /home/psg/Desktop/new_trial
;	Command line:
;	  gmx pdb2gmx -f rib_U_mutated.pdb -o rib.gro -ter
;	Force field was read from the standard GROMACS share directory.
;


; Include forcefield parameters
#include "charmm36-mar2019_psg.ff/forcefield.itp"

; include paromomycin parameters
#include "par.prm"

; Include chain topologies
#include "topol_Ion_chain_7.itp"
#include "topol_RNA_chain_A.itp"
#include "topol_RNA_chain_A2.itp"
#include "topol_RNA_chain_a.itp"
#include "topol_RNA_chain_a2.itp"
#include "topol_RNA_chain_a3.itp"
#include "topol_RNA_chain_a4.itp"
#include "topol_RNA_chain_a5.itp"
#include "topol_RNA_chain_a6.itp"
#include "topol_Protein_chain_c.itp"
#include "topol_Protein_chain_e.itp"
#include "topol_Protein_chain_i.itp"
#include "topol_Protein_chain_k.itp"
#include "topol_Protein_chain_l.itp"
#include "topol_RNA_chain_v.itp"
#include "topol_RNA_chain_x.itp"
#include "topol_RNA_chain_y.itp"

#ifdef POSRES_RES
#include "posre_RNA_chain_A_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a2_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a3_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a4_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a5_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a6_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a7_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a8_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_a9_.itp"
#endif

#ifdef POSRES_RES
#include "posre_Protein_chain_c.itp"
#endif

#ifdef POSRES_RES
#include "posre_Protein_chain_e_.itp"
#endif

#ifdef POSRES_RES
#include "posre_Protein_chain_l_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_v_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_v2_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_x_.itp"
#endif

#ifdef POSRES_RES
#include "posre_RNA_chain_y_.itp"
#endif

; Include water topology
#include "charmm36-mar2019_psg.ff/tip3p.itp"

#ifdef POSRES_WATER
; Position restraint for each water oxygen
[ position_restraints ]
;  i funct       fcx        fcy        fcz
   1    1       1000       1000       1000
#endif

; Include topology for paramomycin
#include "par.itp"

; Include topology for ions
#include "charmm36-mar2019_psg.ff/ions.itp"

[ system ]
; Name
Protein in water

[ molecules ]
; Compound        #mols
Ion_chain_7         1
RNA_chain_A         1
RNA_chain_A2        1
RNA_chain_a         1
RNA_chain_a2        1
RNA_chain_a3        1
RNA_chain_a4        1
RNA_chain_a5        1
RNA_chain_a6        1
Protein_chain_c     1
Protein_chain_e     1
Protein_chain_i     1
Protein_chain_k     1
Protein_chain_l     1
RNA_chain_v         1
RNA_chain_x         1
RNA_chain_y         1
PAR		1
SOL                 9
SOL         67458
NA               224

When I issue the grompp command I get such error:
The bey32.pdb has the description of the atoms I want to restraint.

$ gmx grompp -f nvt.mdp -c em.gro -r bey32.pdb -p topol.top -o nvt.tpr
                       :-) GROMACS - gmx grompp, 2019 (-:

                            GROMACS is written by:
     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
 Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
 Christian Wennberg    Maarten Wolf   
                           and the project leaders:
        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel

Copyright (c) 1991-2000, University of Groningen, The Netherlands.
Copyright (c) 2001-2018, The GROMACS development team at
Uppsala University, Stockholm University and
the Royal Institute of Technology, Sweden.
check out http://www.gromacs.org for more information.

GROMACS is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2.1
of the License, or (at your option) any later version.

GROMACS:      gmx grompp, version 2019
Executable:   /usr/local/gromacs/bin/gmx
Data prefix:  /usr/local/gromacs
Working dir:  /home/psg/Desktop/new_trial
Command line:
  gmx grompp -f nvt.mdp -c em.gro -r bey32.pdb -p topol.top -o nvt.tpr

Ignoring obsolete mdp entry 'title'
Setting the LD random seed to 543556490
Generated 100032 of the 100128 non-bonded parameter combinations
Generating 1-4 interactions: fudge = 1
Generated 65937 of the 100128 1-4 parameter combinations
Excluding 3 bonded neighbours molecule type 'Ion_chain_7'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_A'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_A2'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a2'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a3'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a4'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a5'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_a6'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'Protein_chain_c'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'Protein_chain_e'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'Protein_chain_i'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'Protein_chain_k'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'Protein_chain_l'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_v'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_x'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'RNA_chain_y'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'PAR'
turning H bonds into constraints...
Excluding 2 bonded neighbours molecule type 'SOL'
turning H bonds into constraints...
Excluding 2 bonded neighbours molecule type 'SOL'
Excluding 1 bonded neighbours molecule type 'NA'
turning H bonds into constraints...

NOTE 1 [file topol.top, line 156]:
  System has non-zero total charge: -0.279996
  Total charge should normally be an integer. See
  http://www.gromacs.org/Documentation/Floating_Point_Arithmetic
  for discussion on how close it should be to an integer.
  


Setting gen_seed to -1819690577
Velocities were taken from a Maxwell distribution at 300 K
Removing all charge groups because cutoff-scheme=Verlet
WARNING: all CONECT records are ignored

WARNING 1 [file topol.top, line 156]:
  The number of atoms in bey32.pdb (1944) does not match the number of
  atoms in the topology (214158). Will assume that the first 1944 atoms in
  the topology and bey32.pdb match.

WARNING: all CONECT records are ignored

WARNING 2 [file topol.top, line 156]:
  The number of atoms in bey32.pdb (1944) does not match the number of
  atoms in the topology (214158). Will assume that the first 1944 atoms in
  the topology and bey32.pdb match.


NOTE 2 [file topol.top, line 156]:
  In moleculetype 'Ion_chain_7' 32 atoms are not bound by a potential or
  constraint to any other atom in the same moleculetype. Although
  technically this might not cause issues in a simulation, this often means
  that the user forgot to add a bond/potential/constraint or put multiple
  molecules in the same moleculetype definition by mistake. Run with -v to
  get information for each atom.


NOTE 3 [file topol.top, line 156]:
  The bond in molecule-type RNA_chain_A2 between atoms 308 C2 and 309 O2
  has an estimated oscillational period of 1.9e-02 ps, which is less than
  10 times the time step of 2.0e-03 ps.
  Maybe you forgot to change the constraints mdp option.

Analysing residue names:
There are:   256        Ion residues
There are:   297      Other residues
There are:    17        RNA residues
There are:    76    Protein residues
There are: 67467      Water residues
Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups...
Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups...
Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups...
Analysing Protein...
Number of degrees of freedom in T-Coupling group Protein is 3152.98
Number of degrees of freedom in T-Coupling group non-Protein is 432771.03
Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 300 K
Calculated rlist for 1x1 atom pair-list as 1.128 nm, buffer size 0.128 nm
Set rlist, assuming 4x4 atom pair-list, to 1.104 nm, buffer size 0.104 nm
Note that mdrun will redetermine rlist based on the actual pair-list setup

NOTE 4 [file nvt.mdp]:
  You are using a plain Coulomb cut-off, which might produce artifacts.
  You might want to consider using PME electrostatics.


This run will generate roughly 512 Mb of data

There were 4 notes

There were 2 warnings

-------------------------------------------------------
Program:     gmx grompp, version 2019
Source file: src/gromacs/gmxpreprocess/grompp.cpp (line 2309)

Fatal error:
Too many warnings (2).
If you are sure all warnings are harmless, use the -maxwarn option.

For more information and tips for troubleshooting, please check the GROMACS
website at http://www.gromacs.org/Documentation/Errors

Here is my .mdp file:

title                   = NVT equilibration 
; Run parameters
define			= -DPOSRES_RES
integrator              = md        ; leap-frog integrator
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstxout                 = 500       ; save coordinates every 1.0 ps
nstvout                 = 500       ; save velocities every 1.0 ps
nstenergy               = 500       ; save energies every 1.0 ps
nstlog                  = 500       ; update log file every 1.0 ps
; Bond parameters
continuation            = no        ; first dynamics run
constraint_algorithm    = lincs     ; holonomic constraints 
constraints             = h-bonds   ; bonds involving H are constrained
lincs_iter              = 1         ; accuracy of LINCS
lincs_order             = 4         ; also related to accuracy
; Nonbonded settings 
cutoff-scheme           = Verlet    ; Buffered neighbor searching
ns_type                 = grid      ; search neighboring grid cells
nstlist                 = 10        ; 20 fs, largely irrelevant with Verlet
rcoulomb                = 1.0       ; short-range electrostatic cutoff (in nm)
rvdw                    = 1.0       ; short-range van der Waals cutoff (in nm)
DispCorr                = EnerPres  ; account for cut-off vdW scheme
; Electrostatics
coulombtype             = cut-off       ; Particle Mesh Ewald for long-range electrostatics
pme_order               = 4         ; cubic interpolation
fourierspacing          = 0.16      ; grid spacing for FFT
; Temperature coupling is on
tcoupl                  = V-rescale            		  		 ; modified Berendsen thermostat
tc-grps                 =  Protein Non-protein   	  ; two coupling groups 
tau_t                   =  0.1     0.1     			; time constant, in ps
ref_t                   =  300     300 	    	 ; reference temperature, one for each group, in K
; Pressure coupling is off 
pcoupl                  = no        ; no pressure coupling in NVT
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
; Velocity generation
gen_vel                 = yes       ; assign velocities from Maxwell distribution
gen_temp                = 300       ; temperature for Maxwell distribution
gen_seed                = -1        ; generate a random seed

P.S.: I generated the positional restraint of this restraint cordinates (bey32.pdb) using pdb2gmx module and simply included them in the topology file in accordance with the [molecules] section of the topology. However I had tried using an index group(using gmx make_ndx) comprising all the restraint cordinates and had generated positional restraint file(posre.itp) file and included it in the topology file, grompp had other errors to show such as : (Errors - Gromacs), so I decided this could be the easy way forward as there are many chains in these restraint coordinate file, hence the pdb2gmx approach to generate the posre.itp files for the restraint coordinates as I have already defined that in my .mdp file as -DPOSRES_RES to read specifically the .itp files of these restraint coordinates file. I hope the approach is correct and the next problem needs to be sorted out is:
How to figure out this issue of restraint atoms and topology atoms warning? And I don’t want the program to read the first 1944 atoms of the topology file but read those specific atoms which are supplied in my restraint coordinates.
Thanking you in advance.

For almost everything that you ever want to do, you need to pass the same file to both -c and -r. The coordinates do not define which atoms are restrained, the topology does. The coordinates in -r specify the origin of the restraint (Vrestraint = 0) and nothing more. The only time -c and -r differ is if you want to use position restraints to adjust the conformation by applying a biasing force in a certain direction. So there is almost never a reason to create any special coordinate file that is passed to -r.

1 Like