Skip to content

Commit

Permalink
omb: accept dataframe
Browse files Browse the repository at this point in the history
  • Loading branch information
gauteh committed Dec 4, 2024
1 parent ed5e14a commit cd69e6d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 23 deletions.
32 changes: 17 additions & 15 deletions trajan/readers/omb.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,15 @@ def append_dict_with_entry(dict_in: dict, parsed_entry: ParsedIridiumMessage):
dict_in[parsed_entry.device_from]["T"] = []
dict_in[parsed_entry.device_from][parsed_entry.kind].append(parsed_entry)

EXPECTED_COLUMNS = [
'Date Time (UTC)', 'Device', 'Direction', 'Payload', 'Approx Lat/Lng',
'Payload (Text)', 'Length (Bytes)', 'Credits'
]

def read_omb_csv(path_in: Path,
def read_omb_csv(path_in: Path|pd.DataFrame,
dict_instruments_params: dict = None,
modified_wave_packet_properties: dict = None) -> xr.Dataset:
logger.debug("read path to pandas")
logger.debug(f"reading {path_in}..")

if modified_wave_packet_properties is None:
nbr_bins_waves = _BD_YWAVE_NBR_BINS
Expand All @@ -76,21 +80,19 @@ def read_omb_csv(path_in: Path,
########################################
# generic pandas read to be able to open from a variety of files

omb_dataframe = pd.read_csv(path_in)

########################################
# check this is actually a Rock7 data file
if isinstance(path_in, pd.DataFrame):
omb_dataframe = path_in
else:
omb_dataframe = pd.read_csv(path_in)
########################################
# check this is actually a Rock7 data file

columns = omb_dataframe.columns.to_list()
expected_columns = [
'Date Time (UTC)', 'Device', 'Direction', 'Payload', 'Approx Lat/Lng',
'Payload (Text)', 'Length (Bytes)', 'Credits'
]
columns = omb_dataframe.columns.to_list()

if not set(expected_columns).issubset(set(columns)):
raise RuntimeError(
f"does not look like a Rock7 file; got colmns {columns}, expected {expected_columns}, missing: {set(expected_columns) - set(columns)}"
)
if not set(EXPECTED_COLUMNS).issubset(set(columns)):
raise RuntimeError(
f"does not look like a Rock7 file; got colmns {columns}, expected {EXPECTED_COLUMNS}, missing: {set(EXPECTED_COLUMNS) - set(columns)}"
)

########################################
# decode
Expand Down
17 changes: 9 additions & 8 deletions trajan/traj.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,27 +361,28 @@ def assign_cf_attrs(self,
'long_name': 'trajectory name'
}


ds = ds.assign_attrs({
'Conventions':
'CF-1.10',
'featureType':
'trajectory',
'geospatial_lat_min':
np.nanmin(self.tlat),
np.nanmin(self.tlat) if self.ds.sizes[self.obs_dim] > 0 else np.nan,
'geospatial_lat_max':
np.nanmax(self.tlat),
np.nanmax(self.tlat) if self.ds.sizes[self.obs_dim] > 0 else np.nan,
'geospatial_lon_min':
np.nanmin(self.tlon),
np.nanmin(self.tlon) if self.ds.sizes[self.obs_dim] > 0 else np.nan,
'geospatial_lon_max':
np.nanmax(self.tlon),
np.nanmax(self.tlon) if self.ds.sizes[self.obs_dim] > 0 else np.nan,
'time_coverage_start':
pd.to_datetime(
np.nanmin(ds['time'].values[ds['time'].values != np.datetime64(
'NaT')])).isoformat(),
np.nanmin(ds[self.time_varname].values[ds[self.time_varname].values != np.datetime64(
'NaT')])).isoformat() if self.ds.sizes[self.obs_dim] > 0 else np.nan,
'time_coverage_end':
pd.to_datetime(
np.nanmax(ds['time'].values[ds['time'].values != np.datetime64(
'NaT')])).isoformat(),
np.nanmax(ds[self.time_varname].values[ds[self.time_varname].values != np.datetime64(
'NaT')])).isoformat() if self.ds.sizes[self.obs_dim] > 0 else np.nan,
})

if creator_name:
Expand Down

0 comments on commit cd69e6d

Please sign in to comment.