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.