diff --git a/src/scgenerator/spectra.py b/src/scgenerator/spectra.py index 2ddfe5f..b301189 100644 --- a/src/scgenerator/spectra.py +++ b/src/scgenerator/spectra.py @@ -158,6 +158,9 @@ class SimulationSeries: raise FileNotFoundError(f"No simulation in {path}") self.fibers = [SimulatedFiber(self.path)] while (p := self.fibers[-1].params.prev_data_dir) is not None: + p = Path(p) + if not p.is_absolute(): + p = Path(self.fibers[-1].params.output_path) / p self.fibers.append(SimulatedFiber(p)) self.fibers = self.fibers[::-1] @@ -353,6 +356,7 @@ class SimulatedFiber: def __init__(self, path: os.PathLike): self.path = Path(path) self.params = Parameters(**translate_parameters(load_toml(self.path / PARAM_FN))) + self.params.output_path = str(self.path.resolve()) self.t = self.params.t self.w = self.params.w self.z = self.params.z_targets diff --git a/src/scgenerator/utils.py b/src/scgenerator/utils.py index 0cb5951..0b3067e 100644 --- a/src/scgenerator/utils.py +++ b/src/scgenerator/utils.py @@ -21,7 +21,7 @@ import pkg_resources as pkg import tomli import tomli_w -from .const import PARAM_FN, PARAM_SEPARATOR, SPEC1_FN, SPECN_FN1, Z_FN, ROOT_PARAMETERS +from .const import PARAM_FN, PARAM_SEPARATOR, SPEC1_FN, Z_FN, ROOT_PARAMETERS from .logger import get_logger from .errors import DuplicateParameterError @@ -489,7 +489,7 @@ def update_params(new_path: Path, file: Path): params = load_toml(file) if (p := params.get("prev_data_dir")) is not None: p = Path(p) - params["prev_data_dir"] = str(p.parent / update_path_name(p.name)) + params["prev_data_dir"] = str(Path("../..") / p.parent.name / update_path_name(p.name)) params["output_path"] = str(new_path) save_toml(new_path / PARAM_FN, params) file.unlink()