Beispiel #1
0
 def do_check(self, A, B, nnodes=20, nedges=20):
     np.random.seed(0)
     maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
     maker.run()
     reducer = NGT(maker.rates, A, B, debug=False)  
     reducer.compute_rates()
     rAB = reducer.get_rate_AB()
     rBA = reducer.get_rate_BA()
Beispiel #2
0
 def do_check(self, A, B, nnodes=20, nedges=20):
     np.random.seed(0)
     maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
     maker.run()
     reducer = NGT(maker.rates, A, B, debug=False)  
     reducer.compute_rates()
     rAB = reducer.get_rate_AB()
     rBA = reducer.get_rate_BA()
Beispiel #3
0
    def compare(self, A, B, nnodes=10, nedges=20, weights=None, x=1):
        print ""
        maker = _MakeRandomGraph(nnodes=nnodes,
                                 nedges=nedges,
                                 node_set=A + B + [x])
        graph = maker.run()
        graph_backup = graph.copy()
        reducer = GraphReduction(maker.rates, A, B, weights=weights)
        kmc = KineticMonteCarlo(graph_backup, debug=False)

        # test compute_committor_probability()
        PxB = reducer.compute_committor_probability(x)
        PxB_kmc = kmc.committor_probability(x, A, B, niter=1000)
        print "committor probability    ", x, "->", B, "=", PxB
        print "committor probability kmc", x, "->", B, "=", PxB_kmc
        self.assertAlmostEqual(PxB, PxB_kmc, delta=.1)

        reducer.compute_rates()
        rAB = reducer.get_rate_AB()
        rBA = reducer.get_rate_BA()
        rAB_SS = reducer.get_rate_AB_SS()

        # compute rate via linalg
        lin = TwoStateRates(maker.rates, A, B, weights=weights)
        lin.compute_rates()
        rAB_LA = lin.get_rate_AB()
        lin.compute_committors()
        rAB_SS_LA = lin.get_rate_AB_SS()
        self.assertAlmostEqual(rAB_SS, rAB_SS_LA, 5)
        PxB_LA = lin.get_committor(x)
        if x not in A and x not in B:
            self.assertAlmostEqual(PxB, PxB_LA, 5)

        rAB_KMC = kmc.mean_rate(A, B, niter=1000, weights=weights)

        print "NGT rate A->B", rAB
        print "KMC rate A->B", rAB_KMC
        print "normalized difference", (rAB - rAB_KMC) / rAB
        print "normalized difference to linalg", (rAB - rAB_LA) / rAB
        self.assertLess(abs(rAB - rAB_KMC) / rAB, .1)
        self.assertLess(abs(rAB - rAB_LA) / rAB, .00001)

        rBA_KMC = kmc.mean_rate(B, A, niter=1000, weights=weights)

        print "NGT rate B->A", rBA
        print "KMC rate B->A", rBA_KMC
        print "normalized difference", (rBA - rBA_KMC) / rBA
        self.assertLess(abs(rBA - rBA_KMC) / rBA, .1)

        paB = kmc.committor_probability(A[0], [A[0]], B, niter=1000)
        print "the committor probability a->B", paB
        print "graph reduction committor prob", reducer.get_committor_probabilityAB(
            A[0])
        self.assertAlmostEqual(paB,
                               reducer.get_committor_probabilityAB(A[0]),
                               delta=.1)
Beispiel #4
0
    def compare(self, A, B, nnodes=10, nedges=20, weights=None, x=1):
        print ""
        maker = _MakeRandomGraph(nnodes=nnodes, nedges=nedges, node_set=A+B+[x])
        graph = maker.run()
        graph_backup = graph.copy()
        reducer = GraphReduction(maker.rates, A, B, weights=weights)
        kmc = KineticMonteCarlo(graph_backup, debug=False)
        
        # test compute_committor_probability()
        PxB = reducer.compute_committor_probability(x)
        PxB_kmc = kmc.committor_probability(x, A, B, niter=1000)
        print "committor probability    ", x, "->", B, "=", PxB
        print "committor probability kmc", x, "->", B, "=", PxB_kmc
        self.assertAlmostEqual(PxB, PxB_kmc, delta=.1)
        
        reducer.compute_rates()
        rAB = reducer.get_rate_AB()
        rBA = reducer.get_rate_BA()
        rAB_SS = reducer.get_rate_AB_SS()
        
        # compute rate via linalg
        lin = TwoStateRates(maker.rates, A, B, weights=weights)
        lin.compute_rates()
        rAB_LA = lin.get_rate_AB()
        lin.compute_committors()
        rAB_SS_LA = lin.get_rate_AB_SS()
        self.assertAlmostEqual(rAB_SS, rAB_SS_LA, 5)
        PxB_LA = lin.get_committor(x)
        if x not in A and x not in B:
            self.assertAlmostEqual(PxB, PxB_LA, 5)
        
         
        rAB_KMC = kmc.mean_rate(A, B, niter=1000, weights=weights)
        
        print "NGT rate A->B", rAB
        print "KMC rate A->B", rAB_KMC
        print "normalized difference", (rAB - rAB_KMC)/rAB 
        print "normalized difference to linalg", (rAB - rAB_LA)/rAB 
        self.assertLess(abs(rAB - rAB_KMC)/rAB, .1)
        self.assertLess(abs(rAB - rAB_LA)/rAB, .00001)


        rBA_KMC = kmc.mean_rate(B, A, niter=1000, weights=weights)
         
        print "NGT rate B->A", rBA
        print "KMC rate B->A", rBA_KMC
        print "normalized difference", (rBA - rBA_KMC)/rBA
        self.assertLess(abs(rBA - rBA_KMC)/rBA, .1)
        
        paB = kmc.committor_probability(A[0], [A[0]], B, niter=1000)
        print "the committor probability a->B", paB
        print "graph reduction committor prob", reducer.get_committor_probabilityAB(A[0])
        self.assertAlmostEqual(paB, reducer.get_committor_probabilityAB(A[0]), delta=.1)
