Source code for dispel.providers.sensorlog.data

"""Data models used for the SensorLog data."""
from typing import List, Optional, Union

from dispel.data.raw import (
    RawDataSetDefinition,
    RawDataSetSource,
    RawDataValueDefinition,
    SensorType,
)


[docs] class SensorLogSensorType(SensorType): """Types of sensors available from SensorLog json files.""" ACCELEROMETER = "accelerometer" ACTIVITY = "activity" ALTIMETER = "altimeter" BATTERY = "battery" CORE_LOCATION = "location" DECIBELS = "decibels" DEVICE_MOTION = "motion" DEVICE_MOTION_MAGNETIC_FIELD = "motion-magnetic-field" DEVICE_MOTION_QUATERNION = "motion-quaternion" DEVICE_MOTION_ROTATION_RATE = "motion-rotation-rate" DEVICE_MOTION_USER_ACCELERATION = "motion-user-acceleration" DEVICE_MOTION_GRAVITY = "motion-gravity" GYRO = "gyro" HEADING = "heading" MAGNETOMETER = "magnetometer" ORIENTATION = "orientation"
DEFAULT_RAW_DATA_SET_SOURCE = RawDataSetSource("SensorLog") LOGGING_TIME_VALUE_DEFINITION = RawDataValueDefinition( "loggingTime", "Timestamp", data_type="datetime64", is_index=True )
[docs] def create_sensor_raw_data_value_definitions( sensor: str, measure: str, axes: Union[str, List[str]], units: Union[str, List[Optional[str]], None] = None, timestamp_reference: str = "sinceReboot", timestamp_unit: Optional[str] = "seconds", timestamp_data_type: str = "timedelta64[s]", ) -> List[RawDataValueDefinition]: """Create the definitions for raw data values.""" definitions = [ RawDataValueDefinition( f"{sensor}Timestamp_{timestamp_reference}", "Timestamp", timestamp_unit, is_index=True, data_type=timestamp_data_type, ) ] if units is None or isinstance(units, str): units = [units] * len(axes) for axis, unit in zip(axes, units): definitions.append( RawDataValueDefinition( f"{sensor}{measure}{axis}", f"{measure or sensor} {axis}", unit ) ) return definitions
DATA_SET_DEFINITIONS = [ RawDataSetDefinition( SensorLogSensorType.ACCELEROMETER, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "accelerometer", "Acceleration", "XYZ", "G" ), ), RawDataSetDefinition( SensorLogSensorType.ACTIVITY, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "activity", "Activity", ["Confidence", "StartDate"] ) + [RawDataValueDefinition("activity", "Activity")], is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.ALTIMETER, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "altimeter", "", ["Pressure", "RelativeAltitude", "Reset"], ["kPA", "m", None], ), ), RawDataSetDefinition( SensorLogSensorType.BATTERY, DEFAULT_RAW_DATA_SET_SOURCE, [ LOGGING_TIME_VALUE_DEFINITION, RawDataValueDefinition("batteryLevel", "Battery Level"), RawDataValueDefinition("batteryState", "Battery State"), ], ), RawDataSetDefinition( SensorLogSensorType.CORE_LOCATION, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "location", "", [ "Latitude", "Longitude", "Altitude", "Speed", "Course", "Floor", "HorizontalAccuracy", "VerticalAccuracy", "MagneticHeading", "TrueHeading", ], timestamp_reference="since1970", timestamp_unit=None, timestamp_data_type="datetime64[s]", ), ), RawDataSetDefinition( SensorLogSensorType.DECIBELS, DEFAULT_RAW_DATA_SET_SOURCE, [ LOGGING_TIME_VALUE_DEFINITION, RawDataValueDefinition( "avAudioRecorderAveragePower", "Average Decibels", "dB" ), RawDataValueDefinition("avAudioRecorderPeakPower", "Peak Decibels", "dB"), ], ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "motion", "", [ "Pitch", "Roll", "Yaw", ], "rad", ), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION_MAGNETIC_FIELD, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "motion", "MagneticField", ["X", "Y", "Z", "CalibrationAccuracy"] ), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION_QUATERNION, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("motion", "Quaternion", "WXYZ"), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION_ROTATION_RATE, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("motion", "RotationRate", "XYZ"), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION_USER_ACCELERATION, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("motion", "UserAcceleration", "XYZ"), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.DEVICE_MOTION_GRAVITY, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("motion", "Gravity", "XYZ"), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.GYRO, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("gyro", "Rotation", "XYZ", "rad/sec"), ), RawDataSetDefinition( SensorLogSensorType.HEADING, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions( "location", "Heading", ["X", "Y", "Z", "Accuracy"], timestamp_reference="since1970", timestamp_unit=None, timestamp_data_type="datetime64[s]", ), is_computed=True, ), RawDataSetDefinition( SensorLogSensorType.MAGNETOMETER, DEFAULT_RAW_DATA_SET_SOURCE, create_sensor_raw_data_value_definitions("magnetometer", "", "XYZ", "µT"), ), RawDataSetDefinition( SensorLogSensorType.ORIENTATION, DEFAULT_RAW_DATA_SET_SOURCE, [ LOGGING_TIME_VALUE_DEFINITION, RawDataValueDefinition("deviceOrientation", "Orientation"), ], ), ] DATA_SET_DEFINITIONS_DICT = {d.id: d for d in DATA_SET_DEFINITIONS}