예제 #1
0
파일: base.py 프로젝트: tardis-sn/dalek
def _generate_param_class_dict(fname, param_names):
    """
    Generate the parameter and class dictionaries for the Model
    Parameters
    ----------
    fname: ~str
    param_names: ~list of ~str

    Returns
    -------

    """

    config = ConfigurationNameSpace.from_yaml(fname)
    class_dict = {}
    param_dict = {}
    short_param_name_dict = _convert_param_names(param_names)

    class_dict['convert_param_dict'] = short_param_name_dict
    for key in short_param_name_dict:
        try:
            value = config.get_config_item(short_param_name_dict[key])
        except KeyError:
            raise ValueError('{0} is not a valid parameter'.format(key))
        else:
            pass
        class_dict[key] = Parameter()
        param_dict[key] = getattr(value, 'value', value)

    return class_dict, param_dict, config
예제 #2
0
 def __init__(self, config_fname, atom_data=None, log_dir='./logs/'):
     self._log_dir = log_dir
     self.set_logger('startup')
     self._config = ConfigurationNameSpace.from_yaml(config_fname)
     if atom_data is None:
         self._atom_data = AtomData.from_hdf5(self._config.atom_data)
     else:
         self._atom_data = atom_data
예제 #3
0
 def __init__(self, *args, **kwargs):
     config_fname = args[0]
     atom_data = kwargs.pop('atom_data', None)
     self._log_dir = kwargs.pop('log_dir', './logs/')
     self.set_logger('startup')
     self._config = ConfigurationNameSpace.from_yaml(config_fname)
     if atom_data is None:
         self._atom_data = AtomData.from_hdf5(self._config.atom_data)
     else:
         self._atom_data = atom_data
예제 #4
0
파일: base.py 프로젝트: orbitfold/dalek
    def _load_comparison_config(self, comparison_config_fname):
        comparison_config = ConfigurationNameSpace.from_yaml(
            comparison_config_fname)

        self.comparison_dict = OrderedDict()
        for column in self.data_columns:
            default_value = comparison_config.get_config_item(column)
            #removing the quantity-ness
            #default_value = getattr(default_value, 'value', default_value)
            self.comparison_dict[column] = default_value
예제 #5
0
파일: base.py 프로젝트: orbitfold/dalek
    def from_yaml(cls, fname, resume_fit=None):
        """
        Reading the fitter configuration from a yaml file
        
        Parameters
        ----------

        fname: ~str
            filename
        
        """

        conf_dict = yaml.load(open(fname), OrderedDictYAMLLoader)
        default_config = ConfigurationNameSpace.from_yaml(
            conf_dict['tardis']['default_conf'])
        atom_data = AtomData.from_hdf5(conf_dict['tardis']['atom_data'])
        parameter_config = ParameterConfiguration.from_conf_dict(conf_dict['fitter']['parameters'])

        number_of_samples = conf_dict['fitter']['number_of_samples']
        max_iterations = conf_dict['fitter']['max_iterations']
        optimizer_dict = conf_dict['fitter'].pop('optimizer')
        optimizer_class = all_optimizer_dict[optimizer_dict.pop('name')]
        optimizer = optimizer_class(parameter_config, number_of_samples,
                                    **optimizer_dict)
        fitness_function_dict = conf_dict['fitter'].pop('fitness_function')
        fitness_function_class = all_fitness_function_dict[
            fitness_function_dict.pop('name')]
        fitness_function = fitness_function_class(**fitness_function_dict)

        resume = conf_dict['fitter'].get('resume', resume_fit)
        fitter_log = conf_dict['fitter'].get('fitter_log', None)

        spectral_store_dict = conf_dict['fitter'].get('spectral_store', None)
        if spectral_store_dict is not None:
            spectral_store_fname = spectral_store_dict['fname']
            spectral_store_mode = spectral_store_dict.get('mode', 'all')
            spectral_store_clobber = spectral_store_dict.get('clobber', False)
            spectral_store = SpectralStore(spectral_store_fname,
                                           mode=spectral_store_mode,
                                           resume=resume,
                                           clobber=spectral_store_clobber)
        else:
            spectral_store = None





        return cls(optimizer, fitness_function,
                   parameter_config=parameter_config,
                   default_config=default_config, atom_data=atom_data,
                   number_of_samples=number_of_samples,
                   max_iterations=max_iterations, fitter_log=fitter_log,
                   spectral_store=spectral_store, resume=resume)
예제 #6
0
def simple_triangle_plot(dalek_log_file, truth_config=None, plot_contours=False, bins=100):
    """

    Parameters
    ----------

    dalek_log_file : ~str
        path to normal dalek log file
    truth_config : ~str
        path to tardis config file containing the truth values [optional]

    plot_contours : ~bool
        plotting contours for the distributions

    :return:
    """
    dalek_data = pd.read_csv(dalek_log_file, index_col=0)
    if truth_config is not None:
        truth_config = ConfigurationNameSpace.from_yaml(truth_config)

    fitness = dalek_data['dalek.fitness']
    labels = []
    truths = []
    for column in dalek_data.columns:
        if 'dalek' in column:
            continue
        if column.endswith('item0'):
            label = '.'.join(column.split('.')[-2:])
        else:
            label = column.split('.')[-1]

        labels.append(label)

        if truth_config is not None:
            default_value = truth_config.get_config_item(column)
            default_value = getattr(default_value, 'value', default_value)
            truths.append(default_value)

    if truths == []:
        truths = None



    triangle.corner(dalek_data[data_columns], weights=1/fitness,
                    labels=labels,
                    plot_contours=plot_contours, normed=True, truths=truths,
                    bins=bins)