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()
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
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
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
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()
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')
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')
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')