def test_astep_onedmodel(self): """Test that a single step with a one-dimensional model returns values of the expected type and a move that is expected or not given the test logp.""" """Test a single step with a one-dimensional model with a normal parameter.""" self.param, self.like = onedmodel() model = Model(self.like, self.param) dream = Dream(model=model, save_history=False, verbose=False) #Even though we're calling the steps separately we need to call these functions # to initialize the shared memory arrays that are called in the step fxn pool = _setup_mp_dream_pool(nchains=3, niterations=10, step_instance=dream) pool._initializer(*pool._initargs) #Test initial step (when last logp and prior values aren't set) q_new, last_prior, last_like = dream.astep(q0=np.array([-5])) self.assertTrue(isinstance(q_new, np.ndarray)) self.assertTrue(isinstance(last_prior, numbers.Number)) self.assertTrue(isinstance(last_like, numbers.Number)) #Test later iteration after last logp and last prior have been set q_new, last_prior, last_like = dream.astep(q0=np.array(8), last_logprior=-300, last_loglike=-500) self.assertTrue(isinstance(q_new, np.ndarray)) self.assertTrue(isinstance(last_prior, numbers.Number)) self.assertTrue(isinstance(last_like, numbers.Number)) if np.any(q_new != np.array(8)): self.assertTrue(last_prior + last_like >= -800) else: self.assertTrue(last_prior == -300) self.assertTrue(last_like == -500)
def test_astep_multidmodel_uniform(self): """Test a single step of DREAM with a multi-dimensional model and uniform prior.""" self.param, self.like = multidmodel_uniform() model = Model(self.like, self.param) dream = Dream(model=model, save_history=False, verbose=False) # Even though we're calling the steps separately we need to call these functions # to initialize the shared memory arrays that are called in the step fxn pool = _setup_mp_dream_pool(nchains=3, niterations=10, step_instance=dream) pool._initializer(*pool._initargs) # Test initial step (when last logp and prior values aren't set) q_new, last_prior, last_like = dream.astep(q0=np.array([-5, 4, -3, 0])) self.assertTrue(isinstance(q_new, np.ndarray)) self.assertTrue(isinstance(last_prior, numbers.Number)) self.assertTrue(isinstance(last_like, numbers.Number)) # Test later iteration after last logp and last prior have been set q_new, last_prior, last_like = dream.astep(q0=np.array([8, 4, -2, 9]), last_logprior=100, last_loglike=-600) self.assertTrue(isinstance(q_new, np.ndarray)) self.assertTrue(isinstance(last_prior, numbers.Number)) self.assertTrue(isinstance(last_like, numbers.Number)) if np.any(q_new != np.array(8)): self.assertTrue(last_prior + last_like >= -500) else: self.assertTrue(last_prior == 100) self.assertTrue(last_like == -600)