bool OECapCTermini(OEChem::OEMolBase &mol, const OESystem::OEUnaryPredicate<OEChem::OEAtomBase> &exclude=OEChem::OEIsFalseAtom(), const bool deleteClashingSolvent=true)
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 by default can delete a solvent molecule if it clashes with where the cap is being built, but this behavior can be turned off. 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 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 will 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.