Esempio n. 1
0
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()
Esempio n. 2
0
    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()
Esempio n. 3
0
    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()
Esempio n. 4
0
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
Esempio n. 5
0
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))
Esempio n. 7
0
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")
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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
Esempio n. 11
0
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)