Beispiel #1
0
class SpsVisit(BaseModel):
    exp_type: str
    exposures: list[SpsExposure]

    Config = OrmConfig[M.sps_visit]()(lambda row: skip_validation(SpsVisit)(
        exp_type=row.exp_type,
        exposures=row.sps_exposure,
    ))
Beispiel #2
0
class VisitSetBase(BaseModel):
    id: int
    visit_id: int

    Config = OrmConfig[M.visit_set]()(lambda row: skip_validation(VisitSetBase)
                                      (
                                          id=row.visit_set_id,
                                          visit_id=row.pfs_visit_id,
                                      ))
Beispiel #3
0
class VisitSet(BaseModel):
    id: int
    visit_id: int
    sps_sequence: SpsSequence

    Config = OrmConfig[M.visit_set]()(lambda row: skip_validation(VisitSet)(
        id=row.visit_set_id,
        visit_id=row.pfs_visit_id,
        sps_sequence=row.iic_sequence,
    ))
Beispiel #4
0
class VisitBase(BaseModel):
    id: int
    description: Optional[str]
    issued_at: Optional[datetime]

    Config = OrmConfig[M.pfs_visit]()(lambda row: skip_validation(VisitBase)(
        id=row.pfs_visit_id,
        description=row.pfs_visit_description,
        issued_at=row.issued_at,
    ))
Beispiel #5
0
class IicSequenceStatus(BaseModel):
    visit_set_id: int
    status_flag: Optional[int]
    cmd_output: Optional[str]

    Config = OrmConfig[M.iic_sequence_status]()(
        lambda row: skip_validation(IicSequenceStatus)(
            visit_set_id=row.visit_set_id,
            status_flag=row.status_flag,
            cmd_output=row.cmd_output,
        ))
Beispiel #6
0
class SpsSequenceDetail(SpsSequence):
    notes: list[VisitSetNote]

    Config = OrmConfig[M.iic_sequence]()(
        lambda row: skip_validation(SpsSequenceDetail)(
            visit_set_id=row.visit_set_id,
            sequence_type=row.sequence_type,
            name=row.name,
            comments=row.comments,
            cmd_str=row.cmd_str,
            status=row.iic_sequence_status,
            notes=row.obslog_notes,
        ))
Beispiel #7
0
class SpsExposure(BaseModel):
    camera_id: int
    exptime: float
    exp_start: datetime
    exp_end: datetime
    annotation: list[SpsAnnotation]

    Config = OrmConfig[M.sps_exposure]()(
        lambda row: skip_validation(SpsExposure)(
            camera_id=row.sps_camera_id,
            exptime=row.exptime,  # type: ignore
            exp_end=row.time_exp_end,
            exp_start=row.time_exp_end,
            annotation=row.sps_annotation,
        ))
Beispiel #8
0
class VisitDetail(VisitBase):
    notes: list[VisitNote]
    sps: Optional[SpsVisit]
    mcs: Optional[McsVisit]
    agc: Optional[AgcVisit]
    sps_sequence: Optional[SpsSequenceDetail]

    Config = OrmConfig[M.pfs_visit]()(lambda row: skip_validation(VisitDetail)(
        id=row.pfs_visit_id,
        description=row.pfs_visit_description,
        issued_at=row.issued_at,
        notes=row.obslog_notes,
        sps=row.sps_visit,
        mcs=None if len(row.mcs_exposure) == 0 else McsVisit(exposures=row.
                                                             mcs_exposure),
        agc=None
        if row.agc_exposure is None else AgcVisit(exposure=row.agc_exposure),
        sps_sequence=row.visit_set.iic_sequence if row.visit_set else None,
    ))
Beispiel #9
0
class IicSequence(BaseModel):
    visit_set_id: int
    sequence_type: Optional[str]
    name: Optional[str]
    comments: Optional[str]
    cmd_str: Optional[str]
    status: Optional[IicSequenceStatus]
    notes: list[VisitSetNote]

    Config = OrmConfig[M.iic_sequence]()(
        lambda row: skip_validation(SpsSequence)(
            visit_set_id=row.visit_set_id,
            sequence_type=row.sequence_type,
            name=row.name,
            comments=row.comments,
            cmd_str=row.cmd_str,
            status=row.iic_sequence_status,
            notes=row.obslog_notes,
        ))
