OEChem TK 5.0.0
New Features
The following preliminary APIs have been added for monomer, HELM, and peptide support.
Classes:
OEMonomer— represents a monomer in a monomer set.OEMonomerData— stores the definition of a monomer.OEMonomerSet— a collection of monomers.OEMonomerValidationResult— stores the result of monomer data validation.OEHelmParsingResult— stores the result of HELM parsing.OEHelmGenerationResult— stores the result of HELM generation.OEHelmGenerationOptions— gives options for HELM generation.
Predicates:
OEIsInMonomerCodeSet— filters monomers by code set.OEHasPolymerType— filters monomers by polymer type.OEHasMonomerType— filters monomers by monomer type.OEHasAminoAcidType— filters monomers by amino acid type.OEIsMonomerGroup— identifies groups that store monomer information.OEHasMonomerGroup— identifies groups that match a monomer group by code set and code.
Constants:
OEAminoAcidType— amino acid type constants.OEPolymerType— polymer type constants.OEMonomerType— monomer type constants.OEMonomerValidationReturnCode— monomer validation return codes.OEHelmParsingReturnCode— HELM parsing return codes.OEHelmGenerationReturnCode— HELM generation return codes.OEGroupType::Monomer— monomer group type constant.OEProperty::Monomer— monomer property type constant.
Monomer data and validation functions:
Monomer set I/O functions:
Monomer perception and detection functions:
HELM functions:
Peptide perception functions:
A new function,
OEHasRadii, has been added to check if a molecule has radii assigned to all atoms. The function takes an optional boolean argumentall(default:true) to specify whether to check for radii on every atom or whether to return early on the first atom without radii.More
OEIFlavorconstants have been added for better control of perception steps when reading mmCIF files.
Minor Bug Fixes
When generating a substructure search database with
OECreateSubSearchDatabaseFile, molecules with high graph complexity (such as https://www.rcsb.org/ligand/ZRW) are now skipped since they are unlikely to be useful for substructure searching and can cause significant performance degradation during database generation.The stack size of threads used in the
OECreateSubSearchDatabaseFilefunction have been increased to avoid memory allocation issues when processing.oebfiles with large number of generic data.An issue has been fixed in
OEGetTorsionwhere residue perception was called on a const atom changing the underlying perception state of the molecule. The function now correctly returns an invalid value when the residue is not already perceived with a warning to perceive it.
Python-Specific Changes
The
OEMolBase::NewGroupmethod raisesTypeErrorif invoked with an invalid argument type.The hashing function for OEResidue has been updated to work with multicharacter chain IDs.
OEBio TK
New Features
The following preliminary APIs have been added to serializing and deserializing interaction hints into
.oebfiles.The serialization API for interaction hints now supports OEDesignUnit directly. The following functions have new overloads accepting an
OEDesignUnit:The OEInteractionHintContainer class now supports a new constructor overload that accepts an
OEDesignUnit, assembling the receptor from the design unit components and the ligand (if present) automatically.Intramolecular interaction perception is now supported for a single component (either ligand or protein) by passing an empty molecule for the other component to the OEInteractionHintContainer constructor. For example, passing an empty molecule as the ligand argument will perceive only intramolecular interactions within the protein, and vice versa. This also applies when using the
OEDesignUnitconstructor overload: if a design unit has site residues but no ligand, intramolecular receptor interactions are perceived automatically.The following new predicates have been added for finer-grained filtering of interaction hints:
OEIsClashingHBondInteractionHint identifies clashing hydrogen bond interactions (i.e.,
OEHBondInteractionHintType::ClashAcceptorAcceptorandOEHBondInteractionHintType::ClashDonorDonortypes).OEIsUnpairedInteractionHint identifies all unpaired interactions, including unpaired hydrogen bond donors/acceptors and unpaired salt-bridge charges.
OEIsIntermolecularSaltBridgeInteractionHint identifies intermolecular (ligand-protein) salt-bridge interactions.
OEIsIntramolecularSaltBridgeInteractionHint identifies intramolecular salt-bridge interactions within the ligand or protein.
OEIsIntermolecularStackingInteractionHint identifies intermolecular (ligand-protein) pi- and T-stacking interactions.
OEIsIntramolecularStackingInteractionHint identifies intramolecular pi- and T-stacking interactions within the ligand or protein.
OEIsIntermolecularCationPiInteractionHint identifies intermolecular (ligand-protein) cation-pi interactions.
OEIsIntramolecularCationPiInteractionHint identifies intramolecular cation-pi interactions within the ligand or protein.
OEIsIntermolecularHalogenBondInteractionHint identifies intermolecular (ligand-protein) halogen bond interactions.
OEIsIntramolecularHalogenBondInteractionHint identifies intramolecular halogen bond interactions within the ligand or protein.
Intramolecular stacking and cation-pi interactions are now perceived and reported. The following new type constants have been added:
A new option has been added to OEPerceiveInteractionOptions to control the minimum stack offset required for a pi-stacking or T-stacking interaction to be reported:
The stack offset is defined as \(\max(|\hat{c}\cdot\hat{n}_1|, |\hat{c}\cdot\hat{n}_2|)\), where \(\hat{c}\) is the unit vector between the ring centers and \(\hat{n}_1\) and \(\hat{n}_2\) are the ring plane normals. This filter ensures that one ring sits above or below the other (i.e., a genuinely stacked arrangement) rather than side by side in the same plane. The default value is 0.5.
The following existing predicates have been updated to accept optional parameters that control whether intramolecular interactions and nonideal interactions are included in their results. All parameters default to
Trueto preserve backward-compatible behavior where interactions were previously returned without distinction:OEIsHBondInteractionHint — new constructor
OEIsHBondInteractionHint(bool includeIntra = true, bool includeNonIdeal = true)OEIsIntermolecularHBondInteractionHint — new constructor
OEIsIntermolecularHBondInteractionHint(bool includeNonIdeal = true)OEIsIntramolecularHBondInteractionHint — new constructor
OEIsIntramolecularHBondInteractionHint(bool includeNonIdeal = true)OEIsChelatorInteractionHint — new constructor
OEIsChelatorInteractionHint(bool includeIntra = true)OEIsSaltBridgeInteractionHint — new constructor
OEIsSaltBridgeInteractionHint(bool includeIntra = true)OEIsStackingInteractionHint — new constructor
OEIsStackingInteractionHint(bool includeIntra = true)OEIsCationPiInteractionHint — new constructor
OEIsCationPiInteractionHint(bool includeIntra = true)OEIsHalogenBondInteractionHint — new constructor
OEIsHalogenBondInteractionHint(bool includeIntra = true)
OEDesignUnit now supports an additional
SetSiteResiduesoverload that acceptsstd::vector<OEChem::OEResidue>. The method validates that residues are present in the target, supports ligand coverage checks throughthresholdandaddBox, supports optional component reassignment throughrearrangeComponents, and updates site-associated cofactors throughsiteSize.A new overload to the function
OEAssignRadiithat operates onOEDesignUnithas been added. The function takes a mask argument and radii types to assign specific radii to specified components.The
OEDesignUnitnow tracks the bond order of covalent bonds between components.The dictionaries used in
OEResidueCategoryDatahave been updated. Specifically, GCP has been added as a cofactor. In addition, polymers were reclassified based on how often they appear as a standalone in the wwPDB, so they can be targeted as ligands, or, if they appear frequently as part of larger complexes, they can be treated as cofactors.
Major Bug Fixes
An issue has been fixed where using OEAltLocationFactory with the
OEAltLocFactOption::TrustInputBondsoption could lead to incorrect perception of formal charges for atoms that had an atom with multiple alternative locations bonded to it instead of proper reassignment of the implicit hydrogen count first.The OEIsHBondInteractionHint predicate previously returned
truefor clashing hydrogen bond interactions (OEHBondInteractionHintType::ClashAcceptorAcceptorandOEHBondInteractionHintType::ClashDonorDonor) and for unpaired hydrogen bond interactions (OEHBondInteractionHintType::UnpairedLigandDonor,OEHBondInteractionHintType::UnpairedLigandAcceptor,OEHBondInteractionHintType::UnpairedProteinDonor, andOEHBondInteractionHintType::UnpairedProteinAcceptor). These interaction types are now excluded from OEIsHBondInteractionHint, as they represent geometrically unfavorable or unpaired contacts rather than genuine hydrogen bonds. Use the new OEIsClashingHBondInteractionHint predicate to retrieve clashing interactions, and the new OEIsUnpairedInteractionHint predicate for unpaired interactions (note:OEIsUnpairedInteractionHintalso returns unpaired salt-bridge interactions).Similarly, OEIsIntermolecularHBondInteractionHint no longer includes clashing types, and OEIsIntramolecularHBondInteractionHint no longer includes unpaired types.
The directionality of intramolecular hydrogen bond, salt bridge, and chelator interactions has been corrected:
Intramolecular hydrogen bond interactions now consistently report the donor as the begin fragment and the acceptor as the end fragment.
Intramolecular salt bridge interactions now consistently report the positive charge as the begin fragment and the negative charge as the end fragment.
Intramolecular chelator interactions now consistently report the metal as the begin fragment and the chelating atom as the end fragment.
The
OEPerceiveInteractionOptions::GetMaxAtomPairDistancehas been updated to also include the MaxUnpairedDistance in the calculation of the maximum atom pair distance.
Minor Bug Fixes
OEGetActiveSiteInteractionHintTypesno longer returns duplicate interaction hint types.An issue has been fixed where incorrect perception of stacking interactions would occur. The new feature mentioned above fixes this issue with an option to control the minimum stack offset required for a pi-stacking or T-stacking.
An issue has been fixed where chelators were incorrectly perceived because of a missing angular term.
An issue has been fixed where halogen interactions were incorrectly perceived because of a missing angular term.
An issue has been fixed where, in the
OEIsCTerminalAtomandOEIsNTerminalAtommethods, incorrect terminal atom identification could occur for nonstandard amino acid residues.
Python-Specific Changes
Python wrapping of
OEInteractionHintContainer::GetMoleculesmethods has been fixed.