def test(): from pygmin.systems import LJCluster natoms = 13 system = LJCluster(natoms) db = system.create_database() # get some minima bh = system.get_basinhopping(database=db, outstream=None) bh.run(100) manager = ConnectManager(db, clust_min=2) for i in range(4): min1, min2 = manager.get_connect_job(strategy="random") print "connecting", min1._id, min2._id connect = system.get_double_ended_connect(min1, min2, db, verbosity=0) connect.connect() print "\n\ntesting untrap" for i in range(10): min1, min2 = manager.get_connect_job(strategy="untrap") print min1._id, min2._id print "\n\ntesting combine" for i in range(5): min1, min2 = manager.get_connect_job(strategy="combine") print min1._id, min2._id print "\n\ntesting gmin" for i in range(5): min1, min2 = manager.get_connect_job(strategy="gmin") print min1._id, min2._id
def spawnlj(**kwargs): from pygmin.systems import LJCluster from pygmin.config import config import os natoms = 13 sys = LJCluster(natoms) db = sys.create_database() x1, E1 = sys.get_random_minimized_configuration()[:2] x2, E2 = sys.get_random_minimized_configuration()[:2] m1 = db.addMinimum(E1, x1) m2 = db.addMinimum(E2, x2) optim = "/home/js850/git/OPTIM/source/build/OPTIM" optim = config.get("exec", "OPTIM") optim = os.path.expandvars(os.path.expanduser(optim)) spawner = SpawnOPTIM_LJ(x1, x2, sys, OPTIM=optim, **kwargs) spawner.run() spawner.load_results(db)
def get_database(natoms=13, nconn=5): """create a database for a lennard jones system fill it with minima from a basinhopping run, then connect some of those minima using DoubleEndedConnect """ ljsys = LJCluster(natoms) db = ljsys.create_database() bh = ljsys.get_basinhopping(database=db, outstream=None) while (len(db.minima()) < nconn + 1): bh.run(100) minima = list(db.minima()) m1 = minima[0] for m2 in minima[1:nconn + 1]: connect = ljsys.get_double_ended_connect(m1, m2, db) connect.connect() return db
def get_database(natoms=13, nconn=5): """create a database for a lennard jones system fill it with minima from a basinhopping run, then connect some of those minima using DoubleEndedConnect """ ljsys = LJCluster(natoms) db = ljsys.create_database() bh = ljsys.get_basinhopping(database=db, outstream=None) while len(db.minima()) < nconn + 1: bh.run(100) minima = list(db.minima()) m1 = minima[0] for m2 in minima[1 : nconn + 1]: connect = ljsys.get_double_ended_connect(m1, m2, db) connect.connect() return db
self.nsteps = nsteps self.mcstep = RandomDisplacement(stepsize=stepsize) def takeStep(self, coords, **kwargs): #make a new monte carlo class mc = MonteCarlo(coords, self.potential, self.mcstep, temperature = self.T, outstream=None) mc.run( self.nsteps ) coords[:] = mc.coords[:] def updateStep(self, acc, **kwargs): pass natoms = 12 niter = 100 system = LJCluster(natoms) db = system.create_database() # create takestep routine manually potential = system.get_potential() step = TakeStepMonteCarlo(potential) bh = system.get_basinhopping(database=db, takestep=step) bh.run(niter) print "the lowest energy found after", niter, " basinhopping steps is", db.minima()[0].energy print ""
wnd.start() if __name__ == "__main__": from OpenGL.GLUT import glutInit import sys import pylab as pl app = QtGui.QApplication(sys.argv) from pygmin.systems import LJCluster pl.ion() natoms = 13 system = LJCluster(natoms) system.params.double_ended_connect.local_connect_params.NEBparams.iter_density = 5. dbname = "lj%dtest.db" % (natoms,) db = system.create_database(dbname) #get some minima if False: bh = system.get_basinhopping(database=db) bh.run(10) minima = db.minima() else: x1, e1 = system.get_random_minimized_configuration()[:2] x2, e2 = system.get_random_minimized_configuration()[:2] min1 = db.addMinimum(e1, x1) min2 = db.addMinimum(e2, x2) minima = [min1, min2] # connect some of the minima
""" Example 2: reading coords from file """ import numpy as np from pygmin.systems import LJCluster natoms = 12 niter = 100 system = LJCluster(natoms) coords = np.loadtxt('coords') coords = coords.reshape(-1) db = system.create_database() bh = system.get_basinhopping(database=db) bh.run(niter) print "the lowest energy found after", niter, " basinhopping steps is", db.minima()[0].energy print ""
from random import choice from pygmin.systems import LJCluster from pygmin.storage import Minimum from pygmin.concurrent import RandomConnectServer server_name = "ljconnect_example" hostname="localhost" port=11567 print "setting up LJ38 with database lj38.sqlite" system = LJCluster(38) db = system.create_database("lj38.sqlite") if db.session.query(Minimum).count() < 10: print "The database is empty, run basinhopping to get some minima" bh = system.get_basinhopping(database=db) bh.run(100) print "Working on %d minima"%db.session.query(Minimum).count() print "Running basinhopping to generate initial database" print "Creating new connect manager" connect_manager=RandomConnectServer(system, db, server_name=server_name, host=hostname, port=port) connect_manager.run()
Since we don't already have a database, for this example we'll build a small one using basinhopping" """ import numpy as np import logging from pygmin.systems import LJCluster from pygmin.utils.disconnectivity_graph import DisconnectivityGraph, database2graph natoms = 13 system = LJCluster(natoms) use_existing_database = False if use_existing_database: db = system.create_database("lj13.sqlite", createdb=False) else: # build a small database using basinhopping print "building a small database using basinhopping" "" db = system.create_database() bh = system.get_basinhopping(database=db, outstream=None) bh.run(20) print "starting with a database of", len(db.minima()), "minima" # turn of status printing for the connect run # first use the logging module to turn off the status messages logger = logging.getLogger("pygmin.connect") logger.setLevel("WARNING")
else: faccept = float(ndiff_accept) / ndiff if faccept > self.target_new_min_accept_prob: driver.acceptTest.temperature *= self.Tfactor else: driver.acceptTest.temperature /= self.Tfactor if self.verbose: print " temperature is now %.4g ratio %.4g target %.4g" % (driver.acceptTest.temperature, faccept, self.target_new_min_accept_prob) if __name__ == "__main__": import numpy as np from pygmin.takestep import displace from pygmin.systems import LJCluster #from pygmin.takestep import adaptive natoms = 38 sys = LJCluster(natoms=38) # random initial coordinates coords = sys.get_random_configuration() takeStep = displace.RandomDisplacement( stepsize=0.4 ) tsAdaptive = AdaptiveStepsizeTemperature(takeStep, interval=300, verbose=True) db = sys.create_database() opt = sys.get_basinhopping(database=db, takestep=tsAdaptive, coords=coords) opt.printfrq = 50 opt.run(5000)
wnd.start() if __name__ == "__main__": from OpenGL.GLUT import glutInit import sys import pylab as pl app = QtGui.QApplication(sys.argv) from pygmin.systems import LJCluster pl.ion() natoms = 13 system = LJCluster(natoms) system.params.double_ended_connect.local_connect_params.NEBparams.iter_density = 5. dbname = "lj%dtest.db" % (natoms, ) db = system.create_database(dbname) #get some minima if False: bh = system.get_basinhopping(database=db) bh.run(10) minima = db.minima() else: x1, e1 = system.get_random_minimized_configuration()[:2] x2, e2 = system.get_random_minimized_configuration()[:2] min1 = db.addMinimum(e1, x1) min2 = db.addMinimum(e2, x2) minima = [min1, min2] # connect some of the minima nmax = min(3, len(minima))
self.ui.label.setText(label) if with_path: coordspath = np.array(self.quench_path) self.ui.show3d.setCoordsPath(coordspath, frame=-1) else: self.ui.show3d.setCoords(self.coords, index=2) self.ui.show3d.setCoords(self.quenched, index=1) if __name__ == "__main__": import sys import pylab as pl from OpenGL.GLUT import glutInit glutInit() app = QtGui.QApplication(sys.argv) from pygmin.systems import LJCluster pl.ion() natoms = 13 system = LJCluster(natoms) system.params.double_ended_connect.local_connect_params.NEBparams.iter_density = 5. x1, e1 = system.get_random_minimized_configuration()[:2] x2, e2 = system.get_random_minimized_configuration()[:2] db = system.create_database(db=":memory:") system.database = db min1 = db.addMinimum(e1, x1) min2 = db.addMinimum(e2, x2) wnd = TakestepExplorer(app=app, system=system, database = db) wnd.show() from PyQt4.QtCore import QTimer sys.exit(app.exec_())