es_sfgtools.data_models.community_standards module

This module defines data schemas that conform to the GNSS-A Community Data Standard, as described at https://hal.science/hal-04319233.

It provides Pydantic and Pandera models for representing seafloor acoustic data and site metadata in a standardized format.

class es_sfgtools.data_models.community_standards.SFGDSTFSeafloorAcousticData(*args, **kwargs)

Bases: DataFrameModel

Pandera model for seafloor acoustic data, as defined by the Seafloor Geodesy Data Standardization Task Force (SFGDSTF).

class Config

Bases: BaseConfig

name: str | None = 'SFGDSTFSeafloorAcousticData'

name of schema

MT_ID: Series[str] = 'MT_ID'
TDC_ID: Series[str] | None = 'TDC_ID'
T_receive: Series[float] = 'T_receive'
T_transmit: Series[float] = 'T_transmit'
TravelTime: Series[float] = 'TravelTime'
X_receive: Series[float] = 'X_receive'
X_transmit: Series[float] = 'X_transmit'
Y_receive: Series[float] = 'Y_receive'
Y_transmit: Series[float] = 'Y_transmit'
Z_receive: Series[float] = 'Z_receive'
Z_transmit: Series[float] = 'Z_transmit'
aSNR: Series[float] | None = 'aSNR'
acc: Series[int] | None = 'acc'
ant_X0: Series[float] | None = 'ant_X0'
ant_X1: Series[float] | None = 'ant_X1'
ant_Y0: Series[float] | None = 'ant_Y0'
ant_Y1: Series[float] | None = 'ant_Y1'
ant_Z0: Series[float] | None = 'ant_Z0'
ant_Z1: Series[float] | None = 'ant_Z1'
ant_cov_XY0: Series[float] | None = 'ant_cov_XY0'
ant_sigX0: Series[float] | None = 'ant_sigX0'
ant_sigX1: Series[float] | None = 'ant_sigX1'
ant_sigY0: Series[float] | None = 'ant_sigY0'
ant_sigY1: Series[float] | None = 'ant_sigY1'
ant_sigZ0: Series[float] | None = 'ant_sigZ0'
ant_sigZ1: Series[float] | None = 'ant_sigZ1'
dbV: Series[float] | None = 'dbV'
doa_H: Series[float] | None = 'doa_H'
doa_P: Series[float] | None = 'doa_P'
doa_R: Series[float] | None = 'doa_R'
heading0: Series[float] | None = 'heading0'
pitch0: Series[float] | None = 'pitch0'
quality_flag: Series[str] | None = 'quality_flag'
roll0: Series[float] | None = 'roll0'
roll1: Series[float] | None = 'roll1'
trans_sigX0: Series[float] | None = 'trans_sigX0'
trans_sigX1: Series[float] | None = 'trans_sigX1'
trans_sigY0: Series[float] | None = 'trans_sigY0'
trans_sigY1: Series[float] | None = 'trans_sigY1'
trans_sigZ0: Series[float] | None = 'trans_sigZ0'
trans_sigZ1: Series[float] | None = 'trans_sigZ1'
class es_sfgtools.data_models.community_standards.SFGDTSFSite(*, Site_name: str, Campaign: str, TimeOrigin: datetime, RefFrame: str = 'ITRF', MTlist: list[str] = [], MT_appPos: dict[str, list[float]] = {}, ATDoffset: list[float] = [0.0, 0.0, 0.0])

Bases: BaseModel

Pydantic model for site metadata, based on SFGDSTF standards.

ATDoffset: list[float]
Campaign: str
MT_appPos: dict[str, list[float]]
MTlist: list[str]
RefFrame: str
Site_name: str
TimeOrigin: datetime
classmethod from_site_vessel(site: Site, vessel: Vessel, campaign_id: str) SFGDTSFSite

Create a SFGDTSFSite object from internal Site and Vessel objects.

Parameters:
  • site (Site) – The Site object containing site metadata.

  • vessel (Vessel) – The Vessel object containing vessel metadata.

  • campaign_id (str) – The campaign identifier to select the appropriate campaign data.

Notes

This constructor makes several assumptions: - The first name in site.names is the primary site name. - The campaign matching campaign_id is used. - The first reference frame is used. - The first ATD offset from the vessel is used.

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 = {'ATDoffset': FieldInfo(annotation=list[float], required=False, default=[0.0, 0.0, 0.0]), 'Campaign': FieldInfo(annotation=str, required=True), 'MT_appPos': FieldInfo(annotation=dict[str, list[float]], required=False, default={}), 'MTlist': FieldInfo(annotation=list[str], required=False, default=[]), 'RefFrame': FieldInfo(annotation=str, required=False, default='ITRF'), 'Site_name': FieldInfo(annotation=str, required=True), 'TimeOrigin': FieldInfo(annotation=datetime, 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.