threeML.utils.spectrum.binned_spectrum module

class threeML.utils.spectrum.binned_spectrum.BinnedSpectrum(counts, exposure, ebounds: Union[ndarray, ChannelSet], count_errors: Optional[ndarray] = None, sys_errors: Optional[ndarray] = None, quality: Optional[Quality] = None, scale_factor: float = 1.0, is_poisson: bool = False, mission: Optional[str] = None, instrument: Optional[str] = None, tstart: Optional[float] = None, tstop: Optional[float] = None)[source]

Bases: Histogram

INTERVAL_TYPE

alias of Channel

add_inverse_variance_weighted(other)[source]
clone(new_counts=None, new_count_errors=None, new_exposure=None, new_scale_factor=None)[source]

make a new spectrum with new counts and errors and all other parameters the same

Parameters:
  • new_counts – new counts for the spectrum

  • new_count_errors – new errors from the spectrum

Returns:

property count_errors: Optional[ndarray]

count error per channel

Type:

return

property counts: ndarray

counts per channel

Type:

return

property exposure: float

Exposure in seconds

Returns:

exposure

classmethod from_pandas(pandas_dataframe, exposure, scale_factor=1.0, is_poisson=False, mission=None, instrument=None)[source]

Build a spectrum from data contained within a pandas data frame.

The required columns are:

‘emin’: low energy bin edge ‘emax’: high energy bin edge ‘counts’: the counts in each bin

Optional column names are:

‘count_errors’: errors on the counts for non-Poisson data ‘sys_errors’: systematic error per channel ‘quality’ list of 3ML quality flags ‘good’, ‘warn’, ‘bad’

Parameters:
  • pandas_dataframe – data frame containing information to be read into spectrum

  • exposure – the exposure of the spectrum

  • scale_factor – the scale factor of the spectrum

  • is_poisson – if the data are Poisson distributed

  • mission – (optional) the mission name

  • instrument – (optional) the instrument name

Returns:

classmethod from_time_series(time_series, use_poly=False, from_model=False, **kwargs)[source]
Parameters:
  • time_series

  • use_poly

Returns:

property instrument: str
property is_poisson: bool
property mission: str
property n_channel: int
property n_channels: int
property quality: Quality
property rate_errors: Optional[ndarray]

If the spectrum has no Poisson error (POISSER is False in the header), this will return the STAT_ERR column :return: errors on the rates

property rates: ndarray

rates per channel

Type:

return

property scale_factor: float
property sys_errors: ndarray

Systematic errors per channel. This is nonzero only if the SYS_ERR column is present in the input file.

Returns:

the systematic errors stored in the input spectrum

to_pandas(use_rate=True)[source]

make a pandas table from the spectrum.

Parameters:

use_rate – if the table should use rates or counts

Returns:

property total_count: float

total counts

Type:

return

property total_count_error: Optional[float]

total count error

Type:

return

property total_rate: float

total rate

Type:

return

property total_rate_error: float

total rate error

Type:

return

property tstart: float
property tstop: float
class threeML.utils.spectrum.binned_spectrum.BinnedSpectrumWithDispersion(counts, exposure, response: InstrumentResponse, count_errors: Optional[ndarray] = None, sys_errors: Optional[ndarray] = None, quality=None, scale_factor: float = 1.0, is_poisson: bool = False, mission: Optional[str] = None, instrument: Optional[str] = None, tstart: Optional[float] = None, tstop: Optional[float] = None)[source]

Bases: BinnedSpectrum

clone(new_counts=None, new_count_errors=None, new_sys_errors=None, new_exposure=None, new_scale_factor=None)[source]

make a new spectrum with new counts and errors and all other parameters the same

Parameters:
  • new_sys_errors

  • new_exposure

  • new_scale_factor

  • new_counts – new counts for the spectrum

  • new_count_errors – new errors from the spectrum

Returns:

classmethod from_time_series(time_series, response=None, use_poly=False, extract=False)[source]
Parameters:
  • time_series

  • use_poly

Returns:

property response: InstrumentResponse
class threeML.utils.spectrum.binned_spectrum.Channel(start: float, stop: float, swap_if_inverted: bool = False)[source]

Bases: Interval

property channel_width
class threeML.utils.spectrum.binned_spectrum.ChannelSet(list_of_intervals=())[source]

Bases: IntervalSet

INTERVAL_TYPE

alias of Channel

property channels_widths
classmethod from_instrument_response(instrument_response)[source]

Build EBOUNDS interval from an instrument response

Parameters:

instrument_response

Returns:

class threeML.utils.spectrum.binned_spectrum.Quality(quality: ndarray)[source]

Bases: object

property bad: ndarray
classmethod create_all_good(n_channels)[source]

construct a quality object with all good channels :param n_channels: :return:

classmethod from_ogip(ogip_quality)[source]

Read in quality from an OGIP file

Parameters:
  • cls

  • ogip_quality

Returns:

get_slice(idx)[source]
property good: ndarray
property n_elements: int
to_ogip() ndarray[source]

makes a quality array following the OGIP standards: 0 = good 2 = warn 5 = bad

Returns:

property warn: ndarray