Source code for pydiet.server.models.response

"""
Response models
"""
# Copyright CFHT/CNRS/CEA/UParisSaclay
# Licensed under the MIT licence

from typing import Optional

from astropy import units as u #type: ignore[import-untyped]
from pydantic import BaseModel, ConfigDict, Field, Json

from ..types import AnnotatedQuantity
from .types import ComputeID, FilterID, InstrumentID
from .instrument import TransmissionModel


[docs] class ETCResponseModel(BaseModel): instrument: str filter: str compute: ComputeID zp: float=Field( default=0., ge=-100., le=100., description="Estimated total photometric zero-point per second in magAB" ) zp_instru: float=Field( default=0., ge=-100., le=100., description="Estimated instrumental photometric zero-point per second in magAB" ) snr: float=Field( default=10., ge=0., lt=1e30, description="Estimated source Signal-to-Noise Ratio" ) etime: float=Field( default=1., ge=0., lt=1e30, description="Estimated exposure time" ) etime_skysat: float=Field( default=0., ge=0., lt=1e30, description="Estimated exposure time for sky background saturation" ) etime_sourcesat: float=Field( default=0., ge=0., lt=1e30, description="Estimated exposure time for source saturation" ) ttime: float=Field( default=1., ge=0., lt=1e30, description="Estimated total time" ) bkg_mag: float=Field( default=99., ge=-100., le=100., description="Estimated sky background in magAB/arcsec2" ) bkg_rate: float=Field( default=99., ge=0., le=1e30, description="Estimated sky background in photons/pixel" ) lambda_pivot: float=Field( default=0., ge=0., lt=1e12, description="Pivot wavelength of the full transmission curve in nm" ) bandwidth_rect: float=Field( default=0., ge=0., lt=1e12, description="Equivalent rectangular bandwidth of the full transmission curve in nm" ) trans_peak: float=Field( default=1., ge=0., le=1., description="Peak amplitude of the total transmission curve" ) trans_peak_instru: float=Field( default=1., ge=0., le=1., description="Peak amplitude of the instrumental transmission curve" ) cutout: Optional[str]=Field( default=None, description="GIF animation of the source" ) filter_transmission: Optional[Json] = None atmosphere_transmission: Optional[Json] = None model_config = ConfigDict(use_enum_values=True)