def test_seed(self): # test seed gen, in base class s1 = seed_generator(0) s2 = seed_generator(0) self.assertNotEqual(s1, s2) s3 = seed_generator(23) self.assertEqual(s3, 23)
def obs_generator(self, field_list, ensemble_size, obs_size): """ apply field model and generate observable raw data :param parameters: dict of parameters :param ensemble_size: number of realizations in ensemble :param obs_size: size of observable :return: numpy ndarray """ # coordinates raw_arr = np.zeros((ensemble_size, obs_size)) coo_x = np.linspace(0., 2. * np.pi, obs_size) for i in range(ensemble_size): pars = field_list[0].report_parameters(i) # double check parameter keys assert (pars.keys() == field_list[0].field_checklist.keys()) # extract parameters par_a = pars['a'] par_b = pars['b'] par_s = pars['random_seed'] # get thread-time dependent random number np.random.seed(seed_generator(par_s)) raw_arr[i, :] = np.multiply( np.cos(coo_x), np.random.normal(loc=par_a, scale=par_b, size=obs_size)) return raw_arr