bool OESplitMolComplex(OEChem::OEMolBase &lig, OEChem::OEMolBase &prot, OEChem::OEMolBase &waters, OEChem::OEMolBase &other, const OEChem::OEMolBase &mol, const OESplitMolComplexOptions &opt=OESplitMolComplexOptions())
Separates components of the input mol into the four output OEMolBase categories lig, prot, waters, and other representing basic elements of a macro-molecular complex. The process is controlled by an optional OESplitMolComplexOptions object. Other contains everything that is not in lig, prot, or waters, all of which are defined by OEMolComplexFilter objects from OESplitMolComplexOptions. By default, lig, prot, and waters return components associated with the first binding site. The filters can be changed so that lig, prot, and waters return other types of components; for example, the filters could be set so that both the protein and any waters are placed in prot, and any cofactors are placed in waters.
Any molecules returned have been given titles. Protein chains are given a shortened version of the input title combined with the chain ID. Small molecule titles are residue names. Molecules with more than one residue are combined with a - if they are covalently attached, and a . if not. Residue names are not repeated. So, a single two residue molecule combined with any number of waters might have the title XYZ-ABC.HOH. Output molecules may have SD Tags to indicate they include a covalent ligand.
Returns false if the task could not be performed (for example, if mol is empty). To check if a ligand was found, check the number of atoms in lig.
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.