From PyMOLWiki
Revision as of 11:34, 19 November 2015 by Andwar (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Type PyMOL Plugin
Download plugins/
Author(s) Andreas Warnecke
License GPL-2.0
This code has been put under version control in the project Pymol-script-repo
PyTMs example: PTMs in red

PyTMs is a PyMOL plugin that enables to easily introduce a set of common post-translational modifications (PTMs) into protein models.
Latest version: 1.2 (November 2015)


PyTMS can be downloaded separately, or together with the pymol-script-repository
The file should be placed in the plugins folder.

Using the GUI

In PyMOL, navigate to: Plugin --> PyTMs
The supported PTM can be selected from the left panel. The options will appear on the right. For help, click the help button.
Note that available objects/selection can be selected using the buttons or be entered into the field. Target atoms are automatically sub-selected and do not need to be specified.

PyMOL API functions

List of functions
PTM PyTMs API command p.PTM property selector * Target amino acid(s) Modifyable N-terminus? **
acetylation acetylate acetylation Lysine Yes, biologically relvant
carbamylation carbamylate carbamylation Lysine Yes, implemented
citrullination citrullinate citrullination Arginine No
cysteine oxidations oxidize_cys oxidation_cys Cysteine /(Seleno-) No
malondialdehyde adducts mda_modify MDA Lysine Yes, biologically relevant
methionine oxidation oxidize_met oxidation_met Methionine /(Seleno-) No
methylation methylate methylation Lysine Yes, implemented
nitration nitrate nitration Tyrosine (Tryptophan) No
nitrosylation nitrosylate nitrosylation Cysteine No
proline hydroxylation hydroxy_pro hydroxylation_pro Proline No
phosphorylation phosphorylate phosphorylation Serine, Threonine, Tyrosine No
  • (*) requires incentive PyMOL version 1.7, or higher
  • (**) N-terminal modifiactions excluding Proline
  • Note that each function has an individual help description, callable by entering, e.g.:
help citrullinate

Selections and custom property selectors

PTM amino acids have altered names, and altered/added atoms are identifyable by unique names.
The nomenclature is adapted mostly from RCSB.

select resn CIR # citrullines
select resn NIY # nitro-tyrosines
# etc. ...
  • Note that more information can be found in the associated help of individual functions
  • Hint: using the label command is a convenient way to get hold of the names of atoms or residues

Incentive PyMOL version (>1.7) support custom property selectors.
PyTMs supports these by intoducting the property p.PTM selector (cf. table above), which will select the altered PTM atoms:

# To select a PTM, use e.g.:
select p.PTM in nitration #selects nitro groups
select p.PTM in * #selects any PTM

PyTMs in python scripts

In simple API scripts, the API commands can be used directly.
For use in python scripts PyTMs can also be imported, e.g.:

import pmg_tk.startup.pytms

Basic residue-based optimization, animation, vdW clashes, surface selections

Some functions (MDA & phosphorylation) support basic structure optimization that is used to position PTMs in more favorable locations. Note that this optimization is based solely on sterical vdW strain and currently ignores charge. Due to interation of testing, there may be a significant calculation time associated with this procedure. The optimization can be followed in the console and graphically in the PyMOL window (only in case the GUI is used). There is an option to animate the states from original to final after calculation for reference (cf. example).
Note that the presence of hydrogens will significantly affect both the calculation during optimization and the display of vdW clashes!

All functions support the display of vdW clashes after modification to allow assessment of potential steric interactions/displacements.
This is essentially an integrated version of the original show_bumps script by Thomas Holder.
Note that a dedicated display vdW strain function is available to perform this in retrospect, or on unmodified models.

PyTMs also enables the user to sub-select surface accessible residues. This corresponds to an integrated version of FindSurfaceResidues by Jason Vertrees. This option is enables by providing the required cutoff (in A^2).

Animation of optimization with steric vdW clashes:
pytms example: optimization, animation, clashes


  • console output appears first in the PyMOL console prior to the API interface
  • when using the GUI menu, the modification process can be followed in the display window

Update notes

    0.90 pre release testing
    1.00 first release
        * minor changes and typo correction
        * fixed non-incentive users receiving
          error messages related to the 'alter' command
        * new feature: integrated surface selection
        * new feature: integrated display of vdW clashes for all PTMs
        * new function: display of vdW clashes indpendent of modification
    1.1 Minor fixes
        * changed boolean processing of 'delocalized' keyword
    1.2 Additional function and minor improvements
        * fixed crashed related to random selections
        * new function: nitrosylate (Cysteine S-Nitrosylation)
        * updated usage descriptions
        * the user interface window is now resizable
        * changes in nitrate-function:
            * the torsion angle can now be defined for the nitro group and has
              a default of ~22.352 (slight angle);
              this feature is currently only supported for Tyrosines!
            * selecting a surface cutoff in conjuction with random placement
              of CE1 or CE2 for Nitro-tyrosines will now select the most
              accessible CE atom rather than a random one
        * font size can now be adjusted from the Main menu


The original citation can be found on PubMED A current (non-repository) version of PyTMs can be downloaded here:
In case of suggestions, questions or feedback please feel free to contact me.