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
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')
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')
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')