Using `martinize2` to get GōMartini coarse-grained protein parameters (Martini 3)

dheeraj.prakaash
Wed, 18 Mar 2026 03:08:58 +0000
General Topics in Molecular Dynamics

Hi all,
After using martinize2 to successfully obtain Martini 3 coarse-grained (CG) protein structures a couple of years ago, I have recently been attempting the same, this time aiming to obtain GōMartini parameters rather than using the standard Martini elastic network. But I have been facing issues with martinize2 in this process. Details are as follows. I would appreciate any help/suggestions.

In a fresh conda environment, I have installed:

vermouth 0.15.0 (pip install vermouth - as per instructions on GitHub)

dssp 3.0.0 (conda install -c salilab dssp)

python 3.10

My command to run martinize2 (based on the tutorial):

martinize2 -f prot.pdb -o prot.top -x prot_cg.pdb -ff martini3001 -p backbone -dssp -go contact_map.out -go-low 0.3 -go-up 1.1 -go-eps 9.414

Error message:

    INFO - general - Read 2 molecules from PDB file prot.pdb
    INFO - step - Guessing the bonds.
    INFO - general - 1 molecules after guessing bonds
    INFO - step - Repairing the graph.
    INFO - general - Applying modification N-ter to residue A-LEU1
    INFO - general - Applying modification + to residue A-LEU1
    INFO - general - Applying modification C-ter to residue A-GLU1009
    INFO - general - Applying modification + to residue A-GLU1009
    INFO - general - Applying modification N-ter to residue B-GLY1
    INFO - general - Applying modification C-ter to residue B-THR762
    INFO - missing-atom - Missing atom GLU1009:OXT
    INFO - missing-atom - Missing atom THR762:OXT
    INFO - step - Dealing with modifications.
    INFO - general - Identified the modifications ['N-ter', 'N-ter'] on residues ['LEU1', 'LEU1', 'LEU1', 'LEU1']
    INFO - general - Identified the modifications ['C-ter'] on residues ['ALA762', 'ALA762', 'ALA762']
