es_sfgtools.modeling.garpos_tools.schemas module
- class es_sfgtools.modeling.garpos_tools.schemas.GPATDOffset(*, forward: float, rightward: float, downward: float)
Bases:
BaseModel- downward: float
- forward: float
- get_offset() List[float]
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'downward': FieldInfo(annotation=float, required=True), 'forward': FieldInfo(annotation=float, required=True), 'rightward': FieldInfo(annotation=float, 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.
- rightward: float
- class es_sfgtools.modeling.garpos_tools.schemas.GPPositionENU(*, east: float | None = 0, north: float | None = 0, up: float | None = 0, east_sigma: float | None = 0, north_sigma: float | None = 0, up_sigma: float | None = 0, cov_nu: float | None = 0, cov_ue: float | None = 0, cov_en: float | None = 0)
Bases:
BaseModel- cov_en: float | None
- cov_nu: float | None
- cov_ue: float | None
- east: float | None
- east_sigma: float | None
- get_covariance() ndarray
- get_position() List[float]
- get_std_dev() List[float]
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'cov_en': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'cov_nu': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'cov_ue': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'east': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'east_sigma': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'north': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'north_sigma': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'up': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'up_sigma': FieldInfo(annotation=Union[float, NoneType], required=False, default=0)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- north: float | None
- north_sigma: float | None
- up: float | None
- up_sigma: float | None
- class es_sfgtools.modeling.garpos_tools.schemas.GPPositionLLH(*, latitude: float, longitude: float, height: float | None = 0)
Bases:
BaseModel- height: float | None
- latitude: float
- longitude: float
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'height': FieldInfo(annotation=Union[float, NoneType], required=False, default=0), 'latitude': FieldInfo(annotation=float, required=True), 'longitude': FieldInfo(annotation=float, 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.
- class es_sfgtools.modeling.garpos_tools.schemas.GPTransponder(*, position_llh: GPPositionLLH | None = None, position_enu: GPPositionENU | None = None, tat_offset: float | None = None, name: str | None = None, id: str | None = None, delta_center_position: GPPositionENU | None = None)
Bases:
BaseModel- delta_center_position: GPPositionENU | None
- id: str | None
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'delta_center_position': FieldInfo(annotation=Union[GPPositionENU, NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, alias=AliasChoices(choices=['id', 'address']), alias_priority=2), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'position_enu': FieldInfo(annotation=Union[GPPositionENU, NoneType], required=False, default=None), 'position_llh': FieldInfo(annotation=Union[GPPositionLLH, NoneType], required=False, default=None), 'tat_offset': FieldInfo(annotation=Union[float, NoneType], required=False, default=None)}
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 | None
- position_enu: GPPositionENU | None
- position_llh: GPPositionLLH | None
- tat_offset: float | None
- class es_sfgtools.modeling.garpos_tools.schemas.GarposFixed(*, lib_directory: str = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/es-sfgtools/conda/readme/lib/python3.11/site-packages/garpos/garpos_v102/f90lib'), lib_raytrace: str = 'lib_raytrace.so', inversion_params: ~es_sfgtools.modeling.garpos_tools.schemas.InversionParams = InversionParams(spline_degree=3, log_lambda=[0], log_gradlambda=-1, mu_t=[0.0], mu_mt=[0.5], knotint0=5, knotint1=0, knotint2=0, rejectcriteria=2, inversiontype=<InversionType.positions: 0>, positionalOffset=[0.0, 0.0, 0.0], traveltimescale=0.0001, maxloop=50, convcriteria=0.005, deltap=1e-06, deltab=1e-06, delta_center_position=GPPositionENU(east=0, north=0, up=0, east_sigma=1.0, north_sigma=1.0, up_sigma=1.0, cov_nu=0, cov_ue=0, cov_en=0)))
Bases:
BaseModel- classmethod from_datafile(path: Path) GarposFixed
- inversion_params: InversionParams
- lib_directory: str
- lib_raytrace: str
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'inversion_params': FieldInfo(annotation=InversionParams, required=False, default=InversionParams(spline_degree=3, log_lambda=[0], log_gradlambda=-1, mu_t=[0.0], mu_mt=[0.5], knotint0=5, knotint1=0, knotint2=0, rejectcriteria=2, inversiontype=<InversionType.positions: 0>, positionalOffset=[0.0, 0.0, 0.0], traveltimescale=0.0001, maxloop=50, convcriteria=0.005, deltap=1e-06, deltab=1e-06, delta_center_position=GPPositionENU(east=0, north=0, up=0, east_sigma=1.0, north_sigma=1.0, up_sigma=1.0, cov_nu=0, cov_ue=0, cov_en=0))), 'lib_directory': FieldInfo(annotation=str, required=False, default=PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/es-sfgtools/conda/readme/lib/python3.11/site-packages/garpos/garpos_v102/f90lib')), 'lib_raytrace': FieldInfo(annotation=str, required=False, default='lib_raytrace.so')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class es_sfgtools.modeling.garpos_tools.schemas.GarposInput(*, site_name: str, campaign_id: str, survey_id: str, site_center_llh: GPPositionLLH, array_center_enu: GPPositionENU, transponders: List[GPTransponder], sound_speed_data: Path | str | None, atd_offset: GPATDOffset, start_date: datetime, end_date: datetime, shot_data: Path | str | None, delta_center_position: GPPositionENU = GPPositionENU(east=0, north=0, up=0, east_sigma=0, north_sigma=0, up_sigma=0, cov_nu=0, cov_ue=0, cov_en=0), ref_frame: str = 'ITRF', n_shot: int)
Bases:
BaseModel- array_center_enu: GPPositionENU
- atd_offset: GPATDOffset
- campaign_id: str
- delta_center_position: GPPositionENU
- dt_to_str(value)
- end_date: datetime
- classmethod from_datafile(path: Path, survey_id: str = None) GarposInput
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'array_center_enu': FieldInfo(annotation=GPPositionENU, required=True), 'atd_offset': FieldInfo(annotation=GPATDOffset, required=True), 'campaign_id': FieldInfo(annotation=str, required=True), 'delta_center_position': FieldInfo(annotation=GPPositionENU, required=False, default=GPPositionENU(east=0, north=0, up=0, east_sigma=0, north_sigma=0, up_sigma=0, cov_nu=0, cov_ue=0, cov_en=0)), 'end_date': FieldInfo(annotation=datetime, required=True), 'n_shot': FieldInfo(annotation=int, required=True), 'ref_frame': FieldInfo(annotation=str, required=False, default='ITRF'), 'shot_data': FieldInfo(annotation=Union[Path, str, NoneType], required=True), 'site_center_llh': FieldInfo(annotation=GPPositionLLH, required=True), 'site_name': FieldInfo(annotation=str, required=True), 'sound_speed_data': FieldInfo(annotation=Union[Path, str, NoneType], required=True), 'start_date': FieldInfo(annotation=datetime, required=True), 'survey_id': FieldInfo(annotation=str, required=True), 'transponders': FieldInfo(annotation=List[GPTransponder], 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.
- n_shot: int
- path_to_str(value)
- ref_frame: str
- shot_data: Path | str | None
- site_center_llh: GPPositionLLH
- site_name: str
- sound_speed_data: Path | str | None
- start_date: datetime
- survey_id: str
- to_datafile(path: Path) None
Write a GarposInput to a datafile
- Parameters:
garpos_input (GarposInput) – The GarposInput object
path (Path) – The path to the datafile
- Returns:
None
- transponders: List[GPTransponder]
- class es_sfgtools.modeling.garpos_tools.schemas.GarposObservationOutput(*args, **kwargs)
Bases:
DataFrameModel- class Config
Bases:
object- add_missing_columns = True
- coerce = True
- name = 'GarposObservationOutput'
- LogResidual: Series[float] = 'LogResidual'
- MT: Series[str] = 'MT'
- RT: Series[float] = 'RT'
- ResiRange: Series[float] = 'ResiRange'
- ResiTT: Series[float] = 'ResiTT'
- ST: Series[float] = 'ST'
- TT: Series[float] = 'TT'
- TakeOff: Series[float] = 'TakeOff'
- dV: Series[float] = 'dV'
- dVO: Series[float] = 'dVO'
- flag: Series[bool] = 'flag'
- gamma: Series[float] = 'gamma'
- gradV1e: Series[float] = 'gradV1e'
- gradV1n: Series[float] = 'gradV1n'
- gradV2e: Series[float] = 'gradV2e'
- gradV2n: Series[float] = 'gradV2n'
- head1: Series[float] = 'head1'
- class es_sfgtools.modeling.garpos_tools.schemas.InversionLoop(*, iteration: int, rms_tt: float, used_shot_percentage: float, reject: int, max_dx: float, hgt: float, inv_type: InversionType)
Bases:
BaseModel- hgt: float
- inv_type: InversionType
- iteration: int
- max_dx: float
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'hgt': FieldInfo(annotation=float, required=True), 'inv_type': FieldInfo(annotation=InversionType, required=True), 'iteration': FieldInfo(annotation=int, required=True), 'max_dx': FieldInfo(annotation=float, required=True), 'reject': FieldInfo(annotation=int, required=True), 'rms_tt': FieldInfo(annotation=float, required=True), 'used_shot_percentage': FieldInfo(annotation=float, 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.
- reject: int
- rms_tt: float
- used_shot_percentage: float
- class es_sfgtools.modeling.garpos_tools.schemas.InversionParams(*, spline_degree: int = 3, log_lambda: List[float] = [0], log_gradlambda: float = -1, mu_t: List[float] = [0.0], mu_mt: List[float] = [0.5], knotint0: int = 5, knotint1: int = 0, knotint2: int = 0, rejectcriteria: float = 2, inversiontype: InversionType = InversionType.positions, positionalOffset: List[float] | None = [0.0, 0.0, 0.0], traveltimescale: float = 0.0001, maxloop: int = 50, convcriteria: float = 0.005, deltap: float = 1e-06, deltab: float = 1e-06, delta_center_position: GPPositionENU = GPPositionENU(east=0, north=0, up=0, east_sigma=1.0, north_sigma=1.0, up_sigma=1.0, cov_nu=0, cov_ue=0, cov_en=0))
Bases:
BaseModel- convcriteria: float
- delta_center_position: GPPositionENU
- deltab: float
- deltap: float
- inversiontype: InversionType
- knotint0: int
- knotint1: int
- knotint2: int
- log_gradlambda: float
- log_lambda: List[float]
- maxloop: int
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'coerce': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'convcriteria': FieldInfo(annotation=float, required=False, default=0.005, description='Convergence criteria for model parameters'), 'delta_center_position': FieldInfo(annotation=GPPositionENU, required=False, default=GPPositionENU(east=0, north=0, up=0, east_sigma=1.0, north_sigma=1.0, up_sigma=1.0, cov_nu=0, cov_ue=0, cov_en=0), description='Delta center position'), 'deltab': FieldInfo(annotation=float, required=False, default=1e-06, description='Infinitesimal values to make Jacobian matrix'), 'deltap': FieldInfo(annotation=float, required=False, default=1e-06, description='Infinitesimal values to make Jacobian matrix'), 'inversiontype': FieldInfo(annotation=InversionType, required=False, default=<InversionType.positions: 0>, description='Inversion type'), 'knotint0': FieldInfo(annotation=int, required=False, default=5, description="Typical Knot interval (in min.) for gamma's component (a0, a1, a2)"), 'knotint1': FieldInfo(annotation=int, required=False, default=0, description="Typical Knot interval (in min.) for gamma's component (a0, a1, a2)"), 'knotint2': FieldInfo(annotation=int, required=False, default=0, description="Typical Knot interval (in min.) for gamma's component (a0, a1, a2)"), 'log_gradlambda': FieldInfo(annotation=float, required=False, default=-1, description='Smoothness paramter for spatial gradient'), 'log_lambda': FieldInfo(annotation=List[float], required=False, default=[0], description='Smoothness parameter for backgroun perturbation'), 'maxloop': FieldInfo(annotation=int, required=False, default=50, description='Maximum loop for iteration'), 'mu_mt': FieldInfo(annotation=List[float], required=False, default=[0.5], description='Data correlation coefficient b/w the different transponders'), 'mu_t': FieldInfo(annotation=List[float], required=False, default=[0.0], description='Correlation length of data for transmit time [minute]'), 'positionalOffset': FieldInfo(annotation=Union[List[float], NoneType], required=False, default=[0.0, 0.0, 0.0], description='Positional offset for the inversion'), 'rejectcriteria': FieldInfo(annotation=float, required=False, default=2, description='Criteria for the rejection of data (+/- rsig * Sigma)'), 'spline_degree': FieldInfo(annotation=int, required=False, default=3), 'traveltimescale': FieldInfo(annotation=float, required=False, default=0.0001, description='Typical measurement error for travel time (= 1.e-4 sec is recommended in 10 kHz carrier)')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- mu_mt: List[float]
- mu_t: List[float]
- positionalOffset: List[float] | None
- rejectcriteria: float
- show_params() None
- spline_degree: int
- traveltimescale: float
- classmethod validate(values)
- class es_sfgtools.modeling.garpos_tools.schemas.InversionResults(*, ABIC: float, misfit: float, inv_type: InversionType, lambda_0_squared: float, grad_lambda_squared: float, mu_t: float, mu_mt: float, delta_center_position: List[float], loop_data: List[InversionLoop])
Bases:
BaseModel- ABIC: float
- delta_center_position: List[float]
- classmethod from_dat_file(file_path: str) InversionResults
Parse the inversion results from a .dat file
- Parameters:
file_path (str) – Path to the .dat file
- Returns:
Inversion results
- Return type:
InversionResults (obj)
- grad_lambda_squared: float
- inv_type: InversionType
- lambda_0_squared: float
- loop_data: List[InversionLoop]
- misfit: float
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'ABIC': FieldInfo(annotation=float, required=True), 'delta_center_position': FieldInfo(annotation=List[float], required=True), 'grad_lambda_squared': FieldInfo(annotation=float, required=True), 'inv_type': FieldInfo(annotation=InversionType, required=True), 'lambda_0_squared': FieldInfo(annotation=float, required=True), 'loop_data': FieldInfo(annotation=List[InversionLoop], required=True), 'misfit': FieldInfo(annotation=float, required=True), 'mu_mt': FieldInfo(annotation=float, required=True), 'mu_t': FieldInfo(annotation=float, 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.
- mu_mt: float
- mu_t: float
- class es_sfgtools.modeling.garpos_tools.schemas.InversionType(value)
Bases:
Enum- both = 2
- gammas = 1
- positions = 0
- class es_sfgtools.modeling.garpos_tools.schemas.ObservationData(*args, **kwargs)
Bases:
DataFrameModelObservation data file schema
Example data:
,SET,LN,MT,TT,ResiTT,TakeOff,gamma,flag,ST,ant_e0,ant_n0,ant_u0,head0,pitch0,roll0,RT,ant_e1,ant_n1,ant_u1,head1,pitch1,roll1 0,S01,L01,M11,2.289306,0.0,0.0,0.0,False,30072.395125,-27.85291,1473.14423,14.73469,176.47,0.59,-1.39,30075.74594,-26.70998,1462.01803,14.32703,177.07,-0.5,-1.1 1,S01,L01,M13,3.12669,0.0,0.0,0.0,False,30092.395725,-22.08296,1412.88729,14.59827,188.24,0.41,-2.13,30096.58392,-22.3514,1401.77938,14.65401,190.61,-0.1,-2.14 2,S01,L01,M14,2.702555,0.0,0.0,0.0,False,30093.48579,-22.25377,1409.87685,14.67772,188.93,0.15,-1.7,30097.24985,-22.38458,1399.96509,14.55534,190.82,-0.39,-2.21 3,S01,L01,M14,2.68107,0.0,0.0,0.0,False,30102.396135,-23.25514,1387.38992,14.75355,192.39,0.1,-1.79,30106.13871,-23.96613,1378.4627,14.58135,192.92,0.21,-1.7 4,S01,L01,M11,2.218846,0.0,0.0,0.0,False,30103.4862,-23.57701,1384.73242,14.65861,192.62,-0.14,-1.5,30106.766555,-24.0478,1377.09283,14.68464,193.04,0.59,-1.81
- LN: Series[str] = 'LN'
- MT: Series[str] = 'MT'
- RT: Series[float] = 'RT'
- ResiTT: Series[float] | None = 'ResiTT'
- SET: Series[str] = 'SET'
- ST: Series[float] = 'ST'
- TT: Series[float] = 'TT'
- TakeOff: Series[float] | None = 'TakeOff'
- ant_e0: Series[float] = 'ant_e0'
- ant_e1: Series[float] = 'ant_e1'
- ant_n0: Series[float] = 'ant_n0'
- ant_n1: Series[float] = 'ant_n1'
- ant_u0: Series[float] = 'ant_u0'
- ant_u1: Series[float] = 'ant_u1'
- flag: Series[bool] = 'flag'
- gamma: Series[float] = 'gamma'
- head0: Series[float] = 'head0'
- head1: Series[float] = 'head1'
- latitude: Series[float] | None = 'lat'
- longitude: Series[float] | None = 'lon'
- pitch0: Series[float] = 'pitch0'
- pitch1: Series[float] = 'pitch1'
- roll0: Series[float] = 'roll0'
- roll1: Series[float] = 'roll1'