示例#1
0
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)
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
 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)
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
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)
示例#12
0
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)))
示例#13
0
    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.
示例#14
0
    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.
示例#15
0
    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)
示例#16
0
    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)
示例#17
0
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 
示例#18
0
    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)
示例#19
0
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)
示例#20
0
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()
示例#21
0
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)
示例#22
0
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)