def translate_source_dict(d): d['tot_gen'] = d['num_events_per_file'] * d['num_i3_files'] # TODO: does the following logic actually work with both old and new # conventions? # NOTE: the ',' --> '+' mapping is necessary since some data files # were saved prior to the convention that commas exclusively separate # groups while plus signs indicate flav/ints grouped together d['flavints'] = flavInt.NuFlavIntGroup(d['flavints'].replace(',', '+')) # Numeric fields are allowed to be expressions that get evaluated numeric_fields = [ 'azimuth_max', 'azimuth_min', 'energy_max', 'energy_min', 'physical_events_fract', 'genie_prescale_factor', 'nu_to_total_fract', 'num_events_per_file', 'num_i3_files', 'sim_spectral_index', 'zenith_max', 'zenith_min', ] for f in numeric_fields: if isinstance(d[f], str): d[f] = eval(d[f]) return d
def __init__(self, name, spline, eval_spl, tex=None, validate_spl=None, hash=None): # Set Read/write attributes via their defined setters self.name = name self._spline = spline self._hash = hash if tex is None: tex = flavInt.NuFlavIntGroup(name).tex # Ensure eval_spl has correct structure eval_args = inspect.getargspec(eval_spl).args if len(eval_args) < 2: raise ValueError('Evaluation function does not contain the ' 'minimum number of input parameters (2)\n' 'Input function keywords: {0}'.format(eval_args)) if 'spline' not in eval_args[0]: raise ValueError('Evaluation function does not contain the ' + "'spline'" + ' keyword as its first argument\n' 'Input function keywords: {0}'.format(eval_args)) if 'binning' not in eval_args[1]: raise ValueError('Evaluation function does not contain the ' + "'binning'" + ' keyword as its second ' 'argument\nInput function keywords: ' '{0}'.format(eval_args)) self._eval_spl = eval_spl # Ensure validate_spl has correct structure validate_args = inspect.getargspec(validate_spl).args if len(validate_args) != 1: raise ValueError('Binning validation function contains more than ' 'the maximum number of input parameters (1)\n' 'Input function keywords: ' '{0}'.format(validate_args)) if'binning' not in validate_args[0]: raise ValueError('Binning validation function does not contain ' 'the ' + "'binning'" + ' keyword argument\n' 'Input function keywords: {0}'.format(eval_args)) self._validate_spl = validate_spl
action='count', default=0, help='Set verbosity level') args = parser.parse_args() set_verbosity(args.verbose) events_fpath = args.events outdir = os.path.expandvars(os.path.expanduser(args.outdir)) make_plots = not args.no_plots # Load the events events = Events(events_fpath) grouped = sorted([ flavInt.NuFlavIntGroup(fi) for fi in events.metadata['flavints_joined'] ]) should_be_grouped = sorted([ flavInt.NuFlavIntGroup('nue_cc+nuebar_cc'), flavInt.NuFlavIntGroup('numu_cc+numubar_cc'), flavInt.NuFlavIntGroup('nutau_cc+nutaubar_cc'), flavInt.NuFlavIntGroup('nuall_nc+nuallbar_nc'), ]) if grouped != should_be_grouped: if len(grouped) == 0: grouped = None raise ValueError('Only works with groupings (%s) but instead got' ' groupings (%s).' % (should_be_grouped, grouped)) # Define binning emin, emax, n_ebins = args.emin, args.emax, args.n_ebins
action='count', default=0, help='Set verbosity level' ) args = parser.parse_args() set_verbosity(args.verbose) events_fpath = args.events outdir = os.path.expandvars(os.path.expanduser(args.outdir)) make_plots = not args.no_plots # Load the events events = Events(events_fpath) grouped = sorted([ flavInt.NuFlavIntGroup(fi) for fi in events.metadata['flavints_joined'] ]) should_be_grouped = sorted([ flavInt.NuFlavIntGroup('nue_cc+nuebar_cc'), flavInt.NuFlavIntGroup('numu_cc+numubar_cc'), flavInt.NuFlavIntGroup('nutau_cc+nutaubar_cc'), flavInt.NuFlavIntGroup('nuall_nc+nuallbar_nc'), ]) if grouped != should_be_grouped: if len(grouped) == 0: grouped = None raise ValueError('Only works with groupings (%s) but instead got' ' groupings (%s).' % (should_be_grouped, grouped)) # Define binning