def setup_function(self): """Load the fit results from the file and make some check compatibility""" # load hypersurfaces if self.interpolated: self.hypersurfaces = hs.load_interpolated_hypersurfaces( self.fit_results_file, self.calc_specs) else: self.hypersurfaces = hs.load_hypersurfaces(self.fit_results_file, self.calc_specs) self.data.data_specs = self.calc_specs if self.links is not None: for key, val in self.links.items(): self.data.link_containers(key, val) # create containers for scale factors for container in self.data: container["hs_scales"] = np.empty(container.size, dtype=FTYPE) if self.propagate_uncertainty: container["hs_scales_uncertainty"] = np.empty(container.size, dtype=FTYPE) # Check map names match between data container and hypersurfaces for container in self.data: assert container.name in self.hypersurfaces, f"No match for map {container.name} found in the hypersurfaces" self.data.unlink_containers()
def __init__( self, fit_results_file, propagate_uncertainty=False, interpolated=False, links=None, **std_kwargs, ): # -- Load hypersurfaces -- # # Store args self.fit_results_file = fit_results_file self.propagate_uncertainty = propagate_uncertainty self.interpolated = interpolated # expected parameter names depend on the hypersurface and, if applicable, # on the parameters in which the hypersurfaces are interpolated if self.interpolated: hs_params, inter_params = hs.extract_interpolated_hypersurface_params( self.fit_results_file) self.hypersurface_param_names = hs_params self.inter_params = inter_params expected_params = hs_params + inter_params else: hypersurfaces = hs.load_hypersurfaces(self.fit_results_file, std_kwargs['calc_mode']) self.hypersurface_param_names = list( hypersurfaces.values())[0].param_names expected_params = self.hypersurface_param_names # -- Initialize base class -- # super().__init__( expected_params=expected_params, **std_kwargs, ) # -- Only allowed/implemented modes -- # assert isinstance(self.calc_mode, MultiDimBinning) self.links = ast.literal_eval(links) self.warning_issued = False # don't warn more than once about empty bins self.hypersurfaces = None
def __init__( self, fit_results_file, propagate_uncertainty=False, interpolated=False, data=None, params=None, input_names=None, output_names=None, debug_mode=None, error_method=None, input_specs=None, calc_specs=None, output_specs=None, links=None, ): # pylint: disable=line-too-long # -- Expected input / output names -- # input_names = () output_names = () # -- Which keys are added or altered for the outputs during `apply` -- # input_calc_keys = () if propagate_uncertainty: output_calc_keys = ("hs_scales", "hs_scales_uncertainty") else: output_calc_keys = ("hs_scales", ) if error_method == "sumw2": output_apply_keys = ("weights", "errors") input_apply_keys = output_apply_keys else: output_apply_keys = ("weights", ) input_apply_keys = output_apply_keys # -- Load hypersurfaces -- # # Store args self.fit_results_file = fit_results_file self.propagate_uncertainty = propagate_uncertainty self.interpolated = interpolated # expected parameter names depend on the hypersurface and, if applicable, # on the parameters in which the hypersurfaces are interpolated if self.interpolated: hs_params, inter_params = hs.extract_interpolated_hypersurface_params( self.fit_results_file) self.hypersurface_param_names = hs_params self.inter_params = inter_params expected_params = hs_params + inter_params else: hypersurfaces = hs.load_hypersurfaces(self.fit_results_file, calc_specs) self.hypersurface_param_names = list( hypersurfaces.values())[0].param_names expected_params = self.hypersurface_param_names # -- Initialize base class -- # super(pi_hypersurfaces, self).__init__( data=data, params=params, expected_params=expected_params, input_names=input_names, output_names=output_names, debug_mode=debug_mode, error_method=error_method, input_specs=input_specs, calc_specs=calc_specs, output_specs=output_specs, input_calc_keys=input_calc_keys, output_calc_keys=output_calc_keys, input_apply_keys=input_apply_keys, output_apply_keys=output_apply_keys, ) # -- Only allowed/implemented modes -- # assert self.input_mode is not None assert self.calc_mode == "binned" assert self.output_mode is not None self.links = ast.literal_eval(links) self.warning_issued = False # don't warn more than once about empty bins self.hypersurfaces = None