bool OEGetMolComplexFragments(std::vector<OEChem::OEAtomBondSet> &frags,
                              const OEChem::OEMolBase &mol,
                              const OESplitMolComplexOptions &opt=OESplitMolComplexOptions())

Analyze the input mol and generate a vector of OEAtomBondSets that describe each connected fragment according to its functional role. The frags vector can be used to count binding sites, combine fragments into a molecule, or filter fragments by role.

Using an OEAtomBondSet vector and then filtering several times to produce molecules can be much more efficient compared to using the OESplitMolComplex or OEGetMolComplexComponents functions.

To create an OEAtomBondSet vector:

OEAtomBondSetVector frags = new OEAtomBondSetVector();

The process is controlled by an optional OESplitMolComplexOptions object.

Returns false if the task could not be performed (for example, if mol is empty).


The input molecule should contain PDB residue information such as residue name, which is used during the classification process, either from a PDB format file or through residue perception. Molecular complexes read from files in formats that lack this information (for example SDF) may be split inappropriately unless residues are perceived after input.