示例#1
0
 def setup_dr(self):
     model, options, parameters, data, covariance, __, __, __, __ = gf.setup_mcmc_case_dr(
     )
     RDR = covariance._RDR
     invR = covariance._invR
     old_set = ParameterSet(theta=np.random.rand(2),
                            ss=np.array([10.2]),
                            sigma2=np.array([0.5]),
                            prior=np.array([0.5]))
     new_set = ParameterSet(theta=np.random.rand(2),
                            ss=np.array([8.2]),
                            sigma2=np.array([0.5]),
                            prior=np.array([0.5]))
     priorobj = PriorFunction(
         priorfun=model.prior_function,
         mu=parameters._thetamu[parameters._parind[:]],
         sigma=parameters._thetasigma[parameters._parind[:]])
     sosobj = SumOfSquares(model, data, parameters)
     DR = DelayedRejection()
     DR._initialize_dr_metrics(options=options)
     accept, out_set, outbound = DR.run_delayed_rejection(
         old_set=old_set,
         new_set=new_set,
         RDR=RDR,
         ntry=2,
         parameters=parameters,
         invR=invR,
         sosobj=sosobj,
         priorobj=priorobj)
     return accept, out_set, outbound
示例#2
0
 def test_alphafun(self):
     invR = []
     invR.append(np.array([[0.4, 0.1], [0., 0.2]]))
     invR.append(np.array([[0.4, 0.1], [0., 0.2]]) / 4)
     invR.append(np.array([[0.4, 0.1], [0., 0.2]]) / 5)
     trypath = []
     trypath.append(
         ParameterSet(theta=0.1,
                      ss=np.array([10.2]),
                      sigma2=np.array([0.5]),
                      prior=np.array([0.5])))
     trypath.append(
         ParameterSet(theta=0.2,
                      ss=np.array([8.2]),
                      sigma2=np.array([0.5]),
                      prior=np.array([0.5])))
     trypath.append(
         ParameterSet(theta=0.2,
                      ss=np.array([8.2]),
                      sigma2=np.array([0.5]),
                      prior=np.array([0.5])))
     trypath.append(
         ParameterSet(theta=0.2,
                      ss=np.array([8.2]),
                      sigma2=np.array([0.5]),
                      prior=np.array([0.5])))
     __, options, __, __ = gf.setup_mcmc()
     DR = DelayedRejection()
     DR._initialize_dr_metrics(options=options)
     alpha = DR.alphafun(trypath=trypath, invR=invR)
     self.assertIsInstance(alpha,
                           np.ndarray,
                           msg='Expect numpy array return')
     self.assertEqual(alpha.size, 1, msg='Expect single element array')
 def test_addbasic_false(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     DR = DelayedRejection()
     DR._initialize_dr_metrics(options)
     RS = ResultsStructure()
     self.assertFalse(RS.add_dram(drscale=options.drscale,
                                  RDR=covariance._RDR,
                                  total_rejected=rejected['total'],
                                  drsettings=DR),
                      msg='basic features not added to result structure')
示例#4
0
 def test_dr_metrics(self):
     DR = DelayedRejection()
     __, options, __, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     DR._initialize_dr_metrics(options=options)
     self.assertTrue(np.array_equal(DR.iacce,
                                    np.zeros(options.ntry, dtype=int)),
                     msg='Arrays should match')
     self.assertEqual(DR.dr_step_counter,
                      0,
                      msg='Counter initialized to zero')
示例#5
0
 def test_next_set(self, mock_1):
     DR = DelayedRejection()
     npar = 2
     old_theta = np.array([0.1, 0.2])
     RDR = np.array([[0.4, 0.2], [0, 0.3]])
     sigma2 = 0.24
     next_set = DR.initialize_next_metropolis_step(npar=npar,
                                                   old_theta=old_theta,
                                                   sigma2=sigma2,
                                                   RDR=RDR)
     self.assertEqual(next_set.sigma2, sigma2, msg='sigma2 should be 0.24')
     self.assertTrue(np.array_equal(
         next_set.theta,
         (old_theta + np.dot(np.array([0.2, 0.5]), RDR)).reshape(npar)),
                     msg='Arrays should match')
 def test_addbasic_true(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     covariance._RDR = np.random.random_sample(size=(2, 2))
     DR = DelayedRejection()
     DR._initialize_dr_metrics(options)
     DR.dr_step_counter = 12000
     RS = ResultsStructure()
     RS.add_basic(nsimu=options.nsimu,
                  covariance=covariance,
                  parameters=parameters,
                  rejected=rejected,
                  simutime=0.001,
                  theta=chain[-1, :])
     self.assertTrue(RS.add_dram(drscale=options.drscale,
                                 RDR=covariance._RDR,
                                 total_rejected=rejected['total'],
                                 drsettings=DR),
                     msg='basic features added to result structure')
     self.assertTrue(np.array_equal(RS.results['RDR'], covariance._RDR),
                     msg='RDR matches')
     self.assertEqual(RS.results['alpha_count'],
                      DR.dr_step_counter,
                      msg='Alpha count matches dr step counter')