Skip to content

Commit f500893

Browse files
committed
Pin start date and pass it to directives
1 parent b38bf2d commit f500893

4 files changed

Lines changed: 20 additions & 10 deletions

File tree

simpeg_drivers/components/factories/directives_factory.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def save_iteration_log_files(self):
245245
""""""
246246
if self._save_iteration_log_files is None and self.driver.logger:
247247
self._save_iteration_log_files = directives.SaveLogFilesGeoH5(
248-
self.driver.out_group,
248+
self.driver.out_group, self.driver.logger.start_date_time
249249
)
250250
return self._save_iteration_log_files
251251

@@ -285,7 +285,8 @@ def scale_misfits(self):
285285
):
286286
nested_tiles = self.driver.get_nested_tiles()
287287
self._scale_misfits = directives.ScaleMisfitMultipliers(
288-
self.params.geoh5.h5file.parent,
288+
self.params.geoh5.h5file.parent
289+
/ f"ChiFactors_{self.driver.logger.start_date_time}.log",
289290
nested_tiles,
290291
target_chi=self.params.cooling_schedule.chi_factor,
291292
)

simpeg_drivers/driver.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ def logger(self) -> InversionLogger | None:
440440
@logger.setter
441441
def logger(self, value: InversionLogger | None | bool):
442442
if value is True or value is None:
443-
self._logger = InversionLogger("SimPEG.log", self)
443+
self._logger = InversionLogger(self)
444444
elif value is False:
445445
self._logger = None
446446
elif isinstance(value, logging.Logger):
@@ -897,17 +897,19 @@ class InversionLogger:
897897
Logger for the inversion process.
898898
"""
899899

900-
def __init__(self, logfile, driver):
900+
def __init__(self, driver):
901901
self.driver = driver
902902
self.terminal = sys.stdout
903-
self.logfile = self.get_path(logfile)
903+
904904
self.initial_time = time()
905+
self.start_date_time = datetime.now().strftime("%Y%m%d_%Hh%Mm%Ss")
906+
self.logfile = self.get_path(f"SimPEG_{self.start_date_time}.log")
905907

906908
def start(self):
907-
date_time = datetime.now().strftime("%b-%d-%Y:%H:%M:%S")
909+
908910
self.write(
909911
f"Running simpeg-drivers {__version__}\n"
910-
f"Started {date_time}\n"
912+
f"Started {self.start_date_time}\n"
911913
f"{self.driver.params.title}\n"
912914
)
913915

tests/run_tests/driver_grav_test.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,9 @@ def test_gravity_run(
164164
assert driver.directives.directive_list[0].chifact_start == 0.75
165165
assert driver.directives.directive_list[0].chifact_target == 0.75
166166

167-
with open(workpath.parent / "SimPEG.log", encoding="utf8") as file:
167+
with open(
168+
workpath.parent / f"SimPEG_{driver.logger.start_date_time}.log", encoding="utf8"
169+
) as file:
168170
content = file.read()
169171
assert "Target Misfit: 3.00e+00 (3 data with chifact = 1.0)" in content
170172
assert "IRLS Start Misfit: 3.00e+00 (3 data with chifact = 1.0)" in content
@@ -190,7 +192,12 @@ def test_gravity_run(
190192
)
191193
output["data"] = orig_gz
192194

193-
assert len(run_ws.get_entity("SimPEG.log")) == 2
195+
assert (
196+
len(run_ws.get_entity(f"SimPEG_{driver.logger.start_date_time}.log")) == 1
197+
)
198+
assert (
199+
len(run_ws.get_entity(f"SimPEG_{driver.logger.start_date_time}.out")) == 1
200+
)
194201

195202
if pytest:
196203
check_target(output, target_run)

tests/utils/targets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def get_inversion_output(h5file: str | Workspace, inversion_group: str | UUID):
3434
f"BaseInversion group {inversion_group} could not be found in the target geoh5 {h5file}"
3535
) from exc
3636

37-
outfile = group.get_entity("SimPEG.out")[0]
37+
outfile = next(file for file in group.children if ".out" in file.name)
3838
out = list(outfile.file_bytes.decode("utf-8").replace("\r", "").split("\n"))[:-1]
3939
cols = out.pop(0).split(" ")
4040
out = [[string_to_numeric(k) for k in elem.split(" ")] for elem in out]

0 commit comments

Comments
 (0)