示例#1
0
 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)
示例#2
0
    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}.")
示例#3
0
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
示例#4
0
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)
示例#5
0
    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])