Skip to content

Commit 1f9d0fa

Browse files
authored
[ODSC-51508] : Fix/forecast v2 for tmp folder (#535)
2 parents 5597644 + 8bf14ba commit 1f9d0fa

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

ads/opctl/operator/lowcode/forecast/model/base_model.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -435,15 +435,24 @@ def _save_report(
435435

436436
if self.spec.output_directory:
437437
output_dir = self.spec.output_directory.url
438+
# set the unique directory path as the requested path by the user
439+
unique_output_dir = output_dir
438440
else:
439-
output_dir = "tmp_fc_operator_result"
441+
output_dir = "results"
442+
443+
# If the directory exists, find the next unique directory name by appending an incrementing suffix
444+
counter = 1
445+
unique_output_dir = f"{output_dir}"
446+
while os.path.exists(unique_output_dir):
447+
unique_output_dir = f"{output_dir}_{counter}"
448+
counter += 1
440449
logger.warn(
441450
"Since the output directory was not specified, the output will be saved to {} directory.".format(
442-
output_dir
451+
unique_output_dir
443452
)
444453
)
445454

446-
if ObjectStorageDetails.is_oci_path(output_dir):
455+
if ObjectStorageDetails.is_oci_path(unique_output_dir):
447456
storage_options = default_signer()
448457
else:
449458
storage_options = dict()
@@ -457,7 +466,7 @@ def _save_report(
457466
dp.save_report(report_sections, report_local_path)
458467
utils.enable_print()
459468

460-
report_path = os.path.join(output_dir, self.spec.report_filename)
469+
report_path = os.path.join(unique_output_dir, self.spec.report_filename)
461470
with open(report_local_path) as f1:
462471
with fsspec.open(
463472
report_path,
@@ -469,7 +478,7 @@ def _save_report(
469478
# forecast csv report
470479
utils._write_data(
471480
data=result_df,
472-
filename=os.path.join(output_dir, self.spec.forecast_filename),
481+
filename=os.path.join(unique_output_dir, self.spec.forecast_filename),
473482
format="csv",
474483
storage_options=storage_options,
475484
)
@@ -479,7 +488,7 @@ def _save_report(
479488
if metrics_df is not None:
480489
utils._write_data(
481490
data=metrics_df.rename_axis("metrics").reset_index(),
482-
filename=os.path.join(output_dir, self.spec.metrics_filename),
491+
filename=os.path.join(unique_output_dir, self.spec.metrics_filename),
483492
format="csv",
484493
storage_options=storage_options,
485494
index=False,
@@ -495,7 +504,7 @@ def _save_report(
495504
utils._write_data(
496505
data=test_metrics_df.rename_axis("metrics").reset_index(),
497506
filename=os.path.join(
498-
output_dir, self.spec.test_metrics_filename
507+
unique_output_dir, self.spec.test_metrics_filename
499508
),
500509
format="csv",
501510
storage_options=storage_options,
@@ -512,7 +521,7 @@ def _save_report(
512521
utils._write_data(
513522
data=self.formatted_global_explanation,
514523
filename=os.path.join(
515-
output_dir, self.spec.global_explanation_filename
524+
unique_output_dir, self.spec.global_explanation_filename
516525
),
517526
format="csv",
518527
storage_options=storage_options,
@@ -527,7 +536,7 @@ def _save_report(
527536
utils._write_data(
528537
data=self.formatted_local_explanation,
529538
filename=os.path.join(
530-
output_dir, self.spec.local_explanation_filename
539+
unique_output_dir, self.spec.local_explanation_filename
531540
),
532541
format="csv",
533542
storage_options=storage_options,
@@ -546,7 +555,7 @@ def _save_report(
546555
# model params
547556
utils._write_data(
548557
data=pd.DataFrame.from_dict(self.model_parameters),
549-
filename=os.path.join(output_dir, "model_params.json"),
558+
filename=os.path.join(unique_output_dir, "model_params.json"),
550559
format="json",
551560
storage_options=storage_options,
552561
index=True,
@@ -555,17 +564,17 @@ def _save_report(
555564

556565
# model pickle
557566
if self.spec.generate_model_pickle:
558-
self._save_model(output_dir, storage_options)
567+
self._save_model(unique_output_dir, storage_options)
559568

560569
logger.info(
561570
f"The outputs have been successfully "
562-
f"generated and placed into the directory: {output_dir}."
571+
f"generated and placed into the directory: {unique_output_dir}."
563572
)
564573
if self.errors_dict:
565574
utils._write_data(
566575
data=pd.DataFrame(self.errors_dict.items(), columns=["model", "error"]),
567576
filename=os.path.join(
568-
output_dir, self.spec.errors_dict_filename
577+
unique_output_dir, self.spec.errors_dict_filename
569578
),
570579
format="csv",
571580
storage_options=storage_options,

0 commit comments

Comments
 (0)