PMX AssertionError, Atom type OH not been defined in the force field, Atom DHD1 was not found

I am using developmental version of PMX. Python 3.11.0. Gromacs version 2024.4. I am trying to mutate 276 residue from R2W. My WT.pdb file has total 320 aa.

head WT.pdb
ATOM 1 N MET A 1 -23.707 -0.652 12.944 1.00 46.62 N
ATOM 2 CA MET A 1 -23.333 -0.450 14.353 1.00 46.62 C
ATOM 3 C MET A 1 -23.493 -1.742 15.138 1.00 46.62 C
ATOM 4 CB MET A 1 -24.208 0.648 14.966 1.00 46.62 C
ATOM 5 O MET A 1 -24.471 -2.473 14.966 1.00 46.62 O
ATOM 6 CG MET A 1 -23.396 1.755 15.635 1.00 46.62 C
ATOM 7 SD MET A 1 -24.458 3.070 16.342 1.00 46.62 S
ATOM 8 CE MET A 1 -23.300 3.844 17.486 1.00 46.62 C
ATOM 9 N TYR A 2 -22.423 -2.282 15.586 1.00 37.69 N
ATOM 10 CA TYR A 2 -22.503 -3.484 16.423 1.00 37.69 C

tail WT.pdb
ATOM 2454 N ASP A 320 -5.244 22.466 14.216 1.00 67.75 N
ATOM 2455 CA ASP A 320 -4.523 21.991 13.040 1.00 67.75 C
ATOM 2456 C ASP A 320 -3.109 22.570 12.978 1.00 67.75 C
ATOM 2457 CB ASP A 320 -5.288 22.342 11.761 1.00 67.75 C
ATOM 2458 O ASP A 320 -2.898 23.724 13.348 1.00 67.75 O
ATOM 2459 CG ASP A 320 -6.595 21.584 11.617 1.00 67.75 C
ATOM 2460 OD1 ASP A 320 -6.714 20.467 12.171 1.00 67.75 O
ATOM 2461 OD2 ASP A 320 -7.515 22.107 10.955 1.00 67.75 O
TER 2462 ASP A 320
END

I want to use charmm36 FF. I got charmm36 from two different sources. One that comes with PMX software buldle (charmm36m-mut) another that I downloaded from PMX webserver (charmm36mut). pmx

pmx mutate -f WT.pdb -o mutant.pdb -ff charmm36mut

or

pmx mutate -f WT.pdb -o mutant.pdb -ff charmm36m-mut

Enter residue number: 276