Beispiel #5
0
 def do_check(self, A, B, nnodes=20, nedges=20):
     maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
     rates = maker.make_rates()
     reducer = TwoStateRates(rates, A, B)
     reducer.compute_rates()
     reducer.compute_committors()
     
     from pele.rates._ngt_cpp import NGT
     ngt = NGT(rates, A, B)
     ngt.compute_rates()
     
     self.assertAlmostEqual(reducer.get_rate_AB(), ngt.get_rate_AB(), 7)
     self.assertAlmostEqual(reducer.get_rate_AB_SS(), ngt.get_rate_AB_SS(), 7)
Beispiel #6
0
    def do_check(self, A, B, nnodes=20, nedges=20):
        maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A + B)
        rates = maker.make_rates()
        reducer = TwoStateRates(rates, A, B)
        reducer.compute_rates()
        reducer.compute_committors()

        from pele.rates._ngt_cpp import NGT
        ngt = NGT(rates, A, B)
        ngt.compute_rates()

        self.assertAlmostEqual(reducer.get_rate_AB(), ngt.get_rate_AB(), 7)
        self.assertAlmostEqual(reducer.get_rate_AB_SS(), ngt.get_rate_AB_SS(),
                               7)
Beispiel #7
0
    def compare_linalg(self, A, B, nnodes=20, nedges=20):
        from kmc_rates import TwoStateRates
        maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
        maker.run()
        
        reducer = NGT(maker.rates, A, B)
        reducer.compute_rates_and_committors()
        committors = reducer.get_committors()
        
        la = TwoStateRates(maker.rates, A, B)
#        la.compute_rates()
        la.compute_committors()
        qla = la.committor_dict
        for n, qla in la.committor_dict.iteritems():
            self.assertAlmostEqual(qla, committors[n], 7)
Beispiel #8
0
    def compare_linalg(self, A, B, nnodes=20, nedges=20):
        from pele.rates._rates_linalg import TwoStateRates
        maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
        maker.run()
        
        reducer = NGT(maker.rates, A, B)
        reducer.compute_rates_and_committors()
        committors = reducer.get_committors()
        
        la = TwoStateRates(maker.rates, A, B)
#        la.compute_rates()
        la.compute_committors()
        qla = la.committor_dict
        for n, qla in la.committor_dict.iteritems():
            self.assertAlmostEqual(qla, committors[n], 7)
Beispiel #9
0
 def test_committor_probabilities(self, nnodes=10, nedges=20):
     A = [0,1,2,3]
     B = [8,9]
     xx = 5
     maker = _MakeRandomGraph(nnodes=nnodes, nedges=nedges, node_set=A+B)
     graph = maker.run()
     kmc = KineticMonteCarlo(graph, debug=False)
     reducer = GraphReduction(maker.rates, A, B)
     
     nodes = set(A + B + [xx])
     PxB = reducer.compute_committor_probabilities(nodes)
     for x in nodes:
         self.assertIn(x, PxB)
         
     for x in nodes:
         PxB_kmc = kmc.committor_probability(x, A, B, niter=1000)
         self.assertAlmostEqual(PxB[x], PxB_kmc, delta=.1)
Beispiel #10
0
    def test_committor_probabilities(self, nnodes=10, nedges=20):
        A = [0, 1, 2, 3]
        B = [8, 9]
        xx = 5
        maker = _MakeRandomGraph(nnodes=nnodes, nedges=nedges, node_set=A + B)
        graph = maker.run()
        graph_backup = graph.copy()
        kmc = KineticMonteCarlo(graph_backup, debug=False)
        reducer = GraphReduction(maker.rates, A, B)

        nodes = set(A + B + [xx])
        PxB = reducer.compute_committor_probabilities(nodes)
        for x in nodes:
            self.assertIn(x, PxB)

        for x in nodes:
            PxB_kmc = kmc.committor_probability(x, A, B, niter=1000)
            self.assertAlmostEqual(PxB[x], PxB_kmc, delta=.1)
Beispiel #11
0
 def do_check(self, A, B, nnodes=20, nedges=20):
     maker = _MakeRandomGraph(nnodes=20, nedges=20, node_set=A+B)
     rates = maker.make_rates()
     reducer = MfptLinalgSparse(rates, B)
     reducer.compute_mfpt()