from .base import AuxService
import pandas as pd
def fact_mjd_to_datetime(fact_mjd):
''' convert fact mjds (days since unix epoch) to pandas datetimes '''
return pd.to_datetime(fact_mjd * 24 * 3600 * 1e9)
__all__ = [
'MagicWeather',
'PfMini',
'DriveTracking',
'DrivePointing',
'DriveSource',
'FSCHumidity',
'FSCTemperature',
'FTMTriggerRates',
'BiasVoltage',
'FADTemperature',
]
[docs]class MagicWeather(AuxService):
basename = 'MAGIC_WEATHER_DATA'
renames = {
'Time': 'timestamp',
'T': 'temperature',
'T_dew': 'dewpoint',
'H': 'humidity',
'P': 'pressure',
'v': 'wind_speed',
'v_max': 'wind_gust_speed',
'd': 'wind_direction',
}
ignored_columns = ['stat', 'QoS']
transforms = {'timestamp': fact_mjd_to_datetime}
[docs]class PfMini(AuxService):
basename = 'PFMINI_CONTROL_DATA'
renames = {
'Time': 'timestamp',
'Temperature': 'temperature',
'Humidity': 'humidity',
}
ignored_columns = ['QoS', ]
transforms = {'timestamp': fact_mjd_to_datetime}
[docs]class DriveTracking(AuxService):
basename = 'DRIVE_CONTROL_TRACKING_POSITION'
renames = {
'Time': 'timestamp',
'Ra': 'right_ascension',
'Dec': 'declination',
'Ha': 'hourangle',
'SrcHa': 'hourangle_source',
'SrcRa': 'right_ascension_source',
'SrcDec': 'declination_source',
'HaDec': 'hourangle_source',
'Zd': 'zenith',
'Az': 'azimuth',
'dZd': 'zenith_deviation',
'dAz': 'azimuth_deviation',
'dev': 'absolute_control_deviation',
'avgdev': 'average_control_deviation',
}
transforms = {'timestamp': fact_mjd_to_datetime}
ignored_columns = ['QoS', ]
[docs]class DrivePointing(AuxService):
basename = 'DRIVE_CONTROL_POINTING_POSITION'
renames = {
'Time': 'timestamp',
'Zd': 'zenith',
'Az': 'azimuth',
}
transforms = {'timestamp': fact_mjd_to_datetime}
ignored_columns = ['QoS', ]
[docs]class DriveSource(AuxService):
basename = 'DRIVE_CONTROL_SOURCE_POSITION'
renames = {
'Time': 'timestamp',
'Ra_src': 'right_ascension_source',
'Ra_cmd': 'right_ascension_command',
'Dec_src': 'declination_source',
'Dec_cmd': 'declination_command',
'Offset': 'wobble_offset',
'Angle': 'wobble_angle',
'Name': 'source',
'Period': 'orbit_period',
}
transforms = {'timestamp': fact_mjd_to_datetime}
ignored_columns = ['QoS', ]
[docs]class FSCHumidity(AuxService):
basename = 'FSC_CONTROL_HUMIDITY'
renames = {
'Time': 'timestamp',
't': 'fsc_uptime',
'H': 'humidity',
}
transforms = {'timestamp': fact_mjd_to_datetime}
ignored_columns = ['QoS', ]
[docs]class FSCTemperature(AuxService):
basename = 'FSC_CONTROL_TEMPERATURE'
renames = {
'Time': 'timestamp',
't': 'fsc_uptime',
'T_crate': 'crate_temperature',
'T_sens': 'sensor_compartment_temperature',
'T_ps': 'power_supply_temperature',
'T_aux': 'auxiliary_power_supply_temperature',
'T_back': 'ftm_backpanel_temperature',
'T_eth': 'ethernet_temperature',
}
transforms = {'timestamp': fact_mjd_to_datetime}
ignored_columns = ['QoS', ]
[docs]class FTMTriggerRates(AuxService):
basename = 'FTM_CONTROL_TRIGGER_RATES'
renames = {
'Time': 'timestamp',
'FTMtimeStamp': 'ftm_timestamp',
'OnTimeCounter': 'effective_ontime',
'TriggerCounter': 'trigger_counter',
'TriggerRate': 'trigger_rate',
'BoardRate': 'board_rate',
'PatchRate': 'patch_rate',
'OnTime': 'ontime',
'ElapsedTime': 'elapsed_time',
}
transforms = {
'timestamp': fact_mjd_to_datetime,
'ftm_timestamp': lambda x: x/1e6,
'effective_ontime': lambda x: x/1e6,
}
ignored_columns = ['QoS', ]
[docs]class BiasVoltage(AuxService):
basename = "BIAS_CONTROL_VOLTAGE"
renames = {
'Time': 'timestamp',
'Uout': 'bias_voltage',
}
transforms = {
'timestamp': fact_mjd_to_datetime,
}
ignored_columns = ['QoS', ]
[docs]class FADTemperature(AuxService):
basename = "FAD_CONTROL_TEMPERATURE"
renames = {
'Time': 'timestamp',
'cnt': 'count',
'temp': 'temperature',
}
transforms = {
'timestamp': fact_mjd_to_datetime,
}
ignored_columns = ['QoS', ]