def test(): # pragma: no cover from pele.systems import LJCluster from pele.transition_states import GeneralizedDimer from pele.transition_states import FindTransitionState from pele.utils.xyz import read_xyz system = LJCluster(13) x = system.get_random_configuration() x = read_xyz(open("tests/lj18_ts.xyz", "r")).coords.flatten() dimer = GeneralizedDimer(x.copy(), system.get_potential(), rotational_steps=40, dimer=False, leig_kwargs=dict(iprint=10, maxstep=2., tol=.1, ), translator_kwargs=dict(iprint=1, verbosity=10, ), ) ret = dimer.run() print(ret) print("\n\nnow the same with the old version") searcher = FindTransitionState(x.copy(), system.get_potential(), iprint=1, verbosity=10) # print ret ret = searcher.run() print(ret)
def test_ts(self): from pele.utils.xyz import read_xyz path = os.path.dirname(os.path.abspath(__file__)) xyz = read_xyz(open(path + "/lj18_ts.xyz", "r")) x = xyz.coords.flatten() vec = np.random.rand(x.size) vec /= np.linalg.norm(vec) self.eigpot = LowestEigPot(x, self.pot, orthogZeroEigs=self.system. get_orthogonalize_to_zero_eigenvectors(), first_order=self.first_order) e1 = self.eigpot.getEnergy(vec) e, g = self.eigpot.getEnergyGradient(vec) gnum = self.eigpot.NumericalDerivative(vec, eps=1e-4) gnum -= np.dot(gnum, vec) self.assertLess(old_div(np.max(np.abs(g - gnum)), np.max(np.abs(g))), 1e-3) self.assertAlmostEqual(e, e1, delta=e * 1e-4) self.assertAlmostEqual( 1., np.dot(g, gnum) / np.linalg.norm(g) / np.linalg.norm(gnum), 3)
def setUp(self): self.pot = _lj_cpp.LJ() self.natoms = 13 self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5.0 current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_lj13_gmin.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin = float(xyz.title)
def setUp(self): self.pot = _lj_cpp.LJ() self.natoms = 13 self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5. current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_lj13_gmin.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin = float(xyz.title)
def setUp(self): current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_morse13_min.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin, rho, r0, A = map(float, xyz.title.split()[1::2]) self.natoms = self.xmin.size / 3 self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5. self.pot = _morse_cpp.Morse(rho=rho, r0=r0, A=A)
def setUp(self): current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_morse13_min.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin, rho, r0, A = map(float, xyz.title.split()[1::2]) self.natoms = self.xmin.size / 3 self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5.0 self.pot = _morse_cpp.Morse(rho=rho, r0=r0, A=A)
def test2(self): # get the path of the file directory path = os.path.dirname(os.path.abspath(__file__)) xyz = read_xyz(open(path + "/lj18_ts.xyz", "r")) x = xyz.coords.flatten() dimer = self.make_dimer(x) res = dimer.run() self.assertTrue(res.success) self.assertLess(res.nsteps, 5)
def test2(self): # get the path of the file directory path = os.path.dirname(os.path.abspath(__file__)) xyz = read_xyz(open(path+"/lj18_ts.xyz", "r")) x = xyz.coords.flatten() dimer = self.make_dimer(x) res = dimer.run() self.assertTrue(res.success) self.assertLess(res.nsteps, 5)
def setUp(self): np.random.seed(0) self.natoms = 13 nlist = [[i, j] for i in range(self.natoms) for j in range(i + 1, self.natoms)] nlist = np.array(nlist, dtype=np.int64).reshape(-1) self.pot = _lj_cpp.LJNeighborList(nlist) self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5. current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_lj13_gmin.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin = float(xyz.title)
def setUp(self): np.random.seed(0) self.natoms = 13 nlist = [[i, j] for i in xrange(self.natoms) for j in xrange(i + 1, self.natoms)] nlist = np.array(nlist, dtype=np.int64).reshape(-1) self.pot = _lj_cpp.LJNeighborList(nlist) self.xrandom = np.random.uniform(-1, 1, [3 * self.natoms]) * 5.0 current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_lj13_gmin.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() self.Emin = float(xyz.title)
def test_fcc(): from pele.utils.xyz import read_xyz fname = "fcc100-coords.8x8x8.xyz" pot = SuttonChen(rcut=3.2, boxvec=[8.]*3, c=144.41, n=12, m=6) pot = SuttonChen(rcut=3.2, boxvec=[8.]*3, c=34.408, n=10, m=8) xyz = read_xyz(open(fname, "r")) x = xyz.coords.flatten() e, g = pot.getEnergyGradient(x) print "energy", e print "norm grad", np.linalg.norm(g) print "rms grad", np.linalg.norm(g) / np.sqrt(g.size)
def test_fcc(): # pragma: no cover from pele.utils.xyz import read_xyz fname = "fcc100-coords.8x8x8.xyz" # pot = SuttonChen(rcut=3.2, boxvec=[8.] * 3, c=144.41, n=12, m=6) pot = SuttonChen(rcut=3.2, boxvec=[8.] * 3, c=34.408, n=10, m=8) xyz = read_xyz(open(fname, "r")) x = xyz.coords.flatten() e, g = pot.getEnergyGradient(x) print("energy", e) print("norm grad", np.linalg.norm(g)) print("rms grad", old_div(np.linalg.norm(g), np.sqrt(g.size)))
def setUp(self): np.random.seed(1) current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_blj13_min.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() ntypeA, self.Emin, rcut, epsAA, sigAA, epsBB, sigBB, epsAB, sigAB = list(map(float, xyz.title.split()[1::2])) ntypeA = int(ntypeA) self.rcut = rcut natoms = self.xmin.size // 3 self.pot = BLJCut(natoms, ntypeA, rcut=rcut, sigAA=sigAA, epsAA=epsAA, epsBB=epsBB, sigBB=sigBB, epsAB=epsAB, sigAB=sigAB) self.xrandom = np.random.uniform(-1, 1, self.xmin.size) * 5.
def setUp(self): np.random.seed(1) current_dir = os.path.dirname(__file__) xyz = read_xyz(open(current_dir + "/_blj13_min.xyz", "r")) self.xmin = xyz.coords.reshape(-1).copy() ntypeA, self.Emin, rcut, epsAA, sigAA, epsBB, sigBB, epsAB, sigAB = map(float, xyz.title.split()[1::2]) ntypeA = int(ntypeA) self.rcut = rcut natoms = self.xmin.size / 3 self.pot = BLJCut(natoms, ntypeA, rcut=rcut, sigAA=sigAA, epsAA=epsAA, epsBB=epsBB, sigBB=sigBB, epsAB=epsAB, sigAB=sigAB) self.xrandom = np.random.uniform(-1, 1, self.xmin.size) * 5.
def test1(self): d = os.path.dirname(__file__) fname = os.path.join(d, "coords.lj75.gmin.xyz") xyz = read_xyz(open(fname, "r")) coords = xyz.coords.reshape(-1) print fname self.assertEqual(coords.size, 75 * 3) permlist = [range(75)] match = ExactMatchAtomicCluster(permlist=permlist, can_invert=True) calculator = PointGroupOrderCluster(match) pgorder = calculator(coords) # print pgorder self.assertEqual(pgorder, 20)
def test1(self): d = os.path.dirname(__file__) fname = os.path.join(d, "coords.lj75.gmin.xyz") xyz = read_xyz(open(fname, "r")) coords = xyz.coords.reshape(-1) print(fname) self.assertEqual(coords.size, 75*3) permlist = [list(range(75))] match = ExactMatchAtomicCluster(permlist=permlist, can_invert=True) calculator = PointGroupOrderCluster(match) pgorder = calculator(coords) # print pgorder self.assertEqual(pgorder, 20)
def water(xyzfile): # TIP4P-16.xyz" ref = xyz.read_xyz(open(xyzfile)) xyz.write_xyz(open("test.xyz", "w"), coords=ref.coords) # lookup table for atom masses mass_lookup = {'O': 16., 'H': 1.} rb_sites = [] for atomtype, x, i in zip(ref.atomtypes, ref.coords, xrange(len(ref.atomtypes))): # every 3rd atom, define a new reigid molecule if i % 3 == 0: rb = rigidbody.RigidFragment() rb_sites.append(rb) rb.add_atom(atomtype, x, mass_lookup[atomtype]) # finalize the rigid body setup for rb in rb_sites: rb.finalize_setup() return rb_sites, ref
def test_ts(self): from pele.utils.xyz import read_xyz path = os.path.dirname(os.path.abspath(__file__)) xyz = read_xyz(open(path + "/lj18_ts.xyz", "r")) x = xyz.coords.flatten() vec = np.random.rand(x.size) vec /= np.linalg.norm(vec) self.eigpot = LowestEigPot(x, self.pot, orthogZeroEigs=self.system.get_orthogonalize_to_zero_eigenvectors(), first_order=self.first_order) e1 = self.eigpot.getEnergy(vec) e, g = self.eigpot.getEnergyGradient(vec) gnum = self.eigpot.NumericalDerivative(vec, eps=1e-4) gnum -= np.dot(gnum, vec) self.assertLess(np.max(np.abs(g-gnum)) / np.max(np.abs(g)), 1e-3) self.assertAlmostEqual(e, e1, delta=e * 1e-4) self.assertAlmostEqual(1., np.dot(g, gnum) / np.linalg.norm(g) / np.linalg.norm(gnum), 3)
def test(): # pragma: no cover from pele.systems import LJCluster from pele.transition_states import GeneralizedDimer from pele.transition_states import FindTransitionState from pele.utils.xyz import read_xyz system = LJCluster(13) x = system.get_random_configuration() x = read_xyz(open("tests/lj18_ts.xyz", "r")).coords.flatten() dimer = GeneralizedDimer( x.copy(), system.get_potential(), rotational_steps=40, dimer=False, leig_kwargs=dict( iprint=10, maxstep=2., tol=.1, ), translator_kwargs=dict( iprint=1, verbosity=10, ), ) ret = dimer.run() print(ret) print("\n\nnow the same with the old version") searcher = FindTransitionState(x.copy(), system.get_potential(), iprint=1, verbosity=10) # print ret ret = searcher.run() print(ret)
from __future__ import print_function from builtins import zip from builtins import range import numpy as np from pele.potentials import LJ from pele.utils import xyz from pele.angleaxis import rigidbody from pele.optimize import lbfgs_py # read in coordinates from xyz file ref = xyz.read_xyz(open("water.xyz")) xyz.write_xyz(open("test.xyz", "w"), coords=ref.coords) # lookup table for atom masses mass_lookup = {'O': 16., 'H': 1.} #ref.coords[:] *= 3 # now define a new rigid body system rb_sites = [] for atomtype, x, i in zip(ref.atomtypes, ref.coords, range(len(ref.atomtypes))): # every 3rd atom, define a new reigid molecule if i % 3 == 0: rb = rigidbody.RigidFragment() rb_sites.append(rb) rb.add_atom(atomtype, x, mass_lookup[atomtype]) # finalize the rigid body setup for rb in rb_sites: rb.finalize_setup()
import numpy as np from pele.potentials import LJ from pele.utils import xyz from pele.angleaxis import rigidbody from pele.optimize import lbfgs_py # read in coordinates from xyz file ref = xyz.read_xyz(open("TIP4P-16.xyz")) xyz.write_xyz(open("test.xyz", "w"), coords=ref.coords) # lookup table for atom masses mass_lookup = {'O': 16., 'H': 1.} #ref.coords[:] *= 3 # now define a new rigid body system rb_sites = [] for atomtype, x, i in zip(ref.atomtypes, ref.coords, xrange(len(ref.atomtypes))): # every 3rd atom, define a new reigid molecule if i % 3 == 0: rb = rigidbody.RigidFragment() rb_sites.append(rb) rb.add_atom(atomtype, x, mass_lookup[atomtype]) # finalize the rigid body setup for rb in rb_sites: rb.finalize_setup() # define a new rigid body system rbsystem = rigidbody.RBSystem() rbsystem.add_sites(rb_sites)
import numpy as np from pele.potentials import LJ from pele.utils import xyz from pele.angleaxis import rigidbody from pele.optimize import lbfgs_py # read in coordinates from xyz file ref = xyz.read_xyz(open("water.xyz")) xyz.write_xyz(open("test.xyz", "w"), coords = ref.coords) # lookup table for atom masses mass_lookup = {'O': 16., 'H': 1.} #ref.coords[:] *= 3 # now define a new rigid body system rb_sites = [] for atomtype, x, i in zip(ref.atomtypes, ref.coords, xrange(len(ref.atomtypes))): # every 3rd atom, define a new reigid molecule if i%3 == 0: rb = rigidbody.RigidFragment() rb_sites.append(rb) rb.add_atom(atomtype, x, mass_lookup[atomtype]) # finalize the rigid body setup for rb in rb_sites: rb.finalize_setup() # define a new rigid body system rbsystem = rigidbody.RBSystem() rbsystem.add_sites(rb_sites)