Non-integer charges of arginine

GROMACS version: 2021
GROMACS modification: No

Hi guys,

I have a question about setting a model of solvated arginine in water. Using the pdb2gmx util with OPLS-AA force field, I found out that the charges are not integers but some floating-point values with a ~0.1 delta from the desired value. For example, if I get an xyz file with arginine (I got it after optimization in Gaussian), convert it using babel, and then run:

# 1 -arg option value is for protonated arginine, i.e. arginine with q = +1
echo 1 | gmx pdb2gmx -f arg_q0_norm.pdb -o arg.gro -water spce -ff oplsaa -arg

It outputs me a correct structure (adds an extra proton to the amino group, making it NH3), but in the topology file the charges are set to 0.89, not 1.0.

For the neutral arginine, a similar command gives me a total charge of 0.1 (I expect exactly 0.0). I suspect that this is due to the fact that the original model was designed to be a part of a protein. Are there any flags or workaround to neutralize the system besides adding ions with the right proportion or setting a non-integer value on the ion charges? Thank you, any help is appreciated.

Here is the link to the whole archive

The topology file part for arginine with q = +1
; Include forcefield parameters
#include “oplsaa.ff/forcefield.itp”

[ moleculetype ]
; Name            nrexcl
Protein_chain_A     3

[ atoms ]
;   nr       type  resnr residue  atom   cgnr     charge       mass  typeB    chargeB      massB
; residue   1 ARG rtp ARG  q +0.9
     1   opls_287      1    ARG      N      1       -0.3    14.0027
     2   opls_290      1    ARG     H1      1       0.33      1.008
     3   opls_290      1    ARG     H2      1       0.33      1.008
     4   opls_290      1    ARG     H3      1       0.33      1.008
     5   opls_283      1    ARG     CA      1       0.04     12.011
     6   opls_140      1    ARG     HA      1       0.06      1.008
     7   opls_136      1    ARG     CB      2      -0.12     12.011
     8   opls_140      1    ARG    HB1      2       0.06      1.008
     9   opls_140      1    ARG    HB2      2       0.06      1.008
    10   opls_308      1    ARG     CG      3      -0.05     12.011
    11   opls_140      1    ARG    HG1      3       0.06      1.008
    12   opls_140      1    ARG    HG2      3       0.06      1.008
    13   opls_307      1    ARG     CD      4       0.19     12.011
    14   opls_140      1    ARG    HD1      4       0.06      1.008
    15   opls_140      1    ARG    HD2      4       0.06      1.008
    16   opls_303      1    ARG     NE      5       -0.7    14.0067
    17   opls_304      1    ARG     HE      5       0.44      1.008
    18   opls_302      1    ARG     CZ      5       0.64     12.011
    19   opls_300      1    ARG    NH1      6       -0.8    14.0067
    20   opls_301      1    ARG   HH11      6       0.46      1.008
    21   opls_301      1    ARG   HH12      6       0.46      1.008
    22   opls_300      1    ARG    NH2      7       -0.8    14.0067
    23   opls_301      1    ARG   HH21      7       0.46      1.008
    24   opls_301      1    ARG   HH22      7       0.46      1.008
    25   opls_271      1    ARG      C      8        0.7     12.011
    26   opls_272      1    ARG     O1      8       -0.8    15.9994
    27   opls_272      1    ARG     O2      8       -0.8    15.9994   ; qtot 0.89

You need to choose the “zwitterion” terminus types to get the correct patching for -NH3+/COO- forms, but I do not know if OPLS-AA supports neutral termini on isolated amino acids.

1 Like

Hi Justin,

Thank you so much!!! Do you happen to know why OPLS-AA does not support it by any chance? Is it because OPLS-AA was not originally designed for that, or was it simply has not been implemented in pdb2gmx?

Fully neutral termini are not physically possible so a combination of NH2/COOH is not likely to be implemented in any force field, at least not for a zwitterion (a user could choose this for a polypeptide, but it would be physically incorrect). Anything that’s not supported is because there is no compelling reason to have it in a biomolecular force field, not that GROMACS elected to leave it out of the OPLS-AA implementation.


Yes, I agree that the combination of NH2/COOH should be rare. However, what do you think about NH2/COO? It is the third one from the left (“HB”) in the image below and should correspond to the pH level between 9 and 12 and q = 0.

Zwitterions are supported in OPLS-AA because they are the most biologically relevant form of the species, and other combinations may or may not be supported depending on if both the N- and C-terminal patches require modification of the Cα charge. If they both do, they’re going to clash and lead to an incorrect topology. I certainly understand the chemistry quite well, but my point is force field developers spend time generating parameters that are likely to be widely used and will not necessarily cover every case. OPLS-AA may support the combination of NH2/COO-, so if that’s relevant to you, try it and see.

Hi @rnd90,

I am facing the same issue and was wondering if you found managed to find a solution?

Many thanks

Hi Tom,

I used OPLS-AA for q=+1 zwitterion. For example, if you need OPLS-AA arginine with +1 charge, then the command would be:

echo 1 1 1 | gmx pdb2gmx -f arg_q1.pdb -o arg.gro -water spce -ff oplsaa -arg -ter

As for the neutral one, I postponed the simulation of it, but I vaguely remember I found the one in Amber or gromos force field. So the general recommendation is to explore carefully the options of pdb2gmx.