def test_pha_case_6(ds_setup, ds_datadir): datadir = ds_datadir ls = '@' + '/'.join((datadir, 'pha.lis')) rmf1 = '/'.join((datadir, "acisf04938_000N002_r0043_rmf3.fits")) rmf2 = '/'.join((datadir, "acisf07867_000N001_r0002_rmf3.fits")) arf1 = '/'.join((datadir, "acisf04938_000N002_r0043_arf3.fits")) arf2 = '/'.join((datadir, "acisf07867_000N001_r0002_arf3.fits")) datastack.load_pha(ls) datastack.load_bkg_rmf([], rmf1) datastack.load_bkg_rmf([], rmf2) datastack.load_bkg_arf([], arf1) datastack.load_bkg_arf([], arf2) # Define background models bkg_arfs = datastack.get_bkg_arf([]) bkg_scales = datastack.get_bkg_scale([]) bkg_models = [ ui.const1d.c1 * acis_bkg_model('acis7s'), ui.const1d.c2 * acis_bkg_model('acis7s') ] bkg_rsps = datastack.get_response([], bkg_id=1) for i in range(2): id_ = i + 1 # Make the ARF spectral response flat. This is required for using # the acis_bkg_model. bkg_arfs[i].specresp = bkg_arfs[i].specresp * 0 + 1. datastack.set_bkg_full_model(id_, bkg_rsps[i](bkg_models[i])) # Fit background datastack.notice(0.5, 8.) datastack.set_method("neldermead") datastack.set_stat("cash") datastack.thaw(c1.c0) datastack.thaw(c2.c0) datastack.fit_bkg() datastack.freeze(c1.c0) datastack.freeze(c2.c0) # Define source models rsps = datastack.get_response([]) src_model = ui.powlaw1d.pow1 src_models = [src_model, src_model * ui.const1d.ratio_12] for i in range(2): id_ = i + 1 datastack.set_full_model(id_, (rsps[i](src_models[i]) + bkg_scales[i] * bkg_rsps[i](bkg_models[i]))) datastack.fit()
def test_case_6(self): datadir = '/'.join((self._this_dir, 'data')) ls = '@' + '/'.join((datadir, 'pha.lis')) load_pha(ls) load_bkg_rmf([], '/'.join( (datadir, "acisf04938_000N002_r0043_rmf3.fits"))) load_bkg_rmf([], '/'.join( (datadir, "acisf07867_000N001_r0002_rmf3.fits"))) load_bkg_arf([], '/'.join( (datadir, "acisf04938_000N002_r0043_arf3.fits"))) load_bkg_arf([], '/'.join( (datadir, "acisf07867_000N001_r0002_arf3.fits"))) # Define background models bkg_arfs = get_bkg_arf([]) bkg_scales = get_bkg_scale([]) bkg_models = [ const1d.c1 * acis_bkg_model('acis7s'), const1d.c2 * acis_bkg_model('acis7s') ] bkg_rsps = get_response([], bkg_id=1) for i in range(2): id_ = i + 1 # Make the ARF spectral response flat. This is required for using # the acis_bkg_model. bkg_arfs[i].specresp = bkg_arfs[i].specresp * 0 + 1. set_bkg_full_model(id_, bkg_rsps[i](bkg_models[i])) # Fit background notice(0.5, 8.) set_method("neldermead") set_stat("cash") thaw(c1.c0) thaw(c2.c0) fit_bkg() freeze(c1.c0) freeze(c2.c0) # Define source models rsps = get_response([]) src_model = powlaw1d.pow1 src_models = [src_model, src_model * const1d.ratio_12] for i in range(2): id_ = i + 1 set_full_model(id_, (rsps[i](src_models[i]) + bkg_scales[i] * bkg_rsps[i](bkg_models[i]))) fit()
def test_case_6(self): datadir = '/'.join((self._this_dir, 'data')) ls = '@'+'/'.join((datadir, 'pha.lis')) rmf1 = '/'.join((datadir, "acisf04938_000N002_r0043_rmf3.fits")) rmf2 = '/'.join((datadir, "acisf07867_000N001_r0002_rmf3.fits")) arf1 = '/'.join((datadir, "acisf04938_000N002_r0043_arf3.fits")) arf2 = '/'.join((datadir, "acisf07867_000N001_r0002_arf3.fits")) datastack.load_pha(ls) datastack.load_bkg_rmf([], rmf1) datastack.load_bkg_rmf([], rmf2) datastack.load_bkg_arf([], arf1) datastack.load_bkg_arf([], arf2) # Define background models bkg_arfs = datastack.get_bkg_arf([]) bkg_scales = datastack.get_bkg_scale([]) bkg_models = [ui.const1d.c1 * acis_bkg_model('acis7s'), ui.const1d.c2 * acis_bkg_model('acis7s')] bkg_rsps = datastack.get_response([], bkg_id=1) for i in range(2): id_ = i + 1 # Make the ARF spectral response flat. This is required for using # the acis_bkg_model. bkg_arfs[i].specresp = bkg_arfs[i].specresp * 0 + 1. datastack.set_bkg_full_model(id_, bkg_rsps[i](bkg_models[i])) # Fit background datastack.notice(0.5, 8.) datastack.set_method("neldermead") datastack.set_stat("cash") datastack.thaw(c1.c0) datastack.thaw(c2.c0) datastack.fit_bkg() datastack.freeze(c1.c0) datastack.freeze(c2.c0) # Define source models rsps = datastack.get_response([]) src_model = ui.powlaw1d.pow1 src_models = [src_model, src_model * ui.const1d.ratio_12] for i in range(2): id_ = i + 1 datastack.set_full_model(id_, (rsps[i](src_models[i]) + bkg_scales[i] * bkg_rsps[i](bkg_models[i]))) datastack.fit()
arfs = ds.get_arf() ## load_bkg_rmf(rmf.name) ## load_bkg_arf(arf.name) for i, rmf, arf in zip(count(1), rmfs, arfs): ds[i].load_bkg_rmf(rmf.name) ds[i].load_bkg_arf(arf.name) ## bkg_rmf = get_bkg_rmf() ## bkg_arf = get_bkg_arf() ## bkg_arf.specresp = np.ones_like(bkg_arf.specresp) ## bkg_model = bkg_rmf(bkg_arf(const1d.bkg_constID * acis_bkg_model('acis7s'))) # Define background models acis_bkg = acis_bkg_model("acis7s") bkg_models = [] c1 = ui.const1d.c1 c2 = ui.const1d.c2 for const, bkg_rmf, bkg_arf in zip((c1, c2), ds.get_bkg_rmf(), ds.get_bkg_arf()): bkg_arf.specresp = np.ones_like(bkg_arf.specresp) bkg_models.append(bkg_rmf(bkg_arf(const * acis_bkg))) ## src_model = rmf(arf(powlaw1d.pow1)) ## bkg_scale = get_bkg_scale() ## set_full_model(src_model + bkg_scale * bkg_model) ## set_bkg_full_model(bkg_model) ## Define source models abs1 = ui.xsphabs.abs1 pow1 = ui.powlaw1d.pow1
ds[1].load_pha("acisf04938_000N002_r0043_pha3.fits") ds[2].load_pha("acisf07867_000N001_r0002_pha3.fits") detnam = "acis2i" for dataset in ds.datasets: id_ = dataset["id"] rmf = ui.get_rmf(id_) arf = ui.get_arf(id_) ui.load_bkg_arf(id_, arf.name) bkg_arf = ui.get_bkg_arf(id_) bkg_rmf = ui.get_bkg_rmf(id_) bkg_arf.specresp = bkg_arf.specresp * 0 + 100.0 bkg_scale = ui.get_data(id_).sum_background_data(lambda x, y: 1) bkg_model = bkg_rmf(bkg_arf(ui.const1d.bkg_constID * acis_bkg_model(detnam))) src_model = rmf(arf(ui.const1d.src_constID * ui.powlaw1d.powlaw)) ds[id_].set_full_model(src_model + bkg_scale * bkg_model) ds[id_].set_bkg_full_model(bkg_model) ds[1].set_par("src_const.c0", 1.0) ds[1].freeze("src_const") ds.ignore(None, 0.5) ds.ignore(7, None) ds.fit() ds.plot_fit() ds.group_counts(16) ds.ignore(None, 0.5) ds.ignore(7, None) ds.plot_fit()
load_bkg_arf(1, 'obs1.arf') load_bkg_arf(2, 'obs2.arf') load_bkg_arf(3, 'obs3.arf') load_bkg_arf(4, 'obs4.arf') # background for the 1 data set bkg_arf_1 = get_bkg_arf(1) bkg_rmf_1= get_bkg_rmf(1) # scaling factor bkg_scale_1 = get_data(1).sum_background_data(lambda x,y: 1) rsp_1 = get_response(1) bkg_model_1 = const1d.c1 * acis_bkg_model('acis7s') set_full_model(1,rsp_1(xsphabs.abs1*powlaw1d.pow1) + bkg_scale_1 * bkg_rmf_1(bkg_model_1)) set_bkg_full_model(1,bkg_rmf_1(bkg_model_1)) # background for the 2 data set bkg_arf_2 = get_bkg_arf(2) bkg_rmf_2= get_bkg_rmf(2) bkg_scale_2 = get_data(2).sum_background_data(lambda x,y: 1) rsp_2 = get_response(2) bkg_model_2= const1d.c2 * acis_bkg_model('acis7s') set_full_model(2,rsp_2(abs1*pow1) + bkg_scale_2 * bkg_rmf_2(bkg_model_2)) set_bkg_full_model(2,bkg_rmf_2(bkg_model_2))
load_bkg_rmf(1, "acisf04938_000N002_r0043_rmf3.fits") load_bkg_rmf(2, "acisf07867_000N001_r0002_rmf3.fits") load_bkg_arf(1, "acisf04938_000N002_r0043_arf3.fits") load_bkg_arf(2, "acisf07867_000N001_r0002_arf3.fits") # background for the 1 data set bkg_arf_1 = get_bkg_arf(1) bkg_arf_1.specresp = bkg_arf_1.specresp * 0 + 1.0 bkg_rmf_1 = get_bkg_rmf(1) bkg_scale_1 = get_bkg_scale(1) rsp_1 = get_response(1) bkg_rsp_1 = get_response(bkg_id=1) bkg_model_1 = const1d.c1 * acis_bkg_model("acis7s") set_bkg_full_model(1, bkg_rsp_1(bkg_model_1)) # background for the 2 data set bkg_arf_2 = get_bkg_arf(2) bkg_arf_2.specresp = bkg_arf_2.specresp * 0 + 1.0 bkg_rmf_2 = get_bkg_rmf(2) bkg_scale_2 = get_bkg_scale(2) rsp_2 = get_response(2) bkg_rsp_2 = get_response(2, bkg_id=1) bkg_model_2 = const1d.c2 * acis_bkg_model("acis7s") set_bkg_full_model(2, bkg_rsp_2(bkg_model_2)) # Fitting Background: set_method("neldermead")
import datastack from acis_bkg_model import acis_bkg_model import sherpa.astro.ui as ui ds = datastack.DataStack() ds[1].load_pha('acisf04938_000N002_r0043_pha3.fits') ds[2].load_pha('acisf07867_000N001_r0002_pha3.fits') bkg_model = scale1d.bkg_constID * acis_bkg_model('acis2i') src_model = const1d.src_constID * xsphabs.absID * powlaw1d.powID ids = ds.ids bkg_rmfs = ds.get_bkg_rmf() rsps = ds.get_response() bkg_scales = ds.get_bkg_scale() for id_, bkg_rmf, rsp, bkg_scale in zip(ids, bkg_rmfs, rsps, bkg_scales): ds[id_].set_full_model(rsp(src_model) + bkg_scale * bkg_rmf(bkg_model)) ds[id_].set_bkg_full_model(bkg_rmf(bkg_model)) ds[1].set_par('src_const.c0', 1.0) ds[1].freeze('src_const') ds.ignore(None, 0.5) ds.ignore(7, None) ds.fit() ds.plot_fit() ds.group_counts(16) ds.ignore(None, 0.5) ds.ignore(7, None)
clear_stack() datadir = 'data/' load_pha([], datadir + 'acisf04938_000N002_r0043_pha3.fits') load_pha([], datadir + 'acisf07867_000N001_r0002_pha3.fits') load_bkg_rmf([], datadir + "acisf04938_000N002_r0043_rmf3.fits") load_bkg_rmf([], datadir + "acisf07867_000N001_r0002_rmf3.fits") load_bkg_arf([], datadir + "acisf04938_000N002_r0043_arf3.fits") load_bkg_arf([], datadir + "acisf07867_000N001_r0002_arf3.fits") # Define background models bkg_arfs = get_bkg_arf([]) bkg_scales = get_bkg_scale([]) bkg_models = [const1d.c1 * acis_bkg_model('acis7s'), const1d.c2 * acis_bkg_model('acis7s')] bkg_rsps = get_response([], bkg_id=1) for i in range(2): id_ = i + 1 # Make the ARF spectral response flat. This is required for using # the acis_bkg_model. bkg_arfs[i].specresp = bkg_arfs[i].specresp * 0 + 1. set_bkg_full_model(id_, bkg_rsps[i](bkg_models[i])) # Fit background notice(0.5, 8.) set_method("neldermead") set_stat("cash") thaw(c1.c0)
arfs = ds.get_arf([]) ## load_bkg_rmf(rmf.name) ## load_bkg_arf(arf.name) for i, rmf, arf in zip(count(1), rmfs, arfs): ds.load_bkg_rmf([i], rmf.name) ds.load_bkg_arf([i], arf.name) ## bkg_rmf = get_bkg_rmf() ## bkg_arf = get_bkg_arf() ## bkg_arf.specresp = np.ones_like(bkg_arf.specresp) ## bkg_model = bkg_rmf(bkg_arf(const1d.bkg_constID * acis_bkg_model('acis7s'))) # Define background models acis_bkg = acis_bkg_model('acis7s') bkg_models = [] c1 = ui.const1d.c1 c2 = ui.const1d.c2 for const, bkg_rmf, bkg_arf in zip((c1, c2), ds.get_bkg_rmf([]), ds.get_bkg_arf([])): bkg_arf.specresp = np.ones_like(bkg_arf.specresp) bkg_models.append(bkg_rmf(bkg_arf(const * acis_bkg))) ## src_model = rmf(arf(powlaw1d.pow1)) ## bkg_scale = get_bkg_scale() ## set_full_model(src_model + bkg_scale * bkg_model) ## set_bkg_full_model(bkg_model) ## Define source models
import numpy as np from sherpa.astro.ui import * from acis_bkg_model import acis_bkg_model load_pha('examples/data/acisf04938_000N002_r0043_pha3.fits') rmf = get_rmf(id=1) arf = get_arf(id=1) load_bkg_rmf(rmf.name) load_bkg_arf(arf.name) bkg_rmf = get_bkg_rmf() bkg_arf = get_bkg_arf() bkg_arf.specresp = np.ones_like(bkg_arf.specresp) bkg_model = bkg_rmf(bkg_arf(const1d.bkg_constID * acis_bkg_model('acis7s'))) src_model = rmf(arf(powlaw1d.pow1)) bkg_scale = get_bkg_scale() set_full_model(src_model + bkg_scale * bkg_model) set_bkg_full_model(bkg_model) print 'Fit on unbinned data (notice 0.5-7)' ignore(None, 0.5) ignore(7, None) fit() plot_fit() print 'Fit on grouped data (notice 0.5-7)' group_counts(16)