Source code for threeML.config.fitting_structure

from dataclasses import dataclass, field
from enum import Enum
from typing import Any, Dict, Optional

import numpy as np

from .plotting_structure import CornerStyle, MPLCmap


[docs] class Sampler(Enum): emcee = "emcee" multinest = "multinest" zeus = "zeus" dynesty_nested = "dynesty_nested" dynesty_dynamic = "dynesty_dynamic" ultranest = "ultranest" autoemcee = "autoemcee"
_sampler_default = {"emcee": {"n_burnin": 1}}
[docs] class Optimizer(Enum): minuit = "minuit" scipy = "scipy" ROOT = "ROOT"
[docs] @dataclass class BayesianDefault: use_median_fit: bool = False default_sampler: Sampler = Sampler.emcee emcee_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "n_burnin": None, "n_iterations": 500, "n_walkers": 50, "seed": 5123, } ) multinest_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "n_live_points": 400, "chain_name": "chains/fit-", "resume": False, "importance_nested_sampling": False, "auto_clean": False, } ) ultranest_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "min_num_live_points": 400, "dlogz": 0.5, "dKL": 0.5, "frac_remain": 0.01, "Lepsilon": 0.001, "min_ess": 400, "update_interval_volume_fraction": 0.8, "cluster_num_live_points": 40, "use_mlfriends": True, "resume": "overwrite", } ) zeus_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "n_burnin": None, "n_iterations": 500, "n_walkers": 50, "seed": 5123, } ) dynesty_nested_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "n_live_points": 400, "maxiter": None, "maxcall": None, "dlogz": None, "logl_max": np.inf, "n_effective": None, "add_live": True, "print_func": None, "save_bounds": True, "bound": "multi", "wrapped_params": None, "sample": "auto", "periodic": None, "reflective": None, "update_interval": None, "first_update": None, "npdim": None, "rstate": None, "use_pool": None, "live_points": None, "logl_args": None, "logl_kwargs": None, "ptform_args": None, "ptform_kwargs": None, "gradient": None, "grad_args": None, "grad_kwargs": None, "compute_jac": False, "enlarge": None, "bootstrap": 0, "vol_dec": 0.5, "vol_check": 2.0, "walks": 25, "facc": 0.5, "slices": 5, "fmove": 0.9, "max_move": 100, "update_func": None, } ) dynesty_dynmaic_setup: Optional[Dict[str, Any]] = field( default_factory=lambda: { "nlive_init": 500, "maxiter_init": None, "maxcall_init": None, "dlogz_init": 0.01, "logl_max_init": np.inf, "n_effective_init": np.inf, "nlive_batch": 500, "wt_function": None, "wt_kwargs": None, "maxiter_batch": None, "maxcall_batch": None, "maxiter": None, "maxcall": None, "maxbatch": None, "n_effective": np.inf, "stop_function": None, "stop_kwargs": None, "use_stop": True, "save_bounds": True, "print_func": None, "live_points": None, "bound": "multi", "wrapped_params": None, "sample": "auto", "periodic": None, "reflective": None, "update_interval": None, "first_update": None, "npdim": None, "rstate": None, "use_pool": None, "logl_args": None, "logl_kwargs": None, "ptform_args": None, "ptform_kwargs": None, "gradient": None, "grad_args": None, "grad_kwargs": None, "compute_jac": False, "enlarge": None, "bootstrap": 0, "vol_dec": 0.5, "vol_check": 2.0, "walks": 25, "facc": 0.5, "slices": 5, "fmove": 0.9, "max_move": 100, "update_func": None, } ) corner_style: CornerStyle = field(default_factory=lambda: CornerStyle())
[docs] @dataclass class MLEDefault: default_minimizer: Optimizer = Optimizer.minuit default_minimizer_algorithm: Optional[str] = None default_minimizer_callback: Optional[str] = None contour_cmap: MPLCmap = MPLCmap.Pastel1 contour_background: str = "white" contour_level_1: str = "#ffa372" contour_level_2: str = "#ed6663" contour_level_3: str = "#0f4c81" profile_color: str = "k" profile_level_1: str = "#ffa372" profile_level_2: str = "#ed6663" profile_level_3: str = "#0f4c81"