ConstantPixelDefect

ConstantPixelDefect#

class cabaret.camera.ConstantPixelDefect(name: str = 'defect', rate: float = 0.0, seed: int = 0, apply_before_base: bool = False, _rng: Generator | None = None, _pixels: ndarray | None = None, value: int = 0)[source]#

A pixel defect that sets selected pixels to a constant value.

Examples

>>> from cabaret import Observatory, Sources
>>> pixel_defects = {
...     "hot": {"type": "constant", "value": 5000, "rate": 0.01, "seed": 0},
...     "cold": {"type": "constant", "value": 0, "rate": 0.01, "seed": 1}
... }
>>> observatory = Observatory(camera={"pixel_defects": pixel_defects})
>>> sources = Sources.get_test_sources()
>>> ra, dec = sources.center
>>> _, clean_image, image = observatory.generate_image_stack(
...     exp_time=3, ra=ra, dec=dec, sources=sources, convert_all_to_adu=True
... )

To plot the images, you can use the plot_image function from cabaret.plot:

>>> from cabaret.plot import plot_image
>>> import matplotlib.pyplot as plt
>>> fig, axes = plt.subplots(1, 2, figsize=(7, 5), sharex=True, sharey=True)
>>> _ = plot_image(clean_image, ax=axes[0], title="Image without defects")
>>> _ = plot_image(image, ax=axes[1], title="Image with constant defects")
>>> plt.subplots_adjust(wspace=0.1)
>>> plt.show()

Methods

__init__([name, rate, seed, ...])

introduce_pixel_defect(image, camera, **kwargs)

Introduce the defect into the image.

number_of_defect_pixels(camera)

Calculate the number of pixels affected by the defect.

set_pixels(pixels, camera)

Set the pixels for the defect.

Attributes

apply_before_base

If True, this defect is applied before the base image (bias, dark, read noise) is added.

name

Name of the defect.

pixels

Pixel coordinates affected by the defect.

rate

Fraction of pixels affected by the defect.

rng

Random number generator instance.

seed

Random seed for reproducibility.

value

Constant value to assign to defect pixels.