Skip to content

Commit 39094ee

Browse files
committed
refac: renamed timewindow to time_window across the package. renamed qa tests to e2e
1 parent e618f5d commit 39094ee

14 files changed

+72
-72
lines changed

floatcsep/experiment.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ class Experiment:
5252
- growth (:class:`str`): `incremental` or `cumulative`
5353
- offset (:class:`float`): recurrence of forecast creation.
5454
55-
For further details, see :func:`~floatcsep.utils.timewindows_ti`
56-
and :func:`~floatcsep.utils.timewindows_td`
55+
For further details, see :func:`~floatcsep.utils.time_windows_ti`
56+
and :func:`~floatcsep.utils.time_windows_td`
5757
5858
region_config (dict): Contains all the spatial and magnitude
5959
specifications. It must contain the following keys:
@@ -143,7 +143,7 @@ def __init__(
143143
log.info(f"Setting up experiment {self.name}:")
144144
log.info(f"\tStart: {self.start_date}")
145145
log.info(f"\tEnd: {self.end_date}")
146-
log.info(f"\tTime windows: {len(self.timewindows)}")
146+
log.info(f"\tTime windows: {len(self.time_windows)}")
147147
log.info(f"\tRegion: {self.region.name if self.region else None}")
148148
log.info(
149149
f"\tMagnitude range: [{numpy.min(self.magnitudes)},"
@@ -295,7 +295,7 @@ def stage_models(self) -> None:
295295
"""
296296
log.info("Staging models")
297297
for i in self.models:
298-
i.stage(self.timewindows)
298+
i.stage(self.time_windows)
299299
self.registry.add_forecast_registry(i)
300300

301301
def set_tests(self, test_config: Union[str, Dict, List]) -> list:
@@ -376,17 +376,17 @@ def set_tasks(self) -> None:
376376
"""
377377

378378
# Set the file path structure
379-
self.registry.build_tree(self.timewindows, self.models, self.tests)
379+
self.registry.build_tree(self.time_windows, self.models, self.tests)
380380

381381
log.debug("Pre-run forecast summary")
382-
self.registry.log_forecast_trees(self.timewindows)
382+
self.registry.log_forecast_trees(self.time_windows)
383383
log.debug("Pre-run result summary")
384384
self.registry.log_results_tree()
385385

386386
log.info("Setting up experiment's tasks")
387387

388388
# Get the time windows strings
389-
tw_strings = timewindow2str(self.timewindows)
389+
tw_strings = timewindow2str(self.time_windows)
390390

391391
# Prepare the testing catalogs
392392
task_graph = TaskGraph()
@@ -481,7 +481,7 @@ def set_tasks(self) -> None:
481481
)
482482
# Set up the Sequential_Comparative Scores
483483
elif test_k.type == "sequential_comparative":
484-
tw_strs = timewindow2str(self.timewindows)
484+
tw_strs = timewindow2str(self.time_windows)
485485
for model_j in self.models:
486486
task_k = Task(
487487
instance=test_k,
@@ -504,7 +504,7 @@ def set_tasks(self) -> None:
504504
)
505505
# Set up the Batch comparative Scores
506506
elif test_k.type == "batch":
507-
time_str = timewindow2str(self.timewindows[-1])
507+
time_str = timewindow2str(self.time_windows[-1])
508508
for model_j in self.models:
509509
task_k = Task(
510510
instance=test_k,
@@ -540,7 +540,7 @@ def run(self) -> None:
540540
self.task_graph.run()
541541
log.info("Calculation completed")
542542
log.debug("Post-run forecast registry")
543-
self.registry.log_forecast_trees(self.timewindows)
543+
self.registry.log_forecast_trees(self.time_windows)
544544
log.debug("Post-run result summary")
545545
self.registry.log_results_tree()
546546

@@ -604,7 +604,7 @@ def as_dict(self, extra: Sequence = (), extended=False) -> dict:
604604
"time_config": {
605605
i: j
606606
for i, j in self.time_config.items()
607-
if (i not in ("timewindows",) or extended)
607+
if (i not in ("time_windows",) or extended)
608608
},
609609
"region_config": {
610610
i: j
@@ -731,7 +731,7 @@ def test_stat(test_orig, test_repr):
731731

732732
def get_results(self):
733733

734-
win_orig = timewindow2str(self.original.timewindows)
734+
win_orig = timewindow2str(self.original.time_windows)
735735

736736
tests_orig = self.original.tests
737737

@@ -787,7 +787,7 @@ def get_hash(filename):
787787

788788
def get_filecomp(self):
789789

790-
win_orig = timewindow2str(self.original.timewindows)
790+
win_orig = timewindow2str(self.original.time_windows)
791791

792792
tests_orig = self.original.tests
793793

floatcsep/infrastructure/registries.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -395,12 +395,12 @@ def get_forecast_registry(self, model_name: str) -> None:
395395
"""
396396
return self.forecast_registries.get(model_name)
397397

398-
def log_forecast_trees(self, timewindows: list) -> None:
398+
def log_forecast_trees(self, time_windows: list) -> None:
399399
"""
400400
Logs the forecasts for all models managed by this ExperimentRegistry.
401401
"""
402402
log.debug("===================")
403-
log.debug(f" Total Time Windows: {len(timewindows)}")
403+
log.debug(f" Total Time Windows: {len(time_windows)}")
404404
for model_name, registry in self.forecast_registries.items():
405405
log.debug(f" Model: {model_name}")
406406
registry.log_tree()

floatcsep/infrastructure/repositories.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,8 @@ def catalog(self) -> CSEPCatalog:
381381
if isfile(self.cat_path):
382382
return CSEPCatalog.load_json(self.cat_path)
383383
bounds = {
384-
"start_time": min([item for sublist in self.timewindows for item in sublist]),
385-
"end_time": max([item for sublist in self.timewindows for item in sublist]),
384+
"start_time": min([item for sublist in self.time_windows for item in sublist]),
385+
"end_time": max([item for sublist in self.time_windows for item in sublist]),
386386
"min_magnitude": self.magnitudes.min(),
387387
"max_depth": self.depths.max(),
388388
}

floatcsep/model.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def __init__(
6060
self.__dict__.update(**kwargs)
6161

6262
@abstractmethod
63-
def stage(self, timewindows=None) -> None:
63+
def stage(self, time_windows=None) -> None:
6464
"""Prepares the stage for a model run."""
6565
pass
6666

@@ -215,13 +215,13 @@ def __init__(self, name: str, model_path: str, forecast_unit=1, store_db=False,
215215
self.registry, model_class=self.__class__.__name__, **kwargs
216216
)
217217

218-
def stage(self, timewindows: Sequence[Sequence[datetime]] = None) -> None:
218+
def stage(self, time_windows: Sequence[Sequence[datetime]] = None) -> None:
219219
"""
220220
Acquire the forecast data if it is not in the file system. Sets the paths internally
221221
(or database pointers) to the forecast data.
222222
223223
Args:
224-
timewindows (list): time_windows that the forecast data represents.
224+
time_windows (list): time_windows that the forecast data represents.
225225
"""
226226

227227
if self.force_stage or not self.registry.file_exists("path"):
@@ -231,7 +231,7 @@ def stage(self, timewindows: Sequence[Sequence[datetime]] = None) -> None:
231231
if self.store_db:
232232
self.init_db()
233233

234-
self.registry.build_tree(time_windows=timewindows, model_class=self.__class__.__name__)
234+
self.registry.build_tree(time_windows=time_windows, model_class=self.__class__.__name__)
235235

236236
def init_db(self, dbpath: str = "", force: bool = False) -> None:
237237
"""
@@ -333,7 +333,7 @@ def __init__(
333333
self.build, self.name, self.registry.abs(model_path)
334334
)
335335

336-
def stage(self, timewindows=None) -> None:
336+
def stage(self, time_windows=None) -> None:
337337
"""
338338
Core method to interface a model with the experiment.
339339
@@ -351,7 +351,7 @@ def stage(self, timewindows=None) -> None:
351351
self.environment.create_environment(force=self.force_build)
352352

353353
self.registry.build_tree(
354-
time_windows=timewindows,
354+
time_windows=time_windows,
355355
model_class=self.__class__.__name__,
356356
prefix=self.__dict__.get("prefix", self.name),
357357
args_file=self.__dict__.get("args_file", None),

floatcsep/postprocess/plot_handler.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ def plot_results(experiment: "Experiment") -> None:
2727
2828
"""
2929
log.info("Plotting evaluation results")
30-
timewindows = timewindow2str(experiment.timewindows)
30+
time_windows = timewindow2str(experiment.time_windows)
3131

3232
for test in experiment.tests:
33-
test.plot_results(timewindows, experiment.models, experiment.registry)
33+
test.plot_results(time_windows, experiment.models, experiment.registry)
3434

3535

3636
def plot_forecasts(experiment: "Experiment") -> None:
@@ -76,9 +76,9 @@ def plot_forecasts(experiment: "Experiment") -> None:
7676

7777
# Get the time windows to be plotted. Defaults to only the last time window.
7878
time_windows = (
79-
timewindow2str(experiment.timewindows)
79+
timewindow2str(experiment.time_windows)
8080
if plot_forecast_config.get("all_time_windows")
81-
else [timewindow2str(experiment.timewindows[-1])]
81+
else [timewindow2str(experiment.time_windows[-1])]
8282
)
8383

8484
# Get the projection of the plots
@@ -177,7 +177,7 @@ def plot_catalogs(experiment: "Experiment") -> None:
177177

178178
# If selected, plot the test catalogs for each of the time windows
179179
if plot_catalog_config.get("all_time_windows"):
180-
for tw in experiment.timewindows:
180+
for tw in experiment.time_windows:
181181
test_catalog = experiment.catalog_repo.get_test_cat(timewindow2str(tw))
182182

183183
if test_catalog.get_number_of_events() != 0:

floatcsep/postprocess/reporting.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def generate_report(experiment, timewindow=-1):
3535
custom_report(report_function, experiment)
3636
return
3737

38-
timewindow = experiment.timewindows[timewindow]
38+
timewindow = experiment.time_windows[timewindow]
3939
timestr = timewindow2str(timewindow)
4040

4141
log.info(f"Saving report into {experiment.registry.run_dir}")

floatcsep/utils/helpers.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,14 @@ def read_time_cfg(time_config, **kwargs):
158158
if "offset" in time_config.keys():
159159
time_config["offset"] = parse_timedelta_string(time_config["offset"])
160160

161-
if not time_config.get("timewindows"):
161+
if not time_config.get("time_windows"):
162162
if experiment_class == "ti":
163-
time_config["timewindows"] = timewindows_ti(**time_config)
163+
time_config["time_windows"] = time_windows_ti(**time_config)
164164
elif experiment_class == "td":
165-
time_config["timewindows"] = timewindows_td(**time_config)
165+
time_config["time_windows"] = time_windows_td(**time_config)
166166
else:
167-
time_config["start_date"] = time_config["timewindows"][0][0]
168-
time_config["end_date"] = time_config["timewindows"][-1][-1]
167+
time_config["start_date"] = time_config["time_windows"][0][0]
168+
time_config["end_date"] = time_config["time_windows"][-1][-1]
169169

170170
return time_config
171171

@@ -242,7 +242,7 @@ def timewindow2str(datetimes: Sequence) -> Union[str, list[str]]:
242242
single timewindow or a list of time windows.
243243
244244
Args:
245-
datetimes: A sequence (of sequences) of datetimes, representing a list of timewindows
245+
datetimes: A sequence (of sequences) of datetimes, representing a list of time_windows
246246
247247
Returns:
248248
A sequence of strings for each time window
@@ -279,7 +279,7 @@ def str2timewindow(
279279
return datetimes
280280

281281

282-
def timewindows_ti(
282+
def time_windows_ti(
283283
start_date=None, end_date=None, intervals=None, horizon=None, growth="incremental", **_
284284
):
285285
"""
@@ -336,7 +336,7 @@ def timewindows_ti(
336336
return [(timelimits[0], i) for i in timelimits[1:]]
337337

338338

339-
def timewindows_td(
339+
def time_windows_td(
340340
start_date=None, end_date=None, timeintervals=None, timehorizon=None, timeoffset=None, **_
341341
):
342342
"""
File renamed without changes.

tests/integration/test_model_infrastructure.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ def setUp(self):
3535
)
3636

3737
def test_time_independent_model_stage(self):
38-
timewindows = [
38+
time_windows = [
3939
[datetime(2023, 1, 1), datetime(2023, 1, 2)],
4040
]
41-
self.time_independent_model.stage(timewindows=timewindows)
41+
self.time_independent_model.stage(time_windows=time_windows)
4242
print("a", self.time_independent_model.registry.as_dict())
4343
self.assertIn("2023-01-01_2023-01-02", self.time_independent_model.registry.forecasts)
4444

@@ -50,10 +50,10 @@ def test_time_independent_model_get_forecast(self):
5050

5151
def test_time_independent_model_get_forecast_real(self):
5252
tstring = "2023-01-01_2023-01-02"
53-
timewindows = [
53+
time_windows = [
5454
[datetime(2023, 1, 1), datetime(2023, 1, 2)],
5555
]
56-
self.time_independent_model.stage(timewindows=timewindows)
56+
self.time_independent_model.stage(time_windows=time_windows)
5757
forecast = self.time_independent_model.get_forecast(tstring)
5858
self.assertIsInstance(forecast, GriddedForecast)
5959
self.assertAlmostEqual(forecast.data[0, 0], 0.002739726027357392) # 1 / 365 days
@@ -63,12 +63,12 @@ def test_time_independent_model_get_forecast_real(self):
6363
def test_time_dependent_model_stage(self, mock_venv, mock_conda):
6464
mock_venv.return_value = None
6565
mock_conda.return_value = None
66-
timewindows = [
66+
time_windows = [
6767
[datetime(2020, 1, 1), datetime(2020, 1, 2)],
6868
[datetime(2020, 1, 2), datetime(2020, 1, 3)],
6969
]
7070
tstrings = ["2020-01-01_2020-01-02", "2020-01-02_2020-01-03"]
71-
self.time_dependent_model.stage(timewindows=timewindows)
71+
self.time_dependent_model.stage(time_windows=time_windows)
7272

7373
self.assertIn(tstrings[0], self.time_dependent_model.registry.forecasts)
7474
self.assertIn(tstrings[1], self.time_dependent_model.registry.forecasts)
@@ -78,11 +78,11 @@ def test_time_dependent_model_stage(self, mock_venv, mock_conda):
7878
def test_time_dependent_model_get_forecast(self, mock_venv, mock_conda):
7979
mock_venv.return_value = None
8080
mock_conda.return_value = None
81-
timewindows = [
81+
time_windows = [
8282
[datetime(2020, 1, 1), datetime(2020, 1, 2)],
8383
[datetime(2020, 1, 2), datetime(2020, 1, 3)],
8484
]
85-
self.time_dependent_model.stage(timewindows)
85+
self.time_dependent_model.stage(time_windows)
8686
tstring = "2020-01-01_2020-01-02"
8787
forecast = self.time_dependent_model.get_forecast(tstring)
8888
self.assertIsNotNone(forecast)

tests/unit/test_experiment.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ def assertEqualExperiment(self, exp_a, exp_b):
4141
self.assertEqual(exp_a.registry.workdir, os.getcwd())
4242
self.assertEqual(exp_a.registry.workdir, exp_b.registry.workdir)
4343
self.assertEqual(exp_a.start_date, exp_b.start_date)
44-
print(exp_a.timewindows, exp_b.timewindows)
45-
self.assertEqual(exp_a.timewindows, exp_b.timewindows)
44+
print(exp_a.time_windows, exp_b.time_windows)
45+
self.assertEqual(exp_a.time_windows, exp_b.time_windows)
4646
self.assertEqual(exp_a.exp_class, exp_b.exp_class)
4747
self.assertEqual(exp_a.region, exp_b.region)
4848
numpy.testing.assert_equal(exp_a.magnitudes, exp_b.magnitudes)

tests/unit/test_model.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ def test_init(self):
224224
def test_stage(self, mk):
225225
self.model.force_stage = True # Force staging to occur
226226

227-
self.model.stage(timewindows=["2020-01-01_2020-12-31"])
227+
self.model.stage(time_windows=["2020-01-01_2020-12-31"])
228228

229229
self.mock_get_source.assert_called_once_with(
230230
self.model.zenodo_id, self.model.giturl, branch=self.model.repo_hash

tests/unit/test_plot_handler.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def test_plot_results(self, mock_timewindow2str, mock_savefig):
1515

1616
plot_handler.plot_results(mock_experiment)
1717

18-
mock_timewindow2str.assert_called_once_with(mock_experiment.timewindows)
18+
mock_timewindow2str.assert_called_once_with(mock_experiment.time_windows)
1919
mock_test.plot_results.assert_called_once_with(
2020
["2021-01-01", "2021-12-31"], mock_experiment.models, mock_experiment.registry
2121
)

tests/unit/test_registry.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ def test_file_exists(self, mock_exists):
6767
@patch("os.makedirs")
6868
@patch("os.listdir")
6969
def test_build_tree_time_independent(self, mock_listdir, mock_makedirs):
70-
timewindows = [[datetime(2023, 1, 1), datetime(2023, 1, 2)]]
70+
time_windows = [[datetime(2023, 1, 1), datetime(2023, 1, 2)]]
7171
self.registry_for_filebased_model.build_tree(
72-
time_windows=timewindows, model_class="TimeIndependentModel"
72+
time_windows=time_windows, model_class="TimeIndependentModel"
7373
)
7474
self.assertIn("2023-01-01_2023-01-02", self.registry_for_filebased_model.forecasts)
7575
# self.assertIn("2023-01-01_2023-01-02", self.registry_for_filebased_model.inventory)
@@ -78,12 +78,12 @@ def test_build_tree_time_independent(self, mock_listdir, mock_makedirs):
7878
@patch("os.listdir")
7979
def test_build_tree_time_dependent(self, mock_listdir, mock_makedirs):
8080
mock_listdir.return_value = ["forecast_1.csv"]
81-
timewindows = [
81+
time_windows = [
8282
[datetime(2023, 1, 1), datetime(2023, 1, 2)],
8383
[datetime(2023, 1, 2), datetime(2023, 1, 3)],
8484
]
8585
self.registry_for_folderbased_model.build_tree(
86-
time_windows=timewindows, model_class="TimeDependentModel", prefix="forecast"
86+
time_windows=time_windows, model_class="TimeDependentModel", prefix="forecast"
8787
)
8888
self.assertIn("2023-01-01_2023-01-02", self.registry_for_folderbased_model.forecasts)
8989
# self.assertTrue(self.registry_for_folderbased_model.inventory["2023-01-01_2023-01-02"])

0 commit comments

Comments
 (0)