Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cdm_reader_mapper/cdm_mapper/codes/marob/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Common Data Model (CDM) MAROB mapper code tables."""
1 change: 1 addition & 0 deletions cdm_reader_mapper/cdm_mapper/codes/marob/quality_flag.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"256": 4,
"10256": 4,
"384": 0,
"10384": 0
}
24 changes: 19 additions & 5 deletions cdm_reader_mapper/cdm_mapper/mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ def _transform(
) -> pd.Series:
"""Apply a transformation function from imodel_functions to a pandas Series."""
logger.debug(f"Applying transform: {transform}")

if kwargs:
logger.debug(f"With kwargs: {', '.join(kwargs.keys())}")
try:
Expand Down Expand Up @@ -212,11 +213,15 @@ def _fill_value(series, fill_value) -> pd.Series:
def _extract_input_data(idata, elements, default, logger):
"""Extract the relevant input data based on `elements`."""

def _return_default():
return pd.Series(_default(default, len(idata)), index=idata.index), True
def _return_default(bool):
return pd.Series(_default(default, len(idata)), index=idata.index), bool

if not elements:
return _return_default()
if default is None:
bool = False
else:
bool = True
return _return_default(bool)

logger.debug(f"\telements: {' '.join(map(str, elements))}")

Expand All @@ -225,12 +230,12 @@ def _return_default():
for e in elements:
if e not in cols:
logger.warning(f"Missing element from input data: {e}")
return _return_default()
return _return_default(True)

data = idata[elements[0]] if len(elements) == 1 else idata[elements]

if _is_empty(data):
return _return_default()
return _return_default(True)

return data, False

Expand Down Expand Up @@ -532,6 +537,15 @@ def map_model(
DataFrame with MultiIndex columns (cdm_table, column_name).
"""
logger = logging_hdlr.init_logger(__name__, level=log_level)

if imodel is None:
logger.error("Input data model 'imodel' is not defined.")
return

if not isinstance(imodel, str):
logger.error(f"Input data model type is not supported: {type(imodel)}")
return