Beispiel #10
0
class McsExposure(BaseModel):
    frame_id: int
    exptime: Optional[float]
    altitude: Optional[float]
    azimuth: Optional[float]
    insrot: Optional[float]
    adc_pa: Optional[float]
    dome_temperature: Optional[float]
    dome_pressure: Optional[float]
    dome_humidity: Optional[float]
    outside_temperature: Optional[float]
    outside_pressure: Optional[float]
    outside_humidity: Optional[float]
    mcs_cover_temperature: Optional[float]
    mcs_m1_temperature: Optional[float]
    taken_at: datetime
    notes: list[McsExposureNote]

    Config = OrmConfig[M.mcs_exposure]()(
        lambda row: (
            skip_validation(McsExposure)(
                frame_id=row.mcs_frame_id,
                exptime=row.mcs_exptime,  # type: ignore
                altitude=row.altitude,  # type: ignore
                azimuth=row.azimuth,  # type: ignore
                insrot=row.insrot,  # type: ignore
                adc_pa=row.adc_pa,  # type: ignore
                dome_temperature=row.dome_temperature,  # type: ignore
                dome_pressure=row.dome_pressure,  # type: ignore
                dome_humidity=row.dome_humidity,  # type: ignore
                outside_temperature=row.outside_temperature,  # type: ignore
                outside_pressure=row.outside_pressure,  # type: ignore
                outside_humidity=row.outside_humidity,  # type: ignore
                mcs_cover_temperature=row.
                mcs_cover_temperature,  # type: ignore
                mcs_m1_temperature=row.mcs_m1_temperature,  # type: ignore
                taken_at=row.taken_at,
                notes=row.obslog_notes,
            )))
Beispiel #11
0
class VisitListEntry(VisitBase):
    visit_set_id: Optional[int]
    n_sps_exposures: int
    n_mcs_exposures: int
    n_agc_exposures: int  # 0 or 1
    avg_exptime: Optional[float]
    avg_azimuth: Optional[float]
    avg_altitude: Optional[float]
    avg_insrot: Optional[float]
    notes: list[VisitNote]

    Config = OrmConfig()(lambda row: skip_validation(VisitListEntry)(
        **VisitBase.Config.row_to_model(row.pfs_visit).dict(),
        visit_set_id=row.visit_set_id,
        n_sps_exposures=row.n_sps_exposures,
        n_mcs_exposures=row.n_mcs_exposures,
        n_agc_exposures=row.n_agc_exposures,
        avg_exptime=row.avg_exptime,
        avg_azimuth=row.avg_azimuth,
        avg_altitude=row.avg_altitude,
        avg_insrot=row.avg_insrot,
        notes=row.pfs_visit.obslog_notes,
    ))
Beispiel #12
0
class AgcExposure(BaseModel):
    id: int
    exptime: Optional[float]
    altitude: Optional[float]
    azimuth: Optional[float]
    insrot: Optional[float]
    adc_pa: Optional[float]
    m2_pos3: Optional[float]
    outside_temperature: Optional[float]
    outside_pressure: Optional[float]
    outside_humidity: Optional[float]
    measurement_algorithm: Optional[str]
    version_actor: Optional[str]
    version_instdata: Optional[str]
    taken_at: Optional[datetime]
    guide_offset: Optional[AgcGuideOffset]

    Config = OrmConfig[M.agc_exposure]()(
        lambda row: (
            skip_validation(AgcExposure)(
                id=row.agc_exposure_id,
                exptime=row.agc_exptime,  # type: ignore
                altitude=row.altitude,  # type: ignore
                azimuth=row.azimuth,  # type: ignore
                insrot=row.insrot,  # type: ignore
                adc_pa=row.adc_pa,  # type: ignore
                m2_pos3=row.m2_pos3,  # type: ignore
                outside_temperature=row.outside_temperature,  # type: ignore
                outside_pressure=row.outside_pressure,  # type: ignore
                outside_humidity=row.outside_humidity,  # type: ignore
                measurement_algorithm=row.measurement_algorithm,
                version_actor=row.version_actor,
                version_instdata=row.version_instdata,
                taken_at=row.taken_at,
                guide_offset=row.agc_guide_offset,
            )))
Beispiel #13
0
class AgcGuideOffset(BaseModel):
    ra: Optional[float]
    dec: Optional[float]
    pa: Optional[float]
    delta_ra: Optional[float]
    delta_dec: Optional[float]
    delta_insrot: Optional[float]
    delta_az: Optional[float]
    delta_el: Optional[float]
    delta_z: Optional[float]
    delta_z1: Optional[float]
    delta_z2: Optional[float]
    delta_z3: Optional[float]
    delta_z4: Optional[float]
    delta_z5: Optional[float]
    delta_z6: Optional[float]

    Config = OrmConfig[M.agc_guide_offset]()(
        lambda row: (
            skip_validation(AgcGuideOffset)(
                ra=row.guide_ra,  # type: ignore
                dec=row.guide_dec,  # type: ignore
                pa=row.guide_pa,  # type: ignore
                delta_ra=row.guide_delta_ra,  # type: ignore
                delta_dec=row.guide_delta_dec,  # type: ignore
                delta_insrot=row.guide_delta_insrot,  # type: ignore
                delta_az=row.guide_delta_az,  # type: ignore
                delta_el=row.guide_delta_el,  # type: ignore
                delta_z=row.guide_delta_z,  # type: ignore
                delta_z1=row.guide_delta_z1,  # type: ignore
                delta_z2=row.guide_delta_z2,  # type: ignore
                delta_z3=row.guide_delta_z3,  # type: ignore
                delta_z4=row.guide_delta_z4,  # type: ignore
                delta_z5=row.guide_delta_z5,  # type: ignore
                delta_z6=row.guide_delta_z6,  # type: ignore
            )))