def read_receptor(fragid, assembly_state, protonation_state): """ Read the receptor for the given fragment Parameters ---------- fragid : str The XChem fragment ID assembly_state : str Assembly state ['monomer', 'dimer'] protonation_state : str Protonation state ['neutral', 'charged'] Returns ------- receptor : OEReceptor The receptor """ from openeye import oechem receptor = oechem.OEGraphMol() suffix = '' if protonation_state == 'neutral' else '-thiolate' receptor_filename = f'../../receptors/{assembly_state}/Mpro-{fragment}_0A_bound-receptor{suffix}.oeb.gz' from openeye import oedocking oedocking.OEReadReceptorFile(receptor, receptor_filename) logging.info(f' Receptor has {receptor.NumAtoms()} atoms.') return receptor
def main(argv=[__name__]): if len(argv) != 3: oechem.OEThrow.Usage("SetOuterContourVolume.py <receptor> <volume>") receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, argv[1]): oechem.OEThrow.Fatal("Unable to open receptor file") outerContourVolume = float(argv[2]) # @ <SNIPPET-SET-OUTER-CONTOUR-VOLUME-1> negativeImagePotential = oedocking.OEReceptorGetNegativeImageGrid(receptor) gridElement = [] for i in range(negativeImagePotential.GetSize()): gridElement.append(negativeImagePotential[i]) gridElement.sort() gridElement.reverse() countToVolume = pow(negativeImagePotential.GetSpacing(), 3) ilevel = int((outerContourVolume / countToVolume) + 0.5) outerContourLevel = gridElement[-1] if ilevel < len(gridElement): outerContourLevel = gridElement[ilevel] oedocking.OEReceptorSetOuterContourLevel(receptor, outerContourLevel) # @ </SNIPPET-SET-OUTER-CONTOUR-VOLUME-1> if not oedocking.OEWriteReceptorFile(receptor, argv[1]): oechem.OEThrow.Fatal("Unable to write updated receptor")
def main(argv): if len(argv) != 2: oechem.OEThrow.Usage("%s <receptor>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) # @ <SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-1> for constraint in oedocking.OEReceptorGetProteinConstraints(receptor): print("Atom %i has a constraint" % constraint.GetAtom().GetIdx()) # @ </SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-1> # @ <SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-2> for constraint in oedocking.OEReceptorGetProteinConstraints(receptor): print("Protein constraint on atom %d" % constraint.GetAtom().GetIdx()) print(" Type : %s" % oedocking.OEProteinConstraintTypeGetName(constraint.GetType())) print(" Name : %s" % constraint.GetName()) # @ </SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-2> for heavyAtom in receptor.GetAtoms(oechem.OENotAtom(oechem.OEIsHydrogen())): # @ <SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-3> proteinConstraint = oedocking.OEProteinConstraint() proteinConstraint.SetAtom(heavyAtom) proteinConstraint.SetType(oedocking.OEProteinConstraintType_Contact) proteinConstraint.SetName("Example constraint") oedocking.OEReceptorSetProteinConstraint(receptor, proteinConstraint) # @ </SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-3> break # @ <SNIPPET-RECEPTOR-PROTEIN-CONSTRAINT-EDITING-4> oedocking.OEReceptorClearProteinConstraints(receptor)
def load_receptor(receptor_oeb_path): """Load an OpenEye receptor file in oeb format.""" if not os.path.exists(receptor_oeb_path): raise FileNotFoundError('Could not find ', receptor_oeb_path) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, receptor_oeb_path) return receptor
def dock_molecules(receptor_filename, molecules, filename): """ Dock the specified molecules, writing out to specified file Parameters ---------- receptor_filename : str Receptor .oeb.gz filename molecules : list of openeye.oechem.OEMol The read molecules to dock filename : str The filename to stream docked molecules to """ # Read the receptor print('Loading receptor...') from openeye import oechem, oedocking receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, 'receptor.oeb.gz'): oechem.OEThrow.Fatal("Unable to read receptor") if oedocking.OEReceptorHasBoundLigand(receptor): print("Receptor has a bound ligand") else: print("Receptor does not have bound ligand") print('Initializing receptor...') dockMethod = oedocking.OEDockMethod_Hybrid2 dockResolution = oedocking.OESearchResolution_High dock = oedocking.OEDock(dockMethod, dockResolution) success = dock.Initialize(receptor) # Set up Omega from openeye import oeomega omegaOpts = oeomega.OEOmegaOptions(oeomega.OEOmegaSampling_Dense) #omegaOpts = oeomega.OEOmegaOptions() omega = oeomega.OEOmega(omegaOpts) omega.SetStrictStereo(False) # Dock molecules with oechem.oemolostream(filename) as ofs: from tqdm import tqdm for mol in tqdm(molecules): dockedMol = oechem.OEGraphMol() # Expand conformers omega.Build(mol) # Dock molecule retCode = dock.DockMultiConformerMolecule(dockedMol, mol) if (retCode != oedocking.OEDockingReturnCode_Success): oechem.OEThrow.Fatal("Docking Failed with error code " + oedocking.OEDockingReturnCodeGetName(retCode)) # Store docking data sdtag = oedocking.OEDockMethodGetName(dockMethod) oedocking.OESetSDScore(dockedMol, dock, sdtag) dock.AnnotatePose(dockedMol) # Write molecule oechem.OEWriteMolecule(ofs, dockedMol)
def main(argv=[__name__]): itf = oechem.OEInterface(InterfaceData) if not oechem.OEParseCommandLine(itf, argv): return 1 imstr = oechem.oemolistream(itf.GetString("-in")) omstr = oechem.oemolostream(itf.GetString("-out")) receptors = [] for receptor_filename in itf.GetStringList("-receptors"): receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, receptor_filename): oechem.OEThrow.Fatal("Unable to read receptor from %s" % receptor_filename) receptors.append(receptor) poser = oedocking.OEPosit() for receptor in receptors: poser.AddReceptor(receptor) for mcmol in imstr.GetOEMols(): print("posing", mcmol.GetTitle()) result = oedocking.OESinglePoseResult() ret_code = poser.Dock(result, mcmol) if ret_code == oedocking.OEDockingReturnCode_Success: posedMol = result.GetPose() oechem.OESetSDData(posedMol, poser.GetName(), str(result.GetProbability())) oechem.OESetSDData(posedMol, "Receptor Index", str(result.GetReceptorIndex())) oechem.OEWriteMolecule(omstr, posedMol) else: errMsg = oedocking.OEDockingReturnCodeGetName(ret_code) oechem.OEThrow.Warning("%s: %s" % (mcmol.GetTitle(), errMsg)) return 0
def main(argv): if len(argv) != 2: oechem.OEThrow.Usage("%s <receptor>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) # @ <SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-1> if oedocking.OEReceptorHasBoundLigand(receptor): print("Receptor has a bound ligand") else: print("Receptor does not have bound ligand") # @ </SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-1> # @ <SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-2> ligand = oechem.OEGraphMol() if oedocking.OEReceptorHasBoundLigand(receptor): ligand = oedocking.OEReceptorGetBoundLigand(receptor) # @ </SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-2> # @ <SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-3> oedocking.OEReceptorSetBoundLigand(receptor, ligand) # @ </SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-3> # @ <SNIPPET-RECEPTOR-BOUND-LIGAND-EDITING-4> oedocking.OEReceptorClearBoundLigand(receptor)
def dock_molecules_to_receptor(receptor_filename): """ Dock the specified molecules, writing out to specified file Parameters ---------- receptor_filename : str Receptor .oeb.gz filename fragment : str The fragment name to dock to """ import os # Read the receptor from openeye import oechem, oedocking receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, receptor_filename): oechem.OEThrow.Fatal("Unable to read receptor") if not oedocking.OEReceptorHasBoundLigand(receptor): raise Exception("Receptor does not have bound ligand") #print('Initializing receptor...') dockMethod = oedocking.OEDockMethod_Hybrid2 dockResolution = oedocking.OESearchResolution_Default dock = oedocking.OEDock(dockMethod, dockResolution) success = dock.Initialize(receptor) # Set up Omega #print('Expanding conformers...') from openeye import oeomega #omegaOpts = oeomega.OEOmegaOptions(oeomega.OEOmegaSampling_Dense) omegaOpts = oeomega.OEOmegaOptions() omega = oeomega.OEOmega(omegaOpts) omega.SetStrictStereo(False) # Dock molecules docked_molecules = list() for mol in molecules: dockedMol = oechem.OEGraphMol() # Expand conformers omega.Build(mol) # Dock molecule #print(f'Docking {mol.NumConfs()} conformers...') retCode = dock.DockMultiConformerMolecule(dockedMol, mol) if (retCode != oedocking.OEDockingReturnCode_Success): print("Docking Failed with error code " + oedocking.OEDockingReturnCodeGetName(retCode)) continue # Store docking data sdtag = oedocking.OEDockMethodGetName(dockMethod) oedocking.OESetSDScore(dockedMol, dock, sdtag) dock.AnnotatePose(dockedMol) docked_molecules.append( oechem.OEMol(dockedMol) ) return docked_molecules
def receptor_from_file(receptor_filename): receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, receptor_filename): oechem.OEThrow.Fatal("Unable to read receptor") if not oedocking.OEReceptorHasBoundLigand(receptor): raise Exception("Receptor does not have bound ligand") return receptor
def PrepareReceptorFromBinary(filename): """ If a receptor.oeb has been created, use this version. If not, run 'PrepareReceptor' and a receptor.oeb will be created. """ receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor,filename) return receptor
def DockConf(pdb_file, mol, MAX_POSES = 5): receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, pdb_file) dock = oedocking.OEDock() dock.Initialize(receptor) lig = oechem.OEMol() err = dock.DockMultiConformerMolecule(lig,mol,MAX_POSES) return dock, lig, receptor
def PrepareReceptorFromBinary(filename): """ Gets receptor :param filename: file name of .oeb or .oeb.gz of prepared receptor for OE :return: OEMol receptor for docking """ receptor = oechem.OEMol() oedocking.OEReadReceptorFile(receptor, filename) return receptor
def __init__(self, receptor: utils.FilePath): self.receptor_file = receptor omegaOpts = oeomega.OEOmegaOptions() omegaOpts.SetStrictStereo(False) self.omega = oeomega.OEOmega(omegaOpts) oechem.OEThrow.SetLevel(10000) oereceptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(oereceptor, self.receptor_file) self.dock = oedocking.OEDock() self.dock.Initialize(oereceptor)
def DockConf(pdb_file, mol, MAX_POSES=1, dock=None): if dock is None: receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, pdb_file) dock = oedocking.OEDock(oedocking.OEScoreType_Chemgauss4, oedocking.OESearchResolution_High) dock.Initialize(receptor) else: receptor = None lig = DockConf_(dock, mol, MAX_POSES=MAX_POSES) return lig, receptor
def __init__(self, pdb_file): self.receptor = oechem.OEGraphMol() self.scorers = [oedocking.OEScore(oedocking.OEScoreType_Shapegauss), oedocking.OEScore(oedocking.OEScoreType_Chemscore), oedocking.OEScore(oedocking.OEScoreType_Chemgauss3), oedocking.OEScore(oedocking.OEScoreType_Chemgauss4), ] self.score = oedocking.OEScore(oedocking.OEScoreType_Chemgauss4) oedocking.OEReadReceptorFile(self.receptor, pdb_file) for score in self.scorers: score.Initialize(self.receptor)
def __init__(self, pdb_file): self.receptor = oechem.OEGraphMol() self.scorers = { 'Shapegauss': oedocking.OEScore(oedocking.OEScoreType_Shapegauss), 'Chemscore': oedocking.OEScore(oedocking.OEScoreType_Chemscore), 'Chemgauss': oedocking.OEScore(oedocking.OEScoreType_Chemgauss), 'Chemgauss3': oedocking.OEScore(oedocking.OEScoreType_Chemgauss3), 'Chemgauss4': oedocking.OEScore(oedocking.OEScoreType_Chemgauss4), } oedocking.OEReadReceptorFile(self.receptor, pdb_file) for _, score in self.scorers.items(): score.Initialize(self.receptor)
def main(argv=[__name__]): if len(argv) != 3: oechem.OEThrow.Usage("%s <receptor> <poses>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) oescore = oedocking.OEScore() oescore.Initialize(receptor) poses = oechem.OEGraphMol() imstr = oechem.oemolistream(argv[2]) for poses in imstr.GetOEMols(): TagPoses(oescore, poses, oescore.GetName())
def main(args): smiles = args.s receptor_name = args.r hostname = args.a port = args.p receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, args.r) client = DockingClient(hostname, port) score = client(smiles, receptor_name, receptor=receptor) print(score) return 0
def main(argv=[__name__]): if len(argv) != 3: oechem.OEThrow.Usage("%s <receptor> <conformers>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) dock = oedocking.OEDock() dock.Initialize(receptor) conformers = oechem.OEMol() imstr = oechem.oemolistream(argv[2]) for conformers in imstr.GetOEMols(): poses = oechem.OEMol() dock.DockMultiConformerMolecule(poses, conformers) TagPoses(dock, poses, dock.GetName())
def __init__(self, prefix: str, receptor_file: os.PathLike): """ :param prefix: Prefix to identify scoring function instance (e.g., Risperidone) :param receptor_file: Path to receptor file (.oeb). """ logger.warning("This code has not been tested (at all!)") self.prefix = prefix self.receptor_file = receptor_file omegaOpts = oeomega.OEOmegaOptions() omegaOpts.SetStrictStereo(False) self.omega = oeomega.OEOmega(omegaOpts) oechem.OEThrow.SetLevel(10000) oereceptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(oereceptor, self.receptor_file) self.oedock = oedocking.OEDock() self.oedock.Initialize(oereceptor)
def begin(self): receptor = oechem.OEGraphMol() self.args.receptor = utils.download_dataset_to_file(self.args.receptor) if not oedocking.OEReadReceptorFile(receptor, str(self.args.receptor)): raise Exception("Unable to read receptor from {0}".format(self.args.receptor)) # Initialize Docking dock_method = oedocking.OEDockMethod_Hybrid if not oedocking.OEReceptorHasBoundLigand(receptor): oechem.OEThrow.Warning("No bound ligand, switching OEDockMethod to ChemGauss4.") dock_method = oedocking.OEDockMethod_Chemgauss4 dock_resolution = oedocking.OESearchResolution_Default self.sdtag = oedocking.OEDockMethodGetName(dock_method) self.dock = oedocking.OEDock(dock_method, dock_resolution) if not self.dock.Initialize(receptor): raise Exception("Unable to initialize Docking with {0}".format(self.args.receptor))
def main(argv=[__name__]): itf = oechem.OEInterface(InterfaceData) # @ <SNIPPET-RESCORE-POSES-CONFIGURE> oedocking.OEScoreTypeConfigure(itf, "-score") # @ </SNIPPET-RESCORE-POSES-CONFIGURE> if not oechem.OEParseCommandLine(itf, argv): return 1 receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, itf.GetString("-receptor")): oechem.OEThrow.Fatal("Unable to read receptor") imstr = oechem.oemolistream() if not imstr.open(itf.GetString("-in")): oechem.OEThrow.Fatal("Unable to open input file of ligands") omstr = oechem.oemolostream() if not omstr.open(itf.GetString("-out")): oechem.OEThrow.Fatal("Unable to open out file for rescored ligands") # @ <SNIPPET-RESCORE-POSES-GET-VALUE> scoreType = oedocking.OEScoreTypeGetValue(itf, "-score") # @ </SNIPPET-RESCORE-POSES-GET-VALUE> # @ <SNIPPET-RESCORE-POSES-SETUP-SCORE> score = oedocking.OEScore(scoreType) # @ </SNIPPET-RESCORE-POSES-SETUP-SCORE> # @ <SNIPPET-RESCORE-POSES-INITIALIZE> score.Initialize(receptor) # @ </SNIPPET-RESCORE-POSES-INITIALIZE> for ligand in imstr.GetOEMols(): if itf.GetBool("-optimize"): # @ <SNIPPET-RESCORE-POSES-OPTIMIZE> score.SystematicSolidBodyOptimize(ligand) # @ </SNIPPET-RESCORE-POSES-OPTIMIZE> # @ <SNIPPET-RESCORE-POSES-ANNOTATE> score.AnnotatePose(ligand) # @ </SNIPPET-RESCORE-POSES-ANNOTATE> sdtag = score.GetName() # @ <SNIPPET-RESCORE-POSES-ASSIGN-SCORE> oedocking.OESetSDScore(ligand, score, sdtag) # @ </SNIPPET-RESCORE-POSES-ASSIGN-SCORE> # @ <SNIPPET-RESCORE-POSES-SCORE-SORTING> oechem.OESortConfsBySDTag(ligand, sdtag, score.GetHighScoresAreBetter()) # @ </SNIPPET-RESCORE-POSES-SCORE-SORTING> oechem.OEWriteMolecule(omstr, ligand) return 0
def main(argv=[__name__]): itf = oechem.OEInterface(InterfaceData) # @ <SNIPPET-DOCK-MOLECULES-CONFIGURE> oedocking.OEDockMethodConfigure(itf, "-method") oedocking.OESearchResolutionConfigure(itf, "-resolution") # @ </SNIPPET-DOCK-MOLECULES-CONFIGURE> if not oechem.OEParseCommandLine(itf, argv): return 1 imstr = oechem.oemolistream(itf.GetString("-in")) omstr = oechem.oemolostream(itf.GetString("-out")) receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, itf.GetString("-receptor")): oechem.OEThrow.Fatal("Unable to read receptor") # @ <SNIPPET-DOCK-MOLECULES-GET-VALUE> dockMethod = oedocking.OEDockMethodGetValue(itf, "-method") dockResolution = oedocking.OESearchResolutionGetValue(itf, "-resolution") # @ </SNIPPET-DOCK-MOLECULES-GET-VALUE> # @ <SNIPPET-DOCK-MOLECULES-SETUP> dock = oedocking.OEDock(dockMethod, dockResolution) # @ </SNIPPET-DOCK-MOLECULES-SETUP> # @ <SNIPPET-DOCK-MOLECULES-INITIALIZE> dock.Initialize(receptor) # @ </SNIPPET-DOCK-MOLECULES-INITIALIZE> for mcmol in imstr.GetOEMols(): print("docking", mcmol.GetTitle()) dockedMol = oechem.OEGraphMol() # @ <SNIPPET-DOCK-MOLECULES-DOCK> retCode = dock.DockMultiConformerMolecule(dockedMol, mcmol) if (retCode != oedocking.OEDockingReturnCode_Success): oechem.OEThrow.Fatal("Docking Failed with error code " + oedocking.OEDockingReturnCodeGetName(retCode)) # @ </SNIPPET-DOCK-MOLECULES-DOCK> sdtag = oedocking.OEDockMethodGetName(dockMethod) # @ <SNIPPET-DOCK-MOLECULES-ASSIGN-SCORE> oedocking.OESetSDScore(dockedMol, dock, sdtag) # @ </SNIPPET-DOCK-MOLECULES-ASSIGN-SCORE> # @ <SNIPPET-DOCK-MOLECULES-ANNOTATE> dock.AnnotatePose(dockedMol) # @ </SNIPPET-DOCK-MOLECULES-ANNOTATE> oechem.OEWriteMolecule(omstr, dockedMol) return 0
def __init__(self, prefix: str, receptor_file: str): """ Scoring function class to perform OpenEye docking (FRED) :param prefix: Name (to help keep track metrics, if using a scoring function class more than once) :param receptor_file: Path to oe receptor file. """ logger.warning("This code has not been tested (at all!)") self.prefix = prefix self.receptor_file = receptor_file omegaOpts = oeomega.OEOmegaOptions() omegaOpts.SetStrictStereo(False) self.omega = oeomega.OEOmega(omegaOpts) oechem.OEThrow.SetLevel(10000) oereceptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(oereceptor, self.receptor_file) self.oedock = oedocking.OEDock() self.oedock.Initialize(oereceptor)
def main(argv=[__name__]): if len(argv) != 3: oechem.OEThrow.Usage("%s <receptor> <ligand>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) oescore = oedocking.OEScore() oescore.Initialize(receptor) imstr = oechem.oemolistream(argv[2]) mcmol = oechem.OEMol() oechem.OEReadMolecule(imstr, mcmol) for pose in mcmol.GetConfs(): PrintScore(oescore, pose) for atom in pose.GetAtoms(): PrintAtomScore(oescore, pose, atom)
def main(argv=[__name__]): if len(argv) != 2: oechem.OEThrow.Usage("ToggleInterContour.py <receptor>") receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, argv[1]): oechem.OEThrow.Fatal("Cannot read receptor") # @ <SNIPPET-TOGGLE-INNER-CONTOUR-1> innerContourLevel = oedocking.OEReceptorGetInnerContourLevel(receptor) oedocking.OEReceptorSetInnerContourLevel(receptor, -innerContourLevel) # @ </SNIPPET-TOGGLE-INNER-CONTOUR-1> if innerContourLevel > 0.0: oechem.OEThrow.Info("Toggling inner contour off") else: oechem.OEThrow.Info("Toggling inner contour on") if not oedocking.OEWriteReceptorFile(receptor, argv[1]): oechem.OEThrow.Fatal("Unable to write receptor")
def main(argv=[__name__]): if len(argv) != 2: oechem.OEThrow.Usage("%s <receptor>" % argv[0]) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, argv[1]) # @ <SNIPPET-RECEPTOR-EXTRA-MOLECULES-EDITING-1> count = 0 newExtraMolList = [] for extraMol in oedocking.OEReceptorGetExtraMols(receptor): if count == 0: oedocking.OEReceptorSetBoundLigand(receptor, extraMol) else: newExtraMolList.append(extraMol) count += 1 oedocking.OEReceptorClearExtraMols(receptor) for extraMol in newExtraMolList: oedocking.OEReceptorAddExtraMol(receptor, extraMol)
def main(argv=[__name__]): if len(sys.argv) != 2: oechem.OEThrow.Usage("ReceptorOuterContourVolume.py <receptor>") receptor = oechem.OEGraphMol() if not oedocking.OEReadReceptorFile(receptor, sys.argv[1]): oechem.OEThrow.Fatal("%s is not a valid receptor", argv[1]) # @ <SNIPPET-RECEPTOR-OUTER-CONTOUR-VOLUME-1> negativeImagePotential = oedocking.OEReceptorGetNegativeImageGrid(receptor) outerContourLevel = oedocking.OEReceptorGetOuterContourLevel(receptor) outerCount = 0 for i in range(negativeImagePotential.GetSize()): if negativeImagePotential[i] >= outerContourLevel: outerCount += 1 countToVolume = pow(negativeImagePotential.GetSpacing(), 3) print(outerCount * countToVolume, " cubic angstroms")
def load_receptor(receptor_oeb_path): """Load an OpenEye receptor file in oeb format. Parameters ---------- receptor_oeb_path : str Receptor in OpenEye oeb binary format Returns ------- receptor : openeye.oedocking.OEReceptor The OpenEye receptor object """ from openeye import oechem, oedocking import os if not os.path.exists(receptor_oeb_path): raise FileNotFoundError('Could not find ', receptor_oeb_path) receptor = oechem.OEGraphMol() oedocking.OEReadReceptorFile(receptor, receptor_oeb_path) return receptor
def read_receptor(fragid): """ Read the receptor for the given fragment Parameters ---------- fragid : str The XChem fragment ID Returns ------- receptor : OEReceptor The receptor """ from openeye import oechem receptor = oechem.OEGraphMol() receptor_filename = f'../../receptors/monomer/Mpro-{fragment}_0A_bound-receptor.oeb.gz' from openeye import oedocking oedocking.OEReadReceptorFile(receptor, receptor_filename) print(f' Receptor has {receptor.NumAtoms()} atoms.') return receptor