def main(args): if len(args) != 2: oechem.OEThrow.Usage("%s <input>" % args[0]) ifs = oechem.oemolistream() if not ifs.open(args[1]): oechem.OEThrow.Fatal("Unable to open %s for reading" % args[1]) mol = oechem.OEGraphMol() while oechem.OEReadMolecule(ifs, mol): oechem.OEAddExplicitHydrogens(mol) mmff = oeff.OEMMFF() if not mmff.PrepMol(mol) or not mmff.Setup(mol): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) continue # print out interactions vecCoords = oechem.OEDoubleArray(3 * mol.GetMaxAtomIdx()) mol.GetCoords(vecCoords) oechem.OEThrow.Info("Molecule: %s" % mol.GetTitle()) for intc in mmff.GetInteractions(mol, vecCoords): vecGrads = oechem.OEDoubleArray(intc.NumValues()) oechem.OEThrow.Info("Interaction: %s Value: %d" % (intc.GetName(), intc.GetValues(vecGrads))) for atom in intc.GetAtoms(): oechem.OEThrow.Info("Atom index: %d" % atom.GetIdx()) return 0
def main(args): if len(args) != 2: oechem.OEThrow.Usage("%s <input>" % args[0]) ifs = oechem.oemolistream() if not ifs.open(args[1]): oechem.OEThrow.Fatal("Unable to open %s for reading" % args[1]) mol = oechem.OEGraphMol() while oechem.OEReadMolecule(ifs, mol): oechem.OEAddExplicitHydrogens(mol) mmff = oeff.OEMMFF() if not mmff.PrepMol(mol) or not mmff.Setup(mol): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) continue vecCoords = oechem.OEDoubleArray(3 * mol.GetMaxAtomIdx()) mol.GetCoords(vecCoords) for fcomp in mmff.GetFComponents(vecCoords): oechem.OEThrow.Info( "Molecule: %s Component: %s Energy: %d kcal/mol" % (mol.GetTitle(), fcomp.name, fcomp.value)) return 0
def main(args): if len(args) != 3: oechem.OEThrow.Usage("%s <input> <output>" % args[0]) ifs = oechem.oemolistream() if not ifs.open(args[1]): oechem.OEThrow.Fatal("Unable to open %s for reading" % args[1]) ofs = oechem.oemolostream() if not ofs.open(args[2]): oechem.OEThrow.Fatal("Unable to open %s for writing" % args[2]) mmff = oeff.OEMMFF() # Setup adaptor. The first (false) means not to pass ownership of mmff, # and the second (false) means not to exclude interactions related # to the subset which would be fixed for calculations. adaptor = oeff.OETorAdaptor(mmff, False, False) # Use a simple predicate for the subset of torsions to optimize adaptor.Set(oechem.OEIsRotor()) mol = oechem.OEMol() while oechem.OEReadMolecule(ifs, mol): oechem.OEAddExplicitHydrogens(mol) # Use a simple atoms predicate for the subset, followed by setup if (not mmff.PrepMol(mol)) or (not adaptor.Setup(mol)): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) oechem.OEWriteMolecule(ofs, mol) continue vecCoords = oechem.OEDoubleArray(3*mol.GetMaxAtomIdx()) for conf in mol.GetConfs(): oechem.OEThrow.Info("Molecule: %s Conformer: %d" % (mol.GetTitle(), conf.GetIdx()+1)) conf.GetCoords(vecCoords) # Get adaptor variables set corresponding to the coordinates vecX = oechem.OEDoubleArray(adaptor.NumVar()) adaptor.GetVar(vecX, vecCoords) # Calculate energy using adaptor energy = adaptor(vecX) oechem.OEThrow.Info("Initial energy: %d kcal/mol" % energy) # Optimize the adaptor optimizer = oeff.OEBFGSOpt() energy = optimizer(adaptor, vecX, vecX) oechem.OEThrow.Info("Optimized energy: %d kcal/mol" % energy) # Get optimized coordinates corresponding to the adaptor optimized variables adaptor.AdaptVar(vecCoords, vecX) conf.SetCoords(vecCoords) oechem.OEWriteMolecule(ofs, mol) return 0
def mmff_energy(mol): """ Compute MMFF energy """ from openeye import oechem, oeff mol = oechem.OEGraphMol(mol) mmff = oeff.OEMMFF() if not mmff.PrepMol(mol) or not mmff.Setup(mol): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) return None vecCoords = oechem.OEDoubleArray(3*mol.GetMaxAtomIdx()) mol.GetCoords(vecCoords) energy = mmff(vecCoords) return energy
def main(args): if len(args) != 3: oechem.OEThrow.Usage("%s <input> <output>" % args[0]) ifs = oechem.oemolistream() if not ifs.open(args[1]): oechem.OEThrow.Fatal("Unable to open %s for reading" % args[1]) ofs = oechem.oemolostream() if not ofs.open(args[2]): oechem.OEThrow.Fatal("Unable to open %s for writing" % args[2]) mol = oechem.OEMol() while oechem.OEReadMolecule(ifs, mol): oechem.OEAddExplicitHydrogens(mol) mmff = oeff.OEMMFF() if not mmff.PrepMol(mol) or not mmff.Setup(mol): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) oechem.OEWriteMolecule(ofs, mol) continue vecCoords = oechem.OEDoubleArray(3 * mol.GetMaxAtomIdx()) for conf in mol.GetConfs(): oechem.OEThrow.Info("Molecule: %s Conformer: %d" % (mol.GetTitle(), conf.GetIdx() + 1)) conf.GetCoords(vecCoords) energy = mmff(vecCoords) oechem.OEThrow.Info("Initial energy: %d kcal/mol" % energy) optimizer = oeff.OEBFGSOpt() energy = optimizer(mmff, vecCoords, vecCoords) oechem.OEThrow.Info("Optimized energy: %d kcal/mol" % energy) conf.SetCoords(vecCoords) oechem.OEWriteMolecule(ofs, mol) return 0
def main(args): if len(args) != 5: oechem.OEThrow.Usage("%s <protein> <ligand> <bound-ligand> <output>" % args[0]) ips = oechem.oemolistream() if not ips.open(args[1]): oechem.OEThrow.Fatal("Unable to open %s for reading protein" % args[1]) ils = oechem.oemolistream() if not ils.open(args[2]): oechem.OEThrow.Fatal("Unable to open %s for reading ligand" % args[2]) ibs = oechem.oemolistream() if not ibs.open(args[3]): oechem.OEThrow.Fatal("Unable to open %s for reading bound ligand" % args[3]) ofs = oechem.oemolostream() if not ofs.open(args[4]): oechem.OEThrow.Fatal("Unable to open %s for writing" % args[4]) # Load the protein molecule and Prepare with MMFF protein = oechem.OEGraphMol() oechem.OEReadMolecule(ips, protein) oechem.OEAddExplicitHydrogens(protein) mmff2 = oeff.OEMMFF() mmff = oeff.OEGenericFF(mmff2) mmff.PrepMol(protein) # Get bounds for protein ligand interaction bounds = oechem.OEDoubleArray(6) boundsMol = oechem.OEGraphMol() oechem.OEReadMolecule(ibs, boundsMol) GetBoundsFromMol(bounds, boundsMol, 5.0) # Create intermolecular interaction functions and add to MMFF params = oeff.OEMMFFParams() interVdw = oeff.OEMMFFInterVdwNN(protein, params, bounds) interCoul = oeff.OEMMFFInterCoulomb(protein, bounds, 1.0, 1.0, 0.5) mmff.Add(interVdw) mmff.Add(interCoul) mol = oechem.OEMol() while oechem.OEReadMolecule(ils, mol): oechem.OEAddExplicitHydrogens(mol) if (not mmff.PrepMol(mol)) or (not mmff.Setup(mol)): oechem.OEThrow.Warning("Unable to process molecule: title = '%s'" % mol.GetTitle()) oechem.OEWriteMolecule(ofs, mol) continue vecCoords = oechem.OEDoubleArray(3 * mol.GetMaxAtomIdx()) for conf in mol.GetConfs(): oechem.OEThrow.Info("Molecule: %s Conformer: %d" % (mol.GetTitle(), conf.GetIdx() + 1)) conf.GetCoords(vecCoords) # Calculate energy energy = mmff(vecCoords) oechem.OEThrow.Info("Initial energy: %d kcal/mol" % energy) # Optimize the ligand optimizer = oeff.OEBFGSOpt() energy = optimizer(mmff, vecCoords, vecCoords) oechem.OEThrow.Info("Optimized energy: %d kcal/mol" % energy) conf.SetCoords(vecCoords) oechem.OEWriteMolecule(ofs, mol) return 0