def superpose_proteins(reference_protein: oechem.OEGraphMol, fit_protein: oechem.OEGraphMol) -> oechem.OEGraphMol: """ Superpose a protein structure onto a reference protein. Parameters ---------- reference_protein: oechem.OEGraphMol An OpenEye molecule holding a protein structure which will be used as reference during superposition. fit_protein: oechem.OEGraphMol An OpenEye molecule holding a protein structure which will be superposed onto the reference protein. Returns ------- superposed_protein: oechem.OEGraphMol An OpenEye molecule holding the superposed protein structure. """ # do not modify input superposed_protein = fit_protein.CreateCopy() # set superposition method options = oespruce.OESuperpositionOptions() options.SetSuperpositionType(oespruce.OESuperpositionType_Global) # perform superposition superposition = oespruce.OEStructuralSuperposition(reference_protein, superposed_protein, options) superposition.Transform(superposed_protein) return superposed_protein
def remove_non_protein( molecule: oechem.OEGraphMol, exceptions: Union[None, List[str]] = None, remove_water: bool = False, ) -> oechem.OEGraphMol: """ Remove non-protein atoms from an OpenEye molecule. Parameters ---------- molecule: oechem.OEGraphMol An OpenEye molecule holding a molecular structure. exceptions: None or list of str Exceptions that should not be removed. remove_water: bool If water should be removed. Returns ------- selection: oechem.OEGraphMol An OpenEye molecule holding the filtered structure. """ if exceptions is None: exceptions = [] if remove_water is False: exceptions.append("HOH") # do not change input mol selection = molecule.CreateCopy() for atom in selection.GetAtoms(): residue = oechem.OEAtomGetResidue(atom) if residue.IsHetAtom(): if residue.GetName() not in exceptions: selection.DeleteAtom(atom) return selection