Traceback (most recent call last):
  File "~/miniconda3/envs/martinize2/bin/martinize2", line 1205, in <module>
    entry()
  File "~/miniconda3/envs/martinize2/bin/martinize2", line 916, in entry
    system = pdb_to_universal(
  File "~/miniconda3/envs/martinize2/bin/martinize2", line 157, in pdb_to_universal
    vermouth.CanonicalizeModifications().run_system(canonicalized)
  File "~/miniconda3/envs/martinize2/lib/python3.10/site-packages/vermouth/processors/processor.py", line 37, in run_system
    mols.append(self.run_molecule(molecule))
  File "~/miniconda3/envs/martinize2/lib/python3.10/site-packages/vermouth/processors/canonicalize_modifications.py", line 380, in run_molecule
    fix_ptm(molecule)
  File "~/miniconda3/envs/martinize2/lib/python3.10/site-packages/vermouth/processors/canonicalize_modifications.py", line 312, in fix_ptm
    identified = identify_ptms(residue, res_ptms, options)
  File "~/miniconda3/envs/martinize2/lib/python3.10/site-packages/vermouth/processors/canonicalize_modifications.py", line 184, in identify_ptms
    assert not ptm_atoms
AssertionError

Sneakpeak into my input PDB file:

ATOM      1  N   LEU A   1      -7.690   8.560  15.210  1.00  0.00           N
ATOM      2  CA  LEU A   1      -8.230   8.360  13.870  1.00  0.00           C
ATOM      3  CB  LEU A   1      -8.870   9.640  13.340  1.00  0.00           C
ATOM      4  CG  LEU A   1      -9.620   9.530  12.010  1.00  0.00           C
ATOM      5  CD1 LEU A   1     -11.010   8.950  12.250  1.00  0.00           C
ATOM      6  CD2 LEU A   1      -9.730  10.900  11.340  1.00  0.00           C
ATOM      7  C   LEU A   1      -7.150   7.870  12.900  1.00  0.00           C
ATOM      8  O   LEU A   1      -6.940   6.670  12.750  1.00  0.00           O
ATOM      9  N   ASN A   2      -6.290   8.730  12.340  1.00  0.00           N
ATOM     10  CA  ASN A   2      -5.290   8.220  11.420  1.00  0.00           C
ATOM     11  CB  ASN A   2      -5.830   8.200   9.980  1.00  0.00           C
ATOM     12  CG  ASN A   2      -6.270   9.560   9.510  1.00  0.00           C
ATOM     13  OD1 ASN A   2      -6.700  10.410  10.290  1.00  0.00           O
ATOM     14  ND2 ASN A   2      -6.160   9.800   8.200  1.00  0.00           N
ATOM     15  C   ASN A   2      -4.000   9.030  11.480  1.00  0.00           C
ATOM     16  O   ASN A   2      -3.190   8.980  10.560  1.00  0.00           O
.
.
ATOM   7761  OE1 GLU A1009    -147.780  67.230 112.630  1.00 34.78           O
ATOM   7762  OE2 GLU A1009    -146.400  68.840 113.360  1.00 34.78           O
ATOM   7763  C   GLU A1009    -149.090  71.460 112.420  1.00 34.78           C
ATOM   7764  O   GLU A1009    -148.200  71.730 113.230  1.00 34.78           O
ATOM   7765  OXT GLU A1009    -147.841  71.628 112.420  1.00 34.78           O
TER
ATOM      1  N   GLY B   1     -41.220 -14.740  50.140  1.00  0.00           N
ATOM      2  CA  GLY B   1     -41.500 -14.580  48.720  1.00  0.00           C
ATOM      3  C   GLY B   1     -40.300 -14.170  47.900  1.00  0.00           C
ATOM      4  O   GLY B   1     -39.230 -13.890  48.460  1.00  0.00           O
ATOM      5  N   PRO B   2     -40.370 -14.200  46.540  1.00  0.00           N
ATOM      6  CA  PRO B   2     -39.300 -13.800  45.650  1.00  0.00           C
ATOM      7  CD  PRO B   2     -41.530 -14.520  45.950  1.00  0.00           C
ATOM      8  CB  PRO B   2     -39.830 -14.140  44.260  1.00  0.00           C
ATOM      9  CG  PRO B   2     -41.280 -14.420  44.470  1.00  0.00           C
ATOM     10  C   PRO B   2     -38.980 -12.300  45.770  1.00  0.00           C
ATOM     11  O   PRO B   2     -39.890 -11.490  45.900  1.00  0.00           O
.
.
ATOM   5865  N   THR B 762    -104.340 152.380 133.490  1.00 34.21           N
ATOM   5866  CA  THR B 762    -102.890 152.380 133.490  1.00 34.21           C
ATOM   5867  CB  THR B 762    -102.340 151.680 132.250  1.00 34.21           C
ATOM   5868  OG1 THR B 762    -100.920 151.570 132.360  1.00 34.21           O
ATOM   5869  CG2 THR B 762    -102.700 152.480 131.010  1.00 34.21           C
ATOM   5870  C   THR B 762    -102.370 153.810 133.490  1.00 34.21           C
ATOM   5871  O   THR B 762    -101.480 154.080 134.290  1.00 34.21           O
ATOM   5872  OXT THR B 762    -101.122 153.986 133.490  1.00 34.21           O
TER

I have tried martinizing:

with and without hydrogens

with continuous atom/residue numbering

with and without “TER”

with a single chain instead of 2

replacing -go contact_map.out -go-low 0.3 -go-up 1.1 -go-eps 9.414 with -elastic -el 0 -eu 0.85 (successful 2 years ago - older martinize version, same dssp version)

with martinize2 v0.9.5 (pip install vermouth==0.9.5 in a fresh conda env with the same dssp and python version as before) but soon realized that obtaining Go parameters was not implemented in this version.

For now, I have successfully obtained a CG structure using CHARMM-GUI (which only uses standard Martini elastic network, obtaining Go model not implemented), but my aim is to obtain Go parameters. Also, this is my first time dealing with GōMartini. So, the error could be on my end.. or it could be that the new martinize version has an issue and therefore I am unable to use it (regardless of standard elastic network or Go model).

If anyone has a solution / workaround for this, or can figure out if I am doing something silly, I would highly appreciate your help. Or please let me know if we’re all on the same boat waiting for an update from the developers. Thanks a lot.

PS: This issue was opened on Github in April 2024 (I did not find the discussion very helpful for my case): Error While Martinizing "AssertionError" · Issue #592 · marrink-lab/vermouth-martinize · GitHub

1 post - 1 participant