コード例 #1
0
ファイル: _test_minima_searcher.py プロジェクト: js850/sens
class TestMinimaSearch(unittest.TestCase):
    def setUp(self):
        self.natoms = 6
        self.system = LJClusterSENS(self.natoms, 2.5)
        
        # create a database
        self.database = self.system.create_database()
        
        # add some minima to the database
        bh = self.system.get_basinhopping(self.database, outstream=None)
        while self.database.number_of_minima() < 2:
            bh.run(1)
        
        self.ndof = self.natoms * 3 - 6
    
        self.minima_searcher = _MinimaSearcher(self.database.minima(), energy_accuracy=1e-4, compare_structures=self.system.get_compare_exact())

    def test_exact(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(m.energy, m.coords)
            self.assertEqual(m, mret)

    def test_random(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(m.energy + np.random.uniform(-1e-4, 1e-4), m.coords)
            self.assertEqual(m, mret)
    def test_none(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(m.energy + 10., m.coords)
            self.assertIsNone(mret)
コード例 #2
0
class TestSENSExact_LJ(_test_ns_lj.TestNS_LJ):
    def setUp(self):
        #        self.seed = 4
        #        np.random.seed(self.seed)
        self.setUp1()

    def set_up_system(self):
        self.natoms = 6
        self.gmin = -12.7121
        self.system = LJClusterSENS(self.natoms, 2.5)
        self.ndof = 3 * self.natoms - 6

    def setUp1(self, nproc=1):
        self.set_up_system()
        self.nreplicas = 10
        self.stepsize = 0.01
        self.nproc = nproc

        self.database = self.system.create_database()
        # add some minima to the database
        bh = self.system.get_basinhopping(self.database, outstream=None)
        while self.database.number_of_minima() < 2:
            bh.run(1)
        # compute the thermodynamic information
        get_thermodynamic_information(self.system, self.database)
        get_all_normalmodes(self.system, self.database)

        self.minima = list(self.database.minima())
        assert self.database.number_of_minima(
        ) > 1, "%d minima" % self.database.number_of_minima()

        self.mc_runner = self.system.get_mc_walker(mciter=200)

        self.energy_accuracy = 1e-4
        self.ns = NestedSamplingSAExact(
            self.system,
            self.nreplicas,
            self.mc_runner,
            self.minima,
            self.energy_accuracy,
            mindist=self.system.get_mindist(),
            config_tests=self.system.get_config_tests(),
            stepsize=0.1,
            nproc=nproc,
            verbose=True,
            iprint=100)

        self.Emax0 = self.ns.replicas[-1].energy

        self.run_ns(max_iter=1000, Etol=.001)

    def test1(self):
        super(TestSENSExact_LJ, self).test1()
        self.assertGreater(self.ns.count_sampled_minima, 0)
コード例 #3
0
ファイル: _test_sens_exact_lj.py プロジェクト: js850/sens
class TestSENSExact_LJ(_test_ns_lj.TestNS_LJ):
    def setUp(self):
#        self.seed = 4
#        np.random.seed(self.seed)
        self.setUp1()
    
    def set_up_system(self):
        self.natoms = 6
        self.gmin = -12.7121
        self.system = LJClusterSENS(self.natoms, 2.5)
        self.ndof = 3*self.natoms - 6


    def setUp1(self, nproc=1):
        self.set_up_system()
        self.nreplicas = 10
        self.stepsize = 0.01
        self.nproc = nproc
        
        self.database = self.system.create_database()
        # add some minima to the database
        bh = self.system.get_basinhopping(self.database, outstream=None)
        while self.database.number_of_minima() < 2:
            bh.run(1)
        # compute the thermodynamic information
        get_thermodynamic_information(self.system, self.database)
        get_all_normalmodes(self.system, self.database)
        

        self.minima = list(self.database.minima())
        assert self.database.number_of_minima() > 1, "%d minima" %  self.database.number_of_minima()
        
        self.mc_runner = self.system.get_mc_walker(mciter=200)

        self.energy_accuracy = 1e-4
        self.ns = NestedSamplingSAExact(self.system, self.nreplicas, self.mc_runner,
                                   self.minima, self.energy_accuracy, 
                                   mindist=self.system.get_mindist(),
                                   config_tests = self.system.get_config_tests(),
                                   stepsize=0.1, nproc=nproc, verbose=True, iprint=100)
        
        self.Emax0 = self.ns.replicas[-1].energy
        
        self.run_ns(max_iter=1000, Etol=.001)
    

    
    def test1(self):
        super(TestSENSExact_LJ, self).test1()
        self.assertGreater(self.ns.count_sampled_minima, 0)
コード例 #4
0
class TestMinimaSearch(unittest.TestCase):
    def setUp(self):
        self.natoms = 6
        self.system = LJClusterSENS(self.natoms, 2.5)

        # create a database
        self.database = self.system.create_database()

        # add some minima to the database
        bh = self.system.get_basinhopping(self.database, outstream=None)
        while self.database.number_of_minima() < 2:
            bh.run(1)

        self.ndof = self.natoms * 3 - 6

        self.minima_searcher = _MinimaSearcher(
            self.database.minima(),
            energy_accuracy=1e-4,
            compare_structures=self.system.get_compare_exact())

    def test_exact(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(m.energy, m.coords)
            self.assertEqual(m, mret)

    def test_random(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(
                m.energy + np.random.uniform(-1e-4, 1e-4), m.coords)
            self.assertEqual(m, mret)

    def test_none(self):
        for m in self.database.minima():
            mret, tform = self.minima_searcher.get_minima(
                m.energy + 10., m.coords)
            self.assertIsNone(mret)
コード例 #5
0
ファイル: _test_sens_exact_lj.py プロジェクト: smcantab/sens
class TestSENSExact_LJ(_test_ns_lj.TestNS_LJ):
    def setUp(self):
        self.seed = np.random.randint(1000000)
#        self.seed = 549670 # failed self.assertGreater(self.ns.count_sampled_minima, 0)
        print "seed", self.seed
        np.random.seed(self.seed)
        self.setUp1()
    
    def set_up_system(self):
        self.natoms = 6
        self.gmin = -12.7121
        self.system = LJClusterSENS(self.natoms, 2.5)
        self.ndof = 3*self.natoms - 6


    def setUp1(self, nproc=1):
        self.set_up_system()
        self.nreplicas = 10# * nproc
        self.stepsize = 0.01
        self.nproc = nproc
        
        self.database = self.system.create_database()
        # add some minima to the database
        bh = self.system.get_basinhopping(self.database, outstream=None)
        while self.database.number_of_minima() < 2:
            bh.run(1)
        # compute the thermodynamic information
        get_thermodynamic_information(self.system, self.database)
        get_all_normalmodes(self.system, self.database)
        

        self.minima = list(self.database.minima())
        assert self.database.number_of_minima() > 1, "%d minima" %  self.database.number_of_minima()
        
        self.mc_runner = self.system.get_mc_walker(mciter=200)

        self.energy_accuracy = 1e-4
        self.hsa_sampler = HSASamplerCluster(self.minima, self.system.k, copy_minima=True, 
                                             center_minima=True, 
                                             energy_accuracy=self.energy_accuracy, 
                                             compare_structures=self.system.get_compare_exact(), 
                                             mindist=self.system.get_mindist(), 
                                             minimizer=self.system.get_minimizer(), 
                                             debug=True)

        replicas = _utils.create_replicas(self.system, self.nreplicas)
        potential = self.system.get_potential()
        potential.get_energy = potential.getEnergy
        self.ns = NestedSamplingSAExact(replicas, self.mc_runner,
                                   self.hsa_sampler, potential,
                                   config_tests=self.system.get_config_tests(),
                                   nproc=nproc, verbose=True, iprint=1, debug=True)
        
        self.Emax0 = self.ns.replicas[-1].energy
        
        self.run_ns(max_iter=1000, Etol=.001)
    

    
    def test1(self):
        super(TestSENSExact_LJ, self).test1()
        self.assertGreater(self.ns.number_swaps_accepted(), 0)