Example #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
Example #2
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')
 def test_addbasic_rejection(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     RS = ResultsStructure()
     RS.add_basic(nsimu=options.nsimu,
                  covariance=covariance,
                  parameters=parameters,
                  rejected=rejected,
                  simutime=0.001,
                  theta=chain[-1, :])
     self.assertEqual(RS.results['total_rejected'],
                      10 * (options.nsimu**(-1)),
                      msg='rejection reported as fraction of nsimu')
     self.assertEqual(RS.results['rejected_outside_bounds'],
                      2 * (options.nsimu**(-1)),
                      msg='rejection reported as fraction of nsimu')
 def test_addbasic_true(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     RS = ResultsStructure()
     RS.add_basic(nsimu=options.nsimu,
                  covariance=covariance,
                  parameters=parameters,
                  rejected=rejected,
                  simutime=0.001,
                  theta=chain[-1, :])
     self.assertTrue(RS.basic,
                     msg='basic features added to result structure')
     self.assertTrue(np.array_equal(RS.results['theta'], np.array([0, 0])),
                     msg='Last elements of chain are zero')
 def test_resfilename_is_not_none(self):
     __, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     RS = ResultsStructure()
     RS.add_options(options=options)
     RS.results['simulation_options']['results_filename'] = 'test'
     filename = RS.determine_filename(
         options=RS.results['simulation_options'])
     self.assertEqual(filename, 'test', msg='Filename matches')
 def test_resfilename_is_none(self):
     __, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     RS = ResultsStructure()
     RS.add_options(options=options)
     RS.results['simulation_options']['results_filename'] = None
     filename = RS.determine_filename(
         options=RS.results['simulation_options'])
     self.assertEqual(filename,
                      str('{}{}{}'.format(
                          RS.results['simulation_options']['datestr'], '_',
                          'mcmc_simulation.json')),
                      msg='Filename matches')
 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')
 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_addbasic_covariance(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     covariance._R[0, 0] = 1.1
     covariance._R[0, 1] = 2.3
     RS = ResultsStructure()
     RS.add_basic(nsimu=options.nsimu,
                  covariance=covariance,
                  parameters=parameters,
                  rejected=rejected,
                  simutime=0.001,
                  theta=chain[-1, :])
     self.assertTrue(np.array_equal(RS.results['R'], covariance._R),
                     msg='Cholesky matches')
     self.assertTrue(np.array_equal(
         RS.results['qcov'], np.dot(covariance._R.transpose(),
                                    covariance._R)),
                     msg='Covariance matches')
 def test_allnames(self):
     model, options, parameters, data, covariance, rejected, chain, s2chain, sschain = gf.setup_mcmc_case_dr(
     )
     RS = ResultsStructure()
     RS.add_basic(nsimu=options.nsimu,
                  covariance=covariance,
                  parameters=parameters,
                  rejected=rejected,
                  simutime=0.001,
                  theta=chain[-1, :])
     allnames = RS.results['allnames']
     names = RS.results['names']
     print(allnames)
     print(names)
     self.assertEqual(len(allnames),
                      len(names) + 1,
                      msg='Expect extra name in allnames')
     self.assertEqual(allnames[-1],
                      'b2',
                      msg='Expect final parameter is b2')