Skip to content

Commit

Permalink
Use context manager for netCDF handling
Browse files Browse the repository at this point in the history
  • Loading branch information
siiptuo committed Sep 10, 2024
1 parent e254535 commit 67e97fd
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 32 deletions.
52 changes: 25 additions & 27 deletions rpgpy/nc.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,17 @@ def spectra2nc(
global_attr: Additional global attributes.
"""
f = netCDF4.Dataset(output_file, "w", format="NETCDF4_CLASSIC")
header, data = read_rpg(input_file)
moments = spectra2moments(data, header, fill_value=0, n_points_min=n_points_min)
data = {key: data[key] for key, array in data.items() if array.ndim == 1}
data = {**data, **moments}
metadata = rpgpy.metadata.METADATA
logging.info("Writing compressed netCDF4 file")
_create_dimensions(f, header, level=0)
_write_initial_data(f, header, metadata)
_write_initial_data(f, data, metadata)
_create_global_attributes(f, header, global_attr)
f.close()
with netCDF4.Dataset(output_file, "w", format="NETCDF4_CLASSIC") as f:
header, data = read_rpg(input_file)
moments = spectra2moments(data, header, fill_value=0, n_points_min=n_points_min)
data = {key: data[key] for key, array in data.items() if array.ndim == 1}
data = {**data, **moments}
metadata = rpgpy.metadata.METADATA
logging.info("Writing compressed netCDF4 file")
_create_dimensions(f, header, level=0)
_write_initial_data(f, header, metadata)
_write_initial_data(f, data, metadata)
_create_global_attributes(f, header, global_attr)


def rpg2nc(
Expand All @@ -70,21 +69,20 @@ def rpg2nc(
"""
files, level = _get_rpg_files(path_to_files)
f = netCDF4.Dataset(output_file, "w", format="NETCDF4_CLASSIC")
header, data = read_rpg(files[0])
metadata = rpgpy.metadata.METADATA
metadata = _fix_metadata(metadata, header)
logging.info("Writing compressed netCDF4 file")
_create_dimensions(f, header, level)
_write_initial_data(f, header, metadata)
_write_initial_data(f, data, metadata)
if len(files) > 1:
for file in tqdm(files[1:]):
header, data = read_rpg(file)
_check_header_consistency(f, header)
_append_data(f, data, metadata)
_create_global_attributes(f, header, global_attr)
f.close()
with netCDF4.Dataset(output_file, "w", format="NETCDF4_CLASSIC") as f:
header, data = read_rpg(files[0])
metadata = rpgpy.metadata.METADATA
metadata = _fix_metadata(metadata, header)
logging.info("Writing compressed netCDF4 file")
_create_dimensions(f, header, level)
_write_initial_data(f, header, metadata)
_write_initial_data(f, data, metadata)
if len(files) > 1:
for file in tqdm(files[1:]):
header, data = read_rpg(file)
_check_header_consistency(f, header)
_append_data(f, data, metadata)
_create_global_attributes(f, header, global_attr)
msg = f"Created new file: {output_file}"
logging.info(msg)

Expand Down
9 changes: 4 additions & 5 deletions tests/e2e/level0/l0_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ def _fetch_params(self, params):
self.filename = params["filename"]

def test_global_attributes(self):
nc = netCDF4.Dataset(self.filename)
attrs = ("year", "month", "day", "uuid", "history", "foo")
for attr in attrs:
assert hasattr(nc, attr)
nc.close()
with netCDF4.Dataset(self.filename) as nc:
attrs = ("year", "month", "day", "uuid", "history", "foo")
for attr in attrs:
assert hasattr(nc, attr)

0 comments on commit 67e97fd

Please sign in to comment.