Initial Uncertainty Estimation#
We propagate uncertainty through the pipeline. This module initializes the uncertainty based on the bias level, the dark level, the gain, read noise level, bitrate, and signal levels.
Concept#
The initial uncertainty is characterized in level 1 data products by passing the input data file and associated metadata into a subroutine which computes and inserts these uncertainty values in place. Using CCD / instrument characteristics such as the bias level, the dark level, the gain, the read noise level, and the signal bitrate, an estimation of the noise levels can be computed.
Photon / shot noise is generated from the gain and input signal. The dark noise is generated from the dark level and a poisson distribution. The read noise is generated from a normal distribution using the provided read noise level. These individual noise terms are added in quadrature, and returned from a subroutine. The initial uncertainty estimate is then folded into the data object as a ratio of the noise level with the provided / computed data photon counts.
Applying correction#
The correction is carried out primarily in the punchbowl.level1.initial_uncertainty.compute_uncertainty
function:
- punchbowl.level1.initial_uncertainty.compute_uncertainty(data_array: ndarray, bias_level: float = 100, dark_level: float = 55.81, gain_left: float = 4.9, gain_right: float = 4.9, read_noise_level: float = 17, bitrate_signal: int = 16) ndarray
With an input data array compute a corresponding uncertainty array.
If you wish to incorporate this as a Prefect task in a custom pipeline,
using something like the punchbowl.level1.initial_uncertainty.update_initial_uncertainty_task
is recommended.