Пример #1
0
 def set_up_roi(self):
     '''Loads fermipy GTAnalysis object, sets up sources,
     loads some dictionaries of values for later use.
     '''
     self.gta = GTAnalysis.create(self.roi_file, config=self.config_path)
     self.gta.free_sources(free=False)
     self.gta.free_source(self.name)
     self.src_model = self.gta.get_src_model(self.name)
     self.init_like = -self.gta.like()
     self.gta.set_source_spectrum(self.name, spectrum_type='FileFunction')
     self.logEMeV, self.init_dnde = self.gta.get_source_dnde(self.name)
     self.EMeV = np.power(10., self.logEMeV)
     self.get_init_vals()
Пример #2
0
def main():

    # Argument defintion
    usage = "usage: %(prog)s [options]"
    description = "Load a fermipy configuration and snapshot"

    parser = argparse.ArgumentParser(usage, description=description)
    parser.add_argument('-c',
                        "--config",
                        type=argparse.FileType('r'),
                        default="config.yaml",
                        help="Config file")
    parser.add_argument('-i',
                        "--input",
                        type=argparse.FileType('r'),
                        default="baseline.npy",
                        help="Input file")
    parser.add_argument('-o',
                        "--output",
                        type=str,
                        default=None,
                        help="Output file")
    parser.add_argument('-p',
                        "--pars",
                        type=str,
                        default=None,
                        help="Parameter file")
    parser.add_argument('-m',
                        "--mask",
                        type=str,
                        default=None,
                        help="Mask file")

    args = parser.parse_args(sys.argv[1:])

    gta = GTAnalysis.create(args.input.name,
                            args.config.name,
                            params=args.pars,
                            mask=args.mask)

    for name in gta.like.sourceNames():
        print('Initializing source %s' % name)
        gta._init_source(name)
    gta._update_roi()

    gta.write_roi(args.output, save_model_map=True, save_weight_map=True)

    return gta
Пример #3
0
def load_roi(roi_file):
    with open(cwd + '/config_local.yaml', 'r') as i:
        config = yaml.safe_load(i)

    config['fileio']['workdir'] = cwd + '/fits'
    config['fileio']['outdir'] = cwd + '/fits'
    config['fileio']['logfile'] = cwd + '/fits/fermipy.log'
    config['data']['ltcube'] = cwd + '/fits/ltcube_00.fits'
    config['model'][
        'galdiff'] = path_to_conda + '/share/fermitools/refdata/fermi/galdiffuse/gll_iem_v07.fits'
    config['model'][
        'isodiff'] = path_to_conda + '/share/fermitools/refdata/fermi/galdiffuse/iso_P8R3_SOURCE_V3_v1.txt'
    config['logging']['verbosity'] = 4
    source = config['selection']['target']
    with open(cwd + '/config_modified.yaml', 'w') as o:
        yaml.dump(config, o)

    gta = GTAnalysis.create(roi_file, config=f'{cwd}/config_modified.yaml')

    return gta
Пример #4
0
    def run_analysis(self, argv):
        """Run this analysis"""
        args = self._parser.parse_args(argv)

        if not HAVE_ST:
            raise RuntimeError(
                "Trying to run fermipy analysis, but don't have ST")

        if is_not_null(args.roi_baseline):
            gta = GTAnalysis.create(args.roi_baseline, args.config)
        else:
            gta = GTAnalysis(args.config,
                             logging={'verbosity': 3},
                             fileio={'workdir_regex': '\.xml$|\.npy$'})
        gta.print_roi()
        
        test_source = args.target
        gta.sed(test_source, outfile='sed_%s.fits' % 'FL8Y', make_plots=True)
        gta.extension(test_source, make_plots=True)
        return gta
Пример #5
0
        data = np.zeros((100, 3), dtype=float)
        np.savetxt(
            f"/nfs/astrop/n1/kuhlmann/NGC_1275/ts_limit/grid_ts/outdata/roi_{which_roi}/out_{which_gm:03}.dat",
            data)
        start = which_range * nsim
        end = (which_range + 1) * nsim
        indices = [i for i in range(start, end)]

