Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
                        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
Exemple #4
0
        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