es_sfgtools.data_models.metadata.vessel module
- class es_sfgtools.data_models.metadata.vessel.AcousticTransceiver(*, type: str, serialNumber: str, frequency: str, start: Annotated[datetime, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))], triggerDelay: float | None = None, delayIncludedInTWTT: bool | None = None, end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None)
Bases:
AttributeUpdater,BaseModel- delayIncludedInTWTT: bool | None
- end: datetime | None
- frequency: str
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'delayIncludedInTWTT': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None, description='Whether the delay is included in the TWTT'), 'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, description='The end date of the transceiver usage', metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'frequency': FieldInfo(annotation=str, required=True, description='The frequency of the transceiver, e.g MF/LMF'), 'serialNumber': FieldInfo(annotation=str, required=True), 'start': FieldInfo(annotation=datetime, required=True, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'triggerDelay': FieldInfo(annotation=Union[float, NoneType], required=False, default=None, description='The trigger delay in seconds'), 'type': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- serialNumber: str
- start: datetime
- triggerDelay: float | None
- type: str
- class es_sfgtools.data_models.metadata.vessel.AcousticTransducer(*, type: str, serialNumber: str, frequency: str, start: Annotated[datetime, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))], end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None)
Bases:
AttributeUpdater,BaseModel- end: datetime | None
- frequency: str
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'frequency': FieldInfo(annotation=str, required=True), 'serialNumber': FieldInfo(annotation=str, required=True), 'start': FieldInfo(annotation=datetime, required=True, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'type': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- serialNumber: str
- start: datetime
- type: str
- class es_sfgtools.data_models.metadata.vessel.AtdOffset(*, serialNumber: str | None = '', x: float, y: float, z: float)
Bases:
AttributeUpdater,BaseModelThe offset of the transducer from the GNSS antenna
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'serialNumber': FieldInfo(annotation=Union[str, NoneType], required=False, default='', description='The transducer serial number associated with the offset'), 'x': FieldInfo(annotation=float, required=True, description='X offset: Relative position of the transducer to the GNSS antenna'), 'y': FieldInfo(annotation=float, required=True, description='Y offset: Relative position of the transducer to the GNSS antenna'), 'z': FieldInfo(annotation=float, required=True, description='Z offset: Relative position of the transducer to the GNSS antenna')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- serialNumber: str | None
- x: float
- y: float
- z: float
- class es_sfgtools.data_models.metadata.vessel.EquipmentType(value)
Bases:
str,Enum- ACOUSTIC_TRANSCEIVER = 'acousticTransceiver'
- ACOUSTIC_TRANSDUCER = 'acousticTransducer'
- ATD_OFFSETS = 'atdOffsets'
- GNSS_ANTENNAS = 'gnssAntennas'
- GNSS_RECEIVERS = 'gnssReceivers'
- IMU_SENSORS = 'imuSensors'
- class es_sfgtools.data_models.metadata.vessel.GnssAntenna(*, type: str, serialNumber: str, start: Annotated[datetime, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))], order: str | None = None, model: str | None = None, radomeSerialNumber: str | None = None, end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None)
Bases:
AttributeUpdater,BaseModel- end: datetime | None
- model: str | None
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'model': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'order': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'radomeSerialNumber': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'serialNumber': FieldInfo(annotation=str, required=True), 'start': FieldInfo(annotation=datetime, required=True, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'type': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- order: str | None
- radomeSerialNumber: str | None
- serialNumber: str
- start: datetime
- type: str
- class es_sfgtools.data_models.metadata.vessel.GnssReceiver(*, type: str, serialNumber: str, start: Annotated[datetime, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))], model: str | None = None, firmwareVersion: str | None = None, end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None)
Bases:
AttributeUpdater,BaseModel- end: datetime | None
- firmwareVersion: str | None
- model: str | None
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'firmwareVersion': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The firmware version of the receiver'), 'model': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The model of the receiver'), 'serialNumber': FieldInfo(annotation=str, required=True), 'start': FieldInfo(annotation=datetime, required=True, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'type': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- serialNumber: str
- start: datetime
- type: str
- class es_sfgtools.data_models.metadata.vessel.ImuSensor(*, type: str, serialNumber: str, start: Annotated[datetime, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))], model: str | None = None, end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None)
Bases:
AttributeUpdater,BaseModel- end: datetime | None
- model: str | None
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'model': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'serialNumber': FieldInfo(annotation=str, required=True), 'start': FieldInfo(annotation=datetime, required=True, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'type': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- serialNumber: str
- start: datetime
- type: str
- class es_sfgtools.data_models.metadata.vessel.Vessel(*, name: str, type: str, model: str, serialNumber: str | None = None, start: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None, end: Annotated[datetime | None, Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))] = None, imuSensors: List[ImuSensor] = None, atdOffsets: List[AtdOffset] = None, gnssAntennas: List[GnssAntenna] = None, gnssReceivers: List[GnssReceiver] = None, acousticTransducers: List[AcousticTransducer] = None, acousticTransceivers: List[AcousticTransceiver] = None)
Bases:
AttributeUpdater,BaseModel- acousticTransceivers: List[AcousticTransceiver]
- acousticTransducers: List[AcousticTransducer]
- classmethod check_required_fields(value)
- end: datetime | None
- equipment_map: ClassVar[Dict[str, Any]] = {EquipmentType.ACOUSTIC_TRANSCEIVER: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.AcousticTransceiver'>), EquipmentType.ACOUSTIC_TRANSDUCER: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.AcousticTransducer'>), EquipmentType.ATD_OFFSETS: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.AtdOffset'>), EquipmentType.GNSS_ANTENNAS: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.GnssAntenna'>), EquipmentType.GNSS_RECEIVERS: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.GnssReceiver'>), EquipmentType.IMU_SENSORS: (<function Vessel.<lambda>>, <class 'es_sfgtools.data_models.metadata.vessel.ImuSensor'>)}
- export_vessel(filepath: str)
Export vessel data to a JSON file.
- Parameters:
filepath (str) – The path to the JSON file.
- classmethod from_json(filepath: str) Vessel
Import vessel data from a JSON file.
- Parameters:
filepath (str) – The path to the JSON file.
- Returns:
The vessel object.
- Return type:
- gnssAntennas: List[GnssAntenna]
- gnssReceivers: List[GnssReceiver]
- model: str
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'acousticTransceivers': FieldInfo(annotation=List[AcousticTransceiver], required=False, default_factory=list), 'acousticTransducers': FieldInfo(annotation=List[AcousticTransducer], required=False, default_factory=list), 'atdOffsets': FieldInfo(annotation=List[AtdOffset], required=False, default_factory=list), 'end': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'gnssAntennas': FieldInfo(annotation=List[GnssAntenna], required=False, default_factory=list), 'gnssReceivers': FieldInfo(annotation=List[GnssReceiver], required=False, default_factory=list), 'imuSensors': FieldInfo(annotation=List[ImuSensor], required=False, default_factory=list), 'model': FieldInfo(annotation=str, required=True, description='The model of the vessel'), 'name': FieldInfo(annotation=str, required=True, description='The 4 digit name of the vessel'), 'serialNumber': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'start': FieldInfo(annotation=Union[datetime, NoneType], required=False, default=None, metadata=[Gt(gt=datetime.datetime(1901, 1, 1, 0, 0))]), 'type': FieldInfo(annotation=str, required=True, description='The type of the vessel. e.g. waveglider')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- name: str
- print_json()
Print the vessel data as a JSON string.
- run_equipment(serial_number: str, equipment_type: EquipmentType, equipment_metadata: dict, add_new: bool = False, update: bool = False, delete: bool = False)
Add, update, or delete a survey vessel equipment.
- Parameters:
serial_number (str) – The serial number of the equipment.
equipment_type (EquipmentType) – The type of the equipment.
equipment_metadata (dict) – The metadata of the equipment.
add_new (bool, optional) – Whether to add a new equipment, by default False.
update (bool, optional) – Whether to update an existing equipment, by default False.
delete (bool, optional) – Whether to delete an existing equipment, by default False.
- serialNumber: str | None
- start: datetime | None
- type: str