Files
scgenerator/play.py
2021-09-02 10:53:28 +02:00

48 lines
1.6 KiB
Python

from typing import Any, Generator
import scgenerator as sc
import itertools
import numpy as np
class DataPather:
def __init__(self, dl: list[dict[str, Any]]):
self.dict_list = dl
self.n = len(self.dict_list)
self.final_list = list(self.dico_iterator(self.n))
def dico_iterator(self, index: int) -> Generator[list[list[tuple[str, Any]]], None, None]:
d_tem_list = [el for d in self.dict_list[: index + 1] for el in d.items()]
dict_pos = np.cumsum([0] + [len(d) for d in self.dict_list[: index + 1]])
ranges = [range(len(l)) for _, l in d_tem_list]
for r in itertools.product(*ranges):
flat = [(d_tem_list[i][0], d_tem_list[i][1][j]) for i, j in enumerate(r)]
out = [flat[left:right] for left, right in zip(dict_pos[:-1], dict_pos[1:])]
yield out
def all_vary_list(self, index):
for l in self.dico_iterator(index):
yield sc.utils.parameter.format_variable_list(
sc.utils.parameter.reduce_all_variable(l[:index])
), sc.utils.parameter.format_variable_list(
sc.utils.parameter.reduce_all_variable(l)
), l[
index
]
configs, name = sc.utils.load_config_sequence(
"/Users/benoitsierro/Nextcloud/PhD/Supercontinuum/PCF Simulations/Test/NewStyle.toml"
)
dp = DataPather([config["variable"] for config in configs])
# pprint(list(dp.dico_iterator(1)))
for i in range(3):
for prev_path, this_path, this_vary in dp.all_vary_list(i):
print(prev_path)
print(this_path)
print(this_vary)
print()
print()