import dataclasses
from enum import Enum
from typing import Union
import astropy.units as u
from astropy.coordinates import Latitude
from ska_ost_senscalc.low.model import LowSpectralMode
from ska_ost_senscalc.mid.model import MidSpectralMode
from ska_ost_senscalc.subarray import LOWArrayConfiguration, MIDArrayConfiguration
from ska_ost_senscalc.utilities import Telescope
[docs]class Weighting(Enum):
"""
Enumeration for different weighting
"""
NATURAL = "natural"
ROBUST = "robust"
UNIFORM = "uniform"
[docs]class Limit(Enum):
"""
Enumeration for different types of limit
"""
UPPER = "upper limit"
LOWER = "lower limit"
VALUE = "value"
[docs]@dataclasses.dataclass
class BeamSize:
beam_maj: u.Quantity
beam_min: u.Quantity
beam_pa: u.Quantity
[docs]@dataclasses.dataclass
class ConfusionNoise:
value: u.Quantity | list[u.Quantity]
limit: Limit | list[Limit]
[docs]@dataclasses.dataclass
class WeightingResult:
weighting_factor: float
surface_brightness_conversion_factor: list[u.Quantity]
beam_size: list[BeamSize]
confusion_noise: ConfusionNoise = None