get_indep

sherpa.astro.ui.get_indep(id: IdType | None = None, filter=False, bkg_id: IdType | None = None)

Return the independent axes of a data set.

This function returns the coordinates of each point, or pixel, in the data set.

Parameters:
idint, str, or None, optional

The identifier for the data set to use. If not given then the default identifier is used, as returned by get_default_id.

filterbool, optional

Should the filter attached to the data set be applied to the return value or not. The default is False.

bkg_idint or str, optional

Set if the values returned should be from the given background component, instead of the source data set.

Returns:
axistuple of arrays

The independent axis values. These are the values at which the model is evaluated during fitting. The values returned depend on the coordinate system in use for the data set (as set by set_coord). For PHA data sets the value returned is always in channels, whatever the set_analysis setting is, and does not follow any grouping setting for the data set.

Raises:
sherpa.utils.err.IdentifierErr

If the data set does not exist.

See also

get_dep

Return the dependent axis of a data set.

list_data_ids

List the identifiers for the loaded data sets.

set_coord

Set the coordinate system to use for image analysis.

Notes

For a two-dimensional image, with size n by m pixels, the get_dep function will return two arrays, each of size n * m, which contain the coordinate of the center of each pixel.

Examples

For a one-dimensional data set, the X values are returned:

>>> load_arrays(1, [10, 15, 19], [4, 5, 9], Data1D)
>>> get_indep()
(array([10, 15, 19]),)

For a 2D data set the X0 and X1 values are returned:

>>> x0 = [10, 15, 12, 19]
>>> x1 = [12, 14, 10, 17]
>>> y = [4, 5, 9, -2]
>>> load_arrays(2, x0, x1, y, Data2D)
>>> get_indep(2)
(array([10, 15, 12, 19]), array([12, 14, 10, 17]))

For PHA data sets the return value is in channel units:

>>> load_pha('spec', 'src.pi')
>>> set_analysis('spec', 'energy')
>>> (chans,) = get_indep('spec')
>>> chans[0:6]
array([ 1.,  2.,  3.,  4.,  5.,  6.])

If the filter flag is set then the return will be limited to the data that is used in the fit:

>>> notice_id('spec', 0.5, 7)
>>> (nchans,) = get_indep('spec', filter=True)
>>> nchans[0:5]
array([ 35.,  36.,  37.,  38.,  39.])

For images the pixel coordinates of each pixel are returned, as 1D arrays, one value for each pixel:

>>> load_image('img', 'image.fits')
>>> (xvals, yvals) = get_indep('img')
>>> xvals.shape
(65536,)
>>> yvals.shape
(65536,)
>>> xvals[0:5]
array([ 1.,  2.,  3.,  4.,  5.])
>>> yvals[0:5]
array([ 1.,  1.,  1.,  1.,  1.])

The coordinate system for image axes is determined by the set_coord setting for the data set:

>>> set_coord('img', 'physical')
>>> (avals, bvals) = get_indep('img')
>>> avals[0:5]
array([  16.5,   48.5,   80.5,  112.5,  144.5])