Skip to content

Commit fc8aa59

Browse files
Merge pull request #153 from metno/152-delete-temporary-files-in-finalize
152 delete temporary files in finalize
2 parents a3dc099 + a930eb8 commit fc8aa59

4 files changed

Lines changed: 35 additions & 6 deletions

File tree

bris/outputs/grib.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def __init__(
2525
proj4_str=None,
2626
domain_name=None,
2727
extra_variables=None,
28+
remove_intermediate: bool = True,
2829
):
2930
"""
3031
Args:
@@ -43,6 +44,7 @@ def __init__(
4344
self.intermediate = None
4445
if self.pm.num_members > 1:
4546
self.intermediate = Intermediate(predict_metadata, workdir)
47+
self.remove_intermediate = remove_intermediate
4648

4749
self.variable_list = VariableList(self.extract_variables)
4850

@@ -303,6 +305,9 @@ def finalize(self):
303305
filename = self.get_filename(forecast_reference_time)
304306
self.write(filename, forecast_reference_time, pred)
305307

308+
if self.remove_intermediate:
309+
self.intermediate.cleanup()
310+
306311
def get_lower(self, array):
307312
m = np.min(array)
308313
return np.floor(m / self.interp_res) * self.interp_res

bris/outputs/intermediate.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,19 @@ def num_members(self):
9595
def get_filenames(self):
9696
return glob.glob(f"{self.workdir}/*_*.npy")
9797

98-
def finalize(self):
99-
# clean up files
98+
def cleanup(self):
99+
"""Removes up all intermediate files and removes the workdir. Called in finalize of the main output."""
100+
100101
for _filename in self.get_filenames():
101-
# delete file
102-
pass
102+
try:
103+
os.remove(_filename)
104+
except OSError as e:
105+
print(f"Error during cleanup of {_filename}: {e}")
106+
107+
try:
108+
os.rmdir(self.workdir)
109+
except OSError as e:
110+
print(f"Error removing workdir {self.workdir}: {e}")
111+
112+
def finalize(self):
113+
pass

bris/outputs/netcdf.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ def __init__(
4343
mask_file=None,
4444
mask_field=None,
4545
global_attributes=None,
46+
remove_intermediate=True,
4647
):
4748
"""
4849
Args:
@@ -61,8 +62,12 @@ def __init__(
6162

6263
self.intermediate = None
6364
if self.pm.num_members > 1:
64-
self.intermediate = Intermediate(predict_metadata, workdir, extra_variables)
65-
65+
self.intermediate = Intermediate(
66+
predict_metadata,
67+
workdir,
68+
extra_variables,
69+
)
70+
self.remove_intermediate = remove_intermediate
6671
self.variable_list = VariableList(self.extract_variables)
6772

6873
# Conventions specify the names of variables in the output
@@ -440,6 +445,9 @@ def finalize(self):
440445
]
441446
self.write(filename, lead_times, pred)
442447

448+
if self.remove_intermediate:
449+
self.intermediate.cleanup()
450+
443451
def get_lower(self, array):
444452
m = np.min(array)
445453
return np.floor(m / self.interp_res) * self.interp_res

bris/outputs/verif.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def __init__(
3333
fair_threshold: bool = True,
3434
fair_quantile: bool = True,
3535
fair_crps: bool = True,
36+
remove_intermediate: bool = True,
3637
) -> None:
3738
"""
3839
Args:
@@ -125,6 +126,7 @@ def __init__(
125126
predict_metadata.num_members,
126127
)
127128
self.intermediate = Intermediate(intermediate_pm, workdir)
129+
self.remove_intermediate = remove_intermediate
128130

129131
def _add_forecast(self, times: list, ensemble_member: int, pred: np.array) -> None:
130132
"""Add forecasts to this object. Will be written when .write() is called
@@ -387,6 +389,9 @@ def finalize(self) -> None:
387389
utils.create_directory(self.filename)
388390
self.ds.to_netcdf(self.filename, mode="w", engine="netcdf4")
389391

392+
if self.remove_intermediate:
393+
self.intermediate.cleanup()
394+
390395
def compute_consensus(self, pred) -> np.ndarray:
391396
assert len(pred.shape) == 3, pred.shape
392397

0 commit comments

Comments
 (0)