else:
    start = which_range * nsim
    end = (which_range + 1) * nsim
    indices = [i for i in range(start, end)]

print(indices)
# sys.exit()
gta = GTAnalysis.create(roi_file, config=cwd + '/config_modified.yaml')
roi_numpy = np.load(roi_file, allow_pickle=True).flat[0]
print('fermipy loglike:', -gta.like())
print('numpy loglike:', roi_numpy['roi']['loglike'])
test = janitor(source, gta)

setrlimit(RLIMIT_AS, (2048 * 1024 * 1024, hard))
print(getrlimit(RLIMIT_AS))

test.indices = indices

for i in indices:
    test.index = i
    print('doing simulation number', str(i))
    test.fit()
    test.write_outdata()
Пример #6
0
    def run_analysis(self, argv):
        """Run this analysis"""
        args = self._parser.parse_args(argv)

        if not HAVE_ST:
            raise RuntimeError(
                "Trying to run fermipy analysis, but don't have ST")

        if args.load_baseline:
            gta = GTAnalysis.create(args.roi_baseline, args.config)
        else:
            gta = GTAnalysis(args.config,
                             logging={'verbosity': 3},
                             fileio={'workdir_regex': '\.xml$|\.npy$'})
            gta.setup()
            if is_not_null(args.input_pars):
                gta.load_parameters_from_yaml(args.input_pars)
            gta.write_roi(args.roi_baseline,
                          save_model_map=True,
                          save_weight_map=True,
                          make_plots=args.make_plots)

        src_list = get_src_names(gta)
        plotter = plotting.AnalysisPlotter(gta.config['plotting'],
                                           fileio=gta.config['fileio'],
                                           logging=gta.config['logging'])

        if is_null(args.fit_strategy):
            return

        fit_strategy = load_yaml(args.fit_strategy)
        npred_current = None
        npred_prev = None

        plots_only = False

        for fit_stage in fit_strategy:
            mask = fit_stage.get('mask', None)
            npred_threshold = fit_stage.get('npred_threshold', 1.0e4)
            frac_threshold = fit_stage.get('frac_threshold', 0.5)
            npred_frac = fit_stage.get('npred_frac', 0.9999)

            if plots_only:
                gta.load_roi("%s.npy" % fit_stage['key'])
                npred_current = set_wts_get_npred_wt(gta, mask)
                skip_list_region = get_unchanged(src_list,
                                                 npred_current,
                                                 npred_prev,
                                                 frac_threshold=frac_threshold)
            else:
                npred_current = set_wts_get_npred_wt(gta, mask)
                skip_list_region = get_unchanged(src_list,
                                                 npred_current,
                                                 npred_prev,
                                                 frac_threshold=frac_threshold)
                gta.optimize(npred_frac=npred_frac,
                             npred_threshold=npred_threshold,
                             skip=skip_list_region)

            snapshot(gta,
                     plotter,
                     fit_stage['key'],
                     make_plots=args.make_plots)
            npred_prev = npred_current
            npred_current = build_srcdict(gta, 'npred_wt')
Пример #7
0
    def run_analysis(self, argv):
        """Run this analysis"""
        args = self._parser.parse_args(argv)

        if not HAVE_ST:
            raise RuntimeError(
                "Trying to run fermipy analysis, but don't have ST")

        if args.load_baseline:
            gta = GTAnalysis.create(args.roi_baseline,
                                    args.config)
        else:
            gta = GTAnalysis(args.config,
                             logging={'verbosity': 3},
                             fileio={'workdir_regex': '\.xml$|\.npy$'})
            gta.setup()
            if is_not_null(args.input_pars):
                gta.load_parameters_from_yaml(args.input_pars)
            gta.write_roi(args.roi_baseline,
                          save_model_map=True,
                          save_weight_map=True,
                          make_plots=args.make_plots)

        src_list = get_src_names(gta)
        plotter = plotting.AnalysisPlotter(gta.config['plotting'],
                                           fileio=gta.config['fileio'],
                                           logging=gta.config['logging'])

        if is_null(args.fit_strategy):
            return

        fit_strategy = load_yaml(args.fit_strategy)
        npred_current = None
        npred_prev = None
        
        plots_only = False

        for fit_stage in fit_strategy:
            mask = fit_stage.get('mask', None)
            npred_threshold = fit_stage.get('npred_threshold', 1.0e4)
            frac_threshold = fit_stage.get('frac_threshold', 0.5)
            npred_frac = fit_stage.get('npred_frac', 0.9999)

            if plots_only:
                gta.load_roi("%s.npy" % fit_stage['key'])
                npred_current =  set_wts_get_npred_wt(gta, mask)
                skip_list_region = get_unchanged(src_list,
                                                 npred_current,
                                                 npred_prev,
                                                 frac_threshold=frac_threshold)
            else:
                npred_current =  set_wts_get_npred_wt(gta, mask)
                skip_list_region = get_unchanged(src_list,
                                                 npred_current,
                                                 npred_prev,
                                                 frac_threshold=frac_threshold)     
                gta.optimize(npred_frac=npred_frac, 
                             npred_threshold=npred_threshold,
                             skip=skip_list_region)
            
            snapshot(gta, plotter, fit_stage['key'], make_plots=args.make_plots)
            npred_prev = npred_current
            npred_current = build_srcdict(gta, 'npred_wt')
Пример #8
0
config['fileio']['logfile'] = cwd+'/fits/fermipy.log'
config['data']['ltcube'] = cwd+'/fits/ltcube_00.fits'
config['model']['galdiff'] = path_to_conda+'/share/fermitools/refdata/fermi/galdiffuse/gll_iem_v07.fits'
config['model']['isodiff'] = path_to_conda+'/share/fermitools/refdata/fermi/galdiffuse/iso_P8R3_SOURCE_V3_v1.txt'
config['logging']['verbosity'] = 4
source = config['selection']['target']
with open(cwd+'/config_modified.yaml', 'w') as o:
    yaml.dump(config, o)

if roi == 0:
    roi_file = 'fully_optimized.npy'

elif roi == 1:
    roi_file = 'simulation_base_roi.npy'

gta = GTAnalysis.create(f'fits/{roi_file}', config='config_modified.yaml')
init_like = - gta.like()
src_model = gta.get_src_model(source)
norm = src_model['param_values'][0] * 1.0e11
alpha = src_model['param_values'][1]
beta = src_model['param_values'][2] * 1.0e1
norm_err = src_model['param_errors'][0] * 1.0e11
alpha_err = src_model['param_errors'][1]
beta_err = src_model['param_errors'][2] * 1.0e1
Eb = src_model['param_values'][3]
gta.set_source_spectrum(source, spectrum_type='FileFunction')
log10MeV, dnde = gta.get_source_dnde(source)
x = np.power(10, log10MeV)
loglikes = np.zeros((nsim, 5))
for i in gm_vals:
    prob = np.loadtxt(f'{photon_base_path}/prob{i:03.0f}.dat')
Пример #9
0
    try:
        os.mkdir(workdir)
    except FileExistsError:
        print('output directory already exists')
        sys.exit()
    roi_path = workdir
    print(roi_path)
    files = os.listdir(master_loc)
    print('files at master loc:', files)
    for f in files:
        shutil.copy2(f'{master_loc}/{f}',
                     f'{workdir}')  # copying from master file location
else:
    roi_path = f'{cwd}/fits_01'

gta = GTAnalysis.create(f'{roi_path}/fit_newminuit',
                        cwd + '/config_modified.yaml')
print('loaded loglike:', -gta.like())
roi_npy = np.load(f'{roi_path}/fit_newminuit.npy', allow_pickle=True).flat[0]
print('numpy loglike:', roi_npy['roi']['loglike'])
like_save_path = f'{workdir}/loglike_H0_{input_arg}.dat'  # loglike of null hypothesis (no alps)
gta.free_sources(free=False)
gta.simulate_roi()
for j in range(5):
    gta.optimize()
# print("loglike of saved roi", -gta.like())
# gta.write_roi(f'sim_{input_arg}')
gta.free_source(source)
# gta.fit(optimizer='NEWMINUIT', reoptimize=True)
# gta.free_source(source, free=False)
# gta.free_source(source, pars='norm')
gta.free_source('isodiff')