def check_initial_values(self): """ Make sure a viable set of initial values exists for each model. """ for par_array in self.permutations: hyper_params = self._permutation_to_dict(par_array) model = create_model(self.model_name, config=self.config, logger=self.logger) model._get_initial_state(hyper_params=hyper_params)
def _sample(self, index, n_samples, burnin): """ """ # Create the model instance # Need to do this here so we don't run into pickle/multiprocessing problems model = create_model(self.model_name, config=self.config, logger=self.logger) # Package parameter permutation par_array = self.permutations[index] hyper_params = self._permutation_to_dict(par_array) # Get filename for this permutation filename = self._get_sample_filename(index) # Sample the model for this parameter permutation model.sample(hyper_params=hyper_params, filename=filename, n_samples=n_samples, burnin=burnin) self.logger.debug( f"Finished grid index {index} of {self.n_permutations}.")
import os import cProfile from udgsizes.core import get_config from udgsizes.model.utils import create_model if __name__ == "__main__": n_samples = 400 burnin = 100 model_name = "blue_sedgwick_shen" config = get_config() filename = os.path.join(config['directories']['data'], 'profile_sampling.prof') model = create_model(model_name) hyper_params = {"rec_phys_offset": {"alpha": 0.4}, "logmstar": {"a": -1.45}} def func(): # Not sure if this is necessary model.sample(n_samples=n_samples, hyper_params=hyper_params, burnin=burnin) cProfile.run("func()", filename=filename) # snakeviz profile_sampling.prof
import matplotlib.pyplot as plt from udgsizes.model.utils import create_model from udgsizes.fitting.utils.plotting import fit_summary_plot if __name__ == "__main__": n_samples = 500 burnin = 250 ignore_recov = False model_name = "blue_sedgwick_shen" model = create_model(model_name, ignore_recov=ignore_recov) hyper_params = { 'rec_phys_offset': { 'alpha': 0.375 }, 'logmstar': { 'a': -1.4750000000000003 } } # hyper_params = {'rec_phys_offset': {'alpha': 0.4}, 'logmstar': {'a': -1.45}} df = model.sample(burnin=burnin, n_samples=n_samples, hyper_params=hyper_params) if not ignore_recov: cond = df["selected_jig"] == 1 df = df[cond].reset_index(drop=True)
plt.show(block=False) if __name__ == "__main__": n_samples = 10000 burnin = 1000 # Get best fitting hyper parameters grid = ParameterGrid(MODEL_NAME) # Get best fitting hyper parameters hyper_params = grid.get_best_hyper_parameters() # Sample the model with no recovery efficiency model = create_model(UDG_MODEL_NAME, ignore_recov=True) df = model.sample(burnin=burnin, n_samples=n_samples, hyper_params=hyper_params) # Identify UDGs cond = df["is_udg"].values == 1 df = df[cond].reset_index(drop=True) # Get sizes x = df["rec_phys"].values # Make histogram y, edges = np.histogram(np.log10(x), bins=10, density=True) # Log10 bins centres = 0.5 * (edges[1:] + edges[:-1])