Sky flats (pyobs.robotic.utils.skyflats)

TODO: write docs

FlatFielder

class FlatFielder(functions: str | dict[str, str | dict[str, str]], target_count: float = 30000, min_exptime: float = 0.5, max_exptime: float = 5, test_frame: tuple[float, float, float, float] | None = None, counts_frame: tuple[float, float, float, float] | None = None, allowed_offset_frac: float = 0.2, min_counts: int = 100, pointing: dict[str, Any] | SkyFlatsBasePointing | None = None, callback: Callable[[...], Coroutine[Any, Any, None]] | None = None, **kwargs: Any)

Automatized flat-fielding.

Initialize a new flat fielder.

Parameters:
  • functions – Function f(h) for each filter to describe ideal exposure time as a function of solar elevation h, i.e. something like exp(-0.9*(h+3.9)). See ExpTimeEval for details.

  • target_count – Count rate to aim for.

  • min_exptime – Minimum exposure time.

  • max_exptime – Maximum exposure time.

  • test_frame – Tupel (left, top, width, height) in percent that describe the frame for on-sky testing.

  • counts_frame – Tupel (left, top, width, height) in percent that describe the frame for calculating mean count rate.

  • allowed_offset_frac – Offset from target_count (given in fraction of it) that’s still allowed for good flat-field

  • min_counts – Minimum counts in frames.

  • observer – Observer to use.

  • vfs – VFS to use.

  • callback – Callback function for statistics.

Scheduler

class Scheduler(functions: str | dict[str, str | dict[str, str]], priorities: SkyflatPriorities, observer: Observer | None, min_exptime: float = 0.5, max_exptime: float = 5, timespan: float = 7200, filter_change: float = 30, count: int = 20, readout: dict[str, float] | None = None)

Scheduler for taking flat fields

Initializes a new scheduler for taking flat fields

Parameters:
  • functions – Flat field functions

  • priorities – Class handling priorities

  • observer – Observer to use

  • min_exptime – Minimum exposure time for flats

  • max_exptime – Maximum exposure time for flats

  • timespan – Timespan from now that should be scheduled [s]

  • filter_change – Time required for filter change [s]

  • count – Number of flats to schedule

  • readout – Dictionary with readout times (in sec) per binning (as BxB).

Sky flat pointings (pyobs.robotic.utils.skyflats.pointing)

TODO: write docs

SkyFlatsBasePointing

class SkyFlatsBasePointing

Base class for flat pointings.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

SkyFlatsStaticPointing

class SkyFlatsStaticPointing

Static flat pointing.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Sky flat priorities (pyobs.robotic.utils.skyflats.priorities)

TODO: write docs

ArchiveSkyflatPriorities

class ArchiveSkyflatPriorities(*, archive: Archive, site: str, instrument: str, filter_names: list[str], binnings: list[int])

Calculate flat priorities from an archive.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

ConstSkyflatPriorities

class ConstSkyflatPriorities(*, priorities: dict[tuple[str, tuple[int, int]], float])

Constant flat priorities.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

SkyflatPriorities

class SkyflatPriorities

Base class for sky flat priorities.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.