Select new amino acid for 276-ARG:
Three- or one-letter code (or four-letter for ff specific residues): W
Will apply mutation R->W on residue ARG-276
log_> Residue to mutate: 276 | ARG | A
log_> Mutation to apply: R->W
log_> Hybrid residue name: R2W
Traceback (most recent call last):
File “/usr/local/bin/pmx”, line 8, in
sys.exit(entry_point())
^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pmx/scripts/cli.py”, line 97, in entry_point
PmxCli()
File “/usr/local/lib/python3.11/site-packages/pmx/scripts/cli.py”, line 44, in init
getattr(self, args.command)()
File “/usr/local/lib/python3.11/site-packages/pmx/scripts/cli.py”, line 48, in mutate
mutate.entry_point()
File “/usr/local/lib/python3.11/site-packages/pmx/scripts/mutate.py”, line 579, in entry_point
main(args)
File “/usr/local/lib/python3.11/site-packages/pmx/scripts/mutate.py”, line 558, in main
mutate(m=m,
File “/usr/local/lib/python3.11/site-packages/pmx/alchemy.py”, line 81, in mutate
apply_aa_mutation(m=m2, residue=residue, new_aa_name=new_aa_name,
File “/usr/local/lib/python3.11/site-packages/pmx/alchemy.py”, line 116, in apply_aa_mutation
bb_super(residue, hybrid_res)
File “/usr/local/lib/python3.11/site-packages/pmx/geometry.py”, line 135, in bb_super
assert len(atoms1) == len(atoms2), “%s → %s” % (‘-’.join(map(lambda a: a.name, atoms1)), ‘-’.join(map(lambda a: a.name, atoms2)))
AssertionError: N-CA-C-O → N-CA-C-O-HA-HN

If I use the webserver of PMX to mutate with charmm36, then it works. I get mutant.pdf. But then I get problem in folloing step:

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36mut

or

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36m-mut

Inconsistency in user input:
Atom type OH specified in terminal database has not been defined in the force
field

It did not help changing OH to OH1. Or, first running following script on WT.pdb protein and then mutate the input protein using webserver

./1.fix_residue_names.py -f WT.pdb -o tmp1.pdb -ft charmm
./2.hydrogen_atom_renaming.py -f tmp1.pdb -o tmp2.pdb -ft charmm

mutate.py doesn’t work on tmp2.pdb. I used then tmp2.pdb to PMX webserver and got mutant.pdb
Now If I run this step (in fresh terminal), I get same error.

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36mut

But if I use the force-field

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36m-mut

Program: gmx pdb2gmx, version 2024.4
Source file: src/gromacs/gmxpreprocess/pdb2gmx.cpp (line 870)

Fatal error:
Atom DHD1 in residue R2W 276 was not found in rtp entry R2W with 39 atoms
while sorting atoms

So, no way I could solve it with charmm36. I only worked if I used force field amber99sb-star-ildn-mut and mutate the WT protein using webserver (not pmx mutate script).

I appreciate any help

Thanks

It seems that there are no hydrogens in your pdb. Make sure that the structure file runs properly through “gmx pdb2gmx”. Use output structure from pdb2gmx as the input for the next pmx steps. More detailed description here: Accurate Calculation of Free Energy Changes upon Amino Acid Mutation | SpringerLink (section 3)

Thanks for the reply.
If I use PMX webserver to mutate and check the option “Use pdb2gmx to assign hydrogens” it adds hydrogen. But then I get errors in next stage as mentioned earlier:

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36mut


Inconsistency in user input:
Atom type OH specified in terminal database has not been defined in the force
field

------ OR

gmx pdb2gmx -f mutant.pdb -o conf.pdb -p topol.top -water tip3p -ff charmm36m-mut

Program: gmx pdb2gmx, version 2024.4
Source file: src/gromacs/gmxpreprocess/pdb2gmx.cpp (line 870)

Fatal error:
Atom DHD1 in residue R2W 276 was not found in rtp entry R2W with 39 atoms
while sorting atoms

— following are some liner of PMX webserver generated mutated protein:

ATOM 1 N MET A 1 -23.707 -0.652 12.944 1.00 0.00
ATOM 2 H1 MET A 1 -23.596 0.206 12.443 1.00 0.00
ATOM 3 H2 MET A 1 -23.118 -1.352 12.540 1.00 0.00
ATOM 4 H3 MET A 1 -24.661 -0.948 12.891 1.00 0.00
ATOM 5 CA MET A 1 -23.333 -0.450 14.353 1.00 0.00
ATOM 6 HA MET A 1 -22.370 -0.179 14.361 1.00 0.00
ATOM 7 CB MET A 1 -24.208 0.648 14.966 1.00 0.00
ATOM 8 HB1 MET A 1 -24.764 1.056 14.241 1.00 0.00
ATOM 9 HB2 MET A 1 -24.806 0.234 15.652 1.00 0.00
ATOM 10 CG MET A 1 -23.396 1.755 15.635 1.00 0.00
ATOM 11 HG1 MET A 1 -22.853 1.286 16.331 1.00 0.00
ATOM 12 HG2 MET A 1 -22.792 2.097 14.915 1.00 0.00
ATOM 13 SD MET A 1 -24.458 3.070 16.342 1.00 0.00

Webserver runs ‘master’ branch of pmx (based on Python 2), so you would need to install that to avoid this error.

In any case, the webserver already creates hybrid structure and topology for you, so you don’t need to run pdb2gmx on mutant.pdb anymore.