ready to merge

This commit is contained in:
Benoît Sierro
2021-10-12 13:18:32 +02:00
parent 31fb519e88
commit 3f2a56d703
8 changed files with 37 additions and 17 deletions

View File

@@ -13,7 +13,7 @@ from .plotting import (
get_extent,
)
from .spectra import Spectrum, SimulationSeries
from ._utils import Paths, open_config, parameter
from ._utils import Paths, _open_config, parameter, open_single_config
from ._utils.parameter import Configuration, Parameters
from ._utils.utils import PlotRange
from ._utils.legacy import convert_sim_folder

View File

@@ -103,12 +103,12 @@ def conform_toml_path(path: os.PathLike) -> str:
def open_single_config(path: os.PathLike) -> dict[str, Any]:
d = open_config(path)
d = _open_config(path)
f = d.pop("Fiber")[0]
return d | f
def open_config(path: os.PathLike):
def _open_config(path: os.PathLike):
"""returns a dictionary parsed from the specified toml file
This also handle having a 'INCLUDE' argument that will fill
otherwise unspecified keys with what's in the INCLUDE file(s)"""
@@ -170,7 +170,7 @@ def load_config_sequence(path: os.PathLike) -> tuple[Path, list[dict[str, Any]]]
Parameters
----------
path : os.PathLike
path to the config toml file
path to the config toml file or a directory containing config files
Returns
-------
@@ -180,9 +180,15 @@ def load_config_sequence(path: os.PathLike) -> tuple[Path, list[dict[str, Any]]]
one config per fiber
"""
loaded_config = open_config(path)
path = Path(path)
fiber_list: list[dict[str, Any]]
if path.name.lower().endswith(".toml"):
loaded_config = _open_config(path)
fiber_list = loaded_config.pop("Fiber")
else:
loaded_config = dict(name=path.name)
fiber_list = [_open_config(p) for p in sorted(path.glob("initial_config*.toml"))]
fiber_list: list[dict[str, Any]] = loaded_config.pop("Fiber")
if len(fiber_list) == 0:
raise ValueError(f"No fiber in config {path}")
final_path = loaded_config.get("name")

View File

@@ -1,3 +1,4 @@
from genericpath import exists
import os
import sys
from pathlib import Path
@@ -28,11 +29,13 @@ def load_config_sequence(path: os.PathLike) -> tuple[list[Path], list[dict[str,
def convert_sim_folder(path: os.PathLike):
path = Path(path).resolve()
new_root = path.parent / "sc_legagy_converter" / path.name
os.makedirs(new_root, exist_ok=True)
config_paths, configs = load_config_sequence(path)
master_config = dict(name=path.name, Fiber=configs)
with open(path / "initial_config.toml", "w") as f:
with open(new_root / "initial_config.toml", "w") as f:
toml.dump(master_config, f, encoder=toml.TomlNumpyEncoder())
configuration = Configuration(path / "initial_config.toml", final_output_path=path)
configuration = Configuration(path, final_output_path=new_root)
pbar = PBars(configuration.total_num_steps, "Converting")
new_paths: dict[VariationDescriptor, Parameters] = dict(configuration)

View File

@@ -480,7 +480,7 @@ class Parameters(_AbstractParameters):
@classmethod
def load(cls, path: os.PathLike) -> "Parameters":
return cls(**utils.open_config(path))
return cls(**utils._open_config(path))
@classmethod
def load_and_compute(cls, path: os.PathLike) -> "Parameters":
@@ -1011,7 +1011,7 @@ class Configuration:
num = utils.find_last_spectrum_num(data_dir)
if config_dict is None:
try:
config_dict = utils.open_config(data_dir / PARAM_FN)
config_dict = utils._open_config(data_dir / PARAM_FN)
except FileNotFoundError:
self.logger.warning(f"did not find {PARAM_FN!r} in {data_dir}")
return self.State.ABSENT, 0

View File

@@ -10,8 +10,7 @@ from scipy.optimize import minimize_scalar
from .. import math
from . import fiber, materials, units, pulse
from .. import _utils
from .._utils import cache
from .._utils import cache, load_material_dico
T = TypeVar("T")
@@ -62,7 +61,7 @@ def material_dispersion(
)
return disp
else:
material_dico = utils.load_material_dico(material)
material_dico = load_material_dico(material)
if ideal:
n_gas_2 = materials.sellmeier(wavelengths, material_dico, pressure, temperature) + 1
else:

View File

@@ -810,7 +810,8 @@ def find_lobe_limits(x_axis, values, debug="", already_sorted=True):
)
ax.legend()
fig.savefig(out_path, bbox_inches="tight")
plt.close()
if fig is not None:
plt.close(fig)
else:
good_roots, left_lim, right_lim = _select_roots(d_spline, d_roots, dd_roots, fwhm_pos)

View File

@@ -219,6 +219,17 @@ class RK4IP:
return self.stored_spectra
def irun(self) -> Generator[tuple[int, int, np.ndarray], None, None]:
"""run the simulation as a generator obj
Yields
-------
int
current simulation step
int
current number of spectra returned
np.ndarray
spectrum
"""
# Print introduction
self.logger.debug(

View File

@@ -12,7 +12,7 @@ from ..const import PARAM_FN, PARAM_SEPARATOR
from ..physics import fiber, units
from ..plotting import plot_setup
from ..spectra import SimulationSeries
from .._utils import auto_crop, open_config, save_toml, translate_parameters
from .._utils import auto_crop, _open_config, save_toml, translate_parameters
from .._utils.parameter import (
Configuration,
Parameters,
@@ -258,7 +258,7 @@ def finish_plot(fig, legend_axes, all_labels, params):
def plot_helper(config_path: Path) -> Iterable[tuple[dict, list[str], Parameters]]:
cc = cycler(color=[f"C{i}" for i in range(10)]) * cycler(ls=["-", "--"])
pseq = Configuration(open_config(config_path))
pseq = Configuration(_open_config(config_path))
for style, (variables, params) in zip(cc, pseq):
lbl = [pretty_format_value(name, value) for name, value in variables[1:-1]]
yield style, lbl, params
@@ -267,7 +267,7 @@ def plot_helper(config_path: Path) -> Iterable[tuple[dict, list[str], Parameters
def convert_params(params_file: os.PathLike):
p = Path(params_file)
if p.name == PARAM_FN:
d = open_config(params_file)
d = _open_config(params_file)
d = translate_parameters(d)
save_toml(params_file, d)
print(f"converted {p}")