Bugs: delta2d
Bugs
The delta2d model parameters remain unchanged in a fit to 2D non-integrated data
If the delta2d model is used to fit a non-integrated data set, with an optimization method other than Nelder-Mead, the xpos and ypos model parameters will not vary in the fit. Users can work around this issue by fitting the model to 2D integrated data sets, e.g.:
sherpa> load_data("img.ccd7.0.3-7_box_0.2bin.fits", dstype=DataIMGInt)
# instead of
sherpa> load_data("img.ccd7.0.3-7_box_0.2bin.fits")
The dataspace2d, load_data, unpack_data, unpack_image, and load_image commands accept this 'dstype' specification to determine the data set type.
A 2D integrated data set can be specified using dataspace2d with:
sherpa> dataspace2d([100,100], dstype=DataIMGInt) # or sherpa> dataspace2d([100,100], dstype=Data2DInt)
A work-around to force the delta2d model to be integrated from a non-integrated grid is provided in the example Python script below.
from sherpa.astro.ui import *
from sherpa.models import Delta2D
class MyDelta2D(Delta2D):
"""
Force the calculation of Delta2D to be integrated from
a non-integrated grid
"""
def calc(self, p, x0, x1, *args, **kwargs):
# NOTE: image coordinates only!
return Delta2D.calc(self, p, x0-0.5, x1-0.5, x0+0.5, x1+0.5,
*args, **kwargs)
dataspace2d([100,100])
set_source(const2d.c2)
fake()
set_method("neldermead")
set_stat("cash")
load_psf("psf2d",gauss2d.g2)
set_psf(psf2d)
g2.xpos=30.
g2.ypos=70.
freeze(g2)
add_model(MyDelta2D)
set_source(mydelta2d.sig+const2d.bkg)
sig.xpos=50.
sig.ypos=50.
sig.ampl=1000.
fake()
freeze(bkg)
fit()
# Here the g2 model is also being fit, while it is a definition of the
# psf model and it should be kept frozen.
fit()
sig.xpos=49.
sig.ypos=51.
fit()

![[Sherpa Logo]](../imgs/sherpa_logo_navbar.gif)