imodel = imodel.split("_")
if imodel[0] not in get_args(properties.SupportedDataModels):
logger.error("Input data model " f"{imodel[0]}" " not supported")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
"observation_value": {
"sections": "drifter_measurements",
"elements": "ATMS_ADJUSTED",
"transform": "float_scale",
"kwargs": {
"factor": 100
},
"transform": "pressue_hpa_in_pa",
"decimal_places": 0
},
"units": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
},
"observation_value": {
"elements": "PPPP",
"transform": "float_scale",
"kwargs": {
"factor": 100
},
"transform": "pressue_hpa_in_pa",
"decimal_places": 0
},
"units": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
"observation_value": {
"sections": "core",
"elements": "SLP",
"transform": "float_scale",
"kwargs": {
"factor": 100
},
"transform": "pressue_hpa_in_pa",
"decimal_places": 0
},
"units": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
"observation_value": {
"sections": "c99",
"elements": "Pressure",
"transform": "float_scale",
"kwargs": {
"factor": 100
},
"transform": "pressue_hpa_in_pa",
"decimal_places": 0
},
"original_value": {
Expand Down
1 change: 1 addition & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Common Data Model (CDM) MAROB mapping tables."""
106 changes: 106 additions & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/header.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
{
"report_id": {
"elements": "ID",
"transform": "string_add",
"kwargs": {
"separator": "-",
"prepend": "DWD_MAROBSHIP"
}
},
"application_area": {
"default": [
1,
7,
10,
11
]
},
"observing_programme": {
"default": 56
},
"report_type": {
"default": 0
},
"station_type": {
"default": 2
},
"platform_type": {
"default": 2
},
"primary_station_id": {
"elements": "KENNUNG"
},
"station_record_number": {
"default": 1
},
"primary_station_id_scheme": {
"fill_value": 5
},
"longitude": {
"elements": "GEOGR_LAENGE",
"decimal_places": 1
},
"latitude": {
"elements": "GEOGR_BREITE",
"decimal_places": 1
},
"location_quality": {
"default": 3
},
"crs": {
"default": 0
},
"station_speed": {
"elements": "FAHRTGESCHWINDIGKEIT",
"transform": "velocity_kn_in_ms",
"decimal_places": 2
},
"station_course": {
"elements": "FAHRTRICHTUNG",
"decimal_places": 0
},
"height_of_station_above_local_ground": {
"default": 0,
"decimal_places": 1
},
"height_of_station_above_sea_level": {
"elements": "STATIONSHOEHE_MSL",
"fill_value": 0,
"decimal_places": 1
},
"report_meaning_of_timestamp": {
"default": 2
},
"report_timestamp": {
"elements": "MESSZEIT",
"transform": "datetime_marob"
},
"report_duration": {
"default": 15
},
"report_time_accuracy": {
"default": 1,
"decimal_places": 0
},
"report_time_quality": {
"default": 2
},
"report_quality": {
"default": 2
},
"duplicate_status": {
"default": 4
},
"record_timestamp": {
"transform": "datetime_utcnow"
},
"history": {
"transform": "lineage"
},
"source_id": {
"elements": "DATENQUELLE_ID"
},
"source_record_id": {
"elements": "ID"
}
}
35 changes: 35 additions & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/observations-at.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"observation_id": {
"kwargs": {
"append": "AT"
}
},
"observation_height_above_station_surface": {
"elements": "SENSORHOEHE_WAS_TT",
"decimal_places": 1
},
"observed_variable": {
"default": 85
},
"observation_value": {
"elements": "LUFTTEMPERATUR",
"transform": "temperature_celsius_to_kelvin",
"decimal_places": 2
},
"units": {
"default": 5
},
"quality_flag": {
"default": 2
},
"original_units": {
"default": 60
},
"original_value": {
"elements": "LUFTTEMPERATUR",
"decimal_places": 1
},
"conversion_method": {
"default": 1
}
}
35 changes: 35 additions & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/observations-dpt.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"observation_id": {
"kwargs": {
"append": "DPT"
}
},
"observation_height_above_station_surface": {
"elements": "SENSORHOEHE_WAS_TT",
"decimal_places": 1
},
"observed_variable": {
"default": 36
},
"observation_value": {
"elements": "TAUPUNKTTEMPERATUR",
"transform": "temperature_celsius_to_kelvin",
"decimal_places": 2
},
"units": {
"default": 5
},
"quality_flag": {
"default": 2
},
"original_units": {
"default": 60
},
"original_value": {
"elements": "TAUPUNKTTEMPERATUR",
"decimal_places": 1
},
"conversion_method": {
"default": 1
}
}
35 changes: 35 additions & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/observations-slp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"observation_id": {
"kwargs": {
"append": "SLP"
}
},
"observation_height_above_station_surface": {
"elements": "BAROMETERHOEHE_MSL",
"decimal_places": 1
},
"observed_variable": {
"default": 58
},
"observation_value": {
"elements": "LUFTDRUCK_STATIONSHOEHE",
"transform": "pressue_hpa_in_pa",
"decimal_places": 0
},
"units": {
"default": 32
},
"quality_flag": {
"default": 2
},
"original_units": {
"default": 530
},
"original_value": {
"elements": "LUFTDRUCK_STATIONSHOEHE",
"decimal_places": 1
},
"conversion_method": {
"default": 7
}
}
36 changes: 36 additions & 0 deletions cdm_reader_mapper/cdm_mapper/tables/marob/observations-sst.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"observation_id": {
"kwargs": {
"append": "SST"
}
},
"observation_height_above_station_surface": {
"elements": "MESSTIEFE",
"transform": "float_opposite",
"decimal_places": 1
},
"observed_variable": {
"default": 95
},
"observation_value": {
"elements": "WASSERTEMPERATUR",
"transform": "temperature_celsius_to_kelvin",
"decimal_places": 2
},
"units": {
"default": 5
},
"quality_flag": {
"default": 2
},
"original_units": {
"default": 60
},
"original_value": {
"elements": "WASSERTEMPERATUR",
"decimal_places": 1
},
"conversion_method": {
"default": 1
}
}
Loading
Loading