This API is currently available in C++ and Python.

bool OECapCTermini(OEChem::OEMolBase &mol,
                   const OESystem::OEUnaryPredicate<OEChem::OEAtomBase> &exclude=OEChem::OEIsFalseAtom(),
                   const OESpruce::OECapBuilderOptions& = OESpruce::OECapBuilderOptions())

This function caps all the C-termini in a protein with an N-methyl (OEResidueIndex_NME) group. The N-methyl is built assuming ideal backbone geometry.

A predicate can be passed to exclude certain termini from being capped, such as the true biological C-terminal residue since this should be charged to match the biophysical experiments.

The function takes an options class, where behavior can be controlled if building the cap results in a clash, and depending on the type of class what actions can be taken, e.g. a solvent molecule blocking the protein backbone is not very realistic and the solvent molecule is likely placed to account for density that should have belonged to the residue not resolved in the crystal structure.

The cap will be numbered identically to the residue number of the terminal residue, but the insertion code will be incremented. The reason for this is to avoid residue number clashes with heterogens following the protein chain in the PDB file.


If the backbone of the residue being capped is incomplete, or a cap can not be built because of a clash, the residue being capped can be turned into the cap by removing atoms in the residue. A clash can either be into a non-solvent or into a solvent with the deleteClashingSolvent option set to false.

See also