Skip to content

Commit 896efae

Browse files
committed
Address Copilot review: fix AttributeError, assert→RuntimeError, print→logger, typo
- StaticRecommendationExperiment: initialize preproc_rec_params in all __init__ paths to prevent AttributeError in evaluate() - Replace assert statements with RuntimeError for interp_results checks (asserts are stripped with python -O) - Replace print() calls with logger.info() in stochastic_benchmark.py - Fix typo: overriden → overridden
1 parent 07039fb commit 896efae

2 files changed

Lines changed: 17 additions & 15 deletions

File tree

src/experiments.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Experiment:
6060

6161
def evaluate(self):
6262
raise NotImplementedError(
63-
"Evaluate should be overriden by a subclass of Experiment"
63+
"Evaluate should be overridden by a subclass of Experiment"
6464
)
6565

6666
def evaluate_monotone(self):
@@ -483,9 +483,12 @@ def __init__(self, parent_params, init_from):
483483
self.rec_params = init_from.recipe
484484
if init_from.postprocess is not None:
485485
self.preproc_rec_params = init_from.preproc_recipe.copy()
486+
else:
487+
self.preproc_rec_params = init_from.recipe.copy()
486488

487489
elif type(init_from) == pd.DataFrame:
488490
self.rec_params = init_from
491+
self.preproc_rec_params = init_from.copy()
489492
else:
490493
warn_str = (
491494
"init_from type is not supported. No recommended parameters are set."

src/stochastic_benchmark.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ def run_Bootstrap(self, bsParams_iter, group_name_fcn=None):
271271
logger.info("Bootstrapped results is already populated: doing nothing.")
272272
return
273273

274-
print("Loading and bootstrapping experimental data...")
274+
logger.info("Loading and bootstrapping experimental data...")
275275
if self.reduce_mem:
276276
self.raw_data = glob.glob(os.path.join(self.here.raw_data, "*.pkl"))
277277

@@ -394,7 +394,7 @@ def run_Interpolate(self, iParams):
394394
"Ensure Bootstrap() or initBootstrap() has been called successfully."
395395
)
396396

397-
print("Interpolating results across resource budgets...")
397+
logger.info("Interpolating results across resource budgets...")
398398
if self.reduce_mem:
399399
logger.info("Interpolating results with parameters: %s", iParams)
400400
if not isinstance(self.bs_results, list):
@@ -414,7 +414,8 @@ def run_Interpolate(self, iParams):
414414
self.bs_results, iParams, self.parameter_names + self.instance_cols
415415
)
416416

417-
assert self.interp_results is not None, "Interpolation failed to produce results"
417+
if self.interp_results is None:
418+
raise RuntimeError("Interpolation failed to produce results")
418419

419420
base = names.param2filename({"Key": self.response_key}, "")
420421
CIlower = names.param2filename(
@@ -436,14 +437,15 @@ def run_Stats(self, stat_params, train_test_split=0.5):
436437
"Interpolated results needs to be populated before computing stats."
437438
)
438439

439-
print("Computing training/testing statistics...")
440+
logger.info("Computing training/testing statistics...")
440441
if "train" not in self.interp_results.columns:
441442
self.interp_results = training.split_train_test(
442443
self.interp_results, self.instance_cols, train_test_split
443444
)
444445
self.interp_results.to_pickle(self.here.interpolate)
445446

446-
assert self.interp_results is not None, "interp_results was unexpectedly None"
447+
if self.interp_results is None:
448+
raise RuntimeError("interp_results was unexpectedly None")
447449

448450
if self.training_stats is None:
449451
if os.path.exists(self.here.training_stats) and self.recover:
@@ -566,7 +568,8 @@ def populate_interp_results(self):
566568
self.parameter_names + self.instance_cols,
567569
)
568570

569-
assert self.interp_results is not None, "Interpolation failed to produce results"
571+
if self.interp_results is None:
572+
raise RuntimeError("Interpolation failed to produce results")
570573

571574
base = names.param2filename({"Key": self.response_key}, "")
572575
CIlower = names.param2filename(
@@ -640,8 +643,7 @@ def run_baseline(self):
640643
"""
641644
Adds virtual best baseline
642645
"""
643-
print("Computing virtual best baseline...")
644-
logger.info("Runnng baseline")
646+
logger.info("Computing virtual best baseline...")
645647
self.baseline = VirtualBestBaseline(self.get_experiment_parameters())
646648

647649
def run_ProjectionExperiment(
@@ -664,8 +666,7 @@ def run_ProjectionExperiment(
664666
ProjectionExperiment
665667
Experiment object
666668
"""
667-
print(f" ├─ Running ProjectionExperiment from {project_from}...")
668-
logger.info("Running projection experiment")
669+
logger.info("Running ProjectionExperiment from %s...", project_from)
669670
self.experiments.append(
670671
ProjectionExperiment(self.get_experiment_parameters(), project_from, postprocess, postprocess_name)
671672
)
@@ -676,8 +677,7 @@ def run_RandomSearchExperiment(
676677
"""
677678
Runs random search experiments
678679
"""
679-
print(" ├─ Running RandomSearchExperiment...")
680-
logger.info("Running random search experiment")
680+
logger.info("Running RandomSearchExperiment...")
681681
self.experiments.append(
682682
RandomSearchExperiment(
683683
self.get_experiment_parameters(),
@@ -710,8 +710,7 @@ def run_SequentialSearchExperiment(
710710
Experiment object
711711
"""
712712
id_label = f" ({id_name})" if id_name else ""
713-
print(f" ├─ Running SequentialSearchExperiment{id_label}...")
714-
logger.info("Running sequential search experiment")
713+
logger.info("Running SequentialSearchExperiment%s...", id_label)
715714
self.experiments.append(
716715
SequentialSearchExperiment(
717716
self.get_experiment_parameters(),

0 commit comments

Comments
 (0)