This API is currently available in C++ and Python.
bool OECapTermini(OEChem::OEMolBase &mol, const OESystem::OEUnaryPredicate<OEChem::OEAtomBase> &exclude=OEChem::OEIsFalseAtom(), const OESpruce::OECapBuilderOptions& = OESpruce::OECapBuilderOptions())
A predicate can be passed to exclude certain termini from being capped, such as the true biological terminal residues since these 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.
Explicit hydrogens are not added to the structure during the build processes.