diff --git a/playground.py b/playground.py index e0f3028..d446b4a 100644 --- a/playground.py +++ b/playground.py @@ -1,57 +1,123 @@ -from __future__ import annotations +def print_graph(left_els, middle, right_els): + left_off = 1 + right_off = 1 + middle_off = 1 -import inspect -import os + middle_els = middle.split(".") + for i, el in enumerate(middle_els[1:]): + middle_els[i + 1] = "." + el + left_els = [el + " " for el in left_els] + right_els = [" " + el for el in right_els] -import numpy as np + left_width = max(len(e) for e in left_els) + middle_width_inner = max(len(e) for e in middle_els) + middle_width = middle_width_inner + 2 * middle_off + right_width = max(len(e) for e in right_els) + + left_height = len(left_els) + middle_height = len(middle_els) + 1 + right_height = len(right_els) + + total_width = left_width + middle_width + right_width + left_off + right_off + 2 + total_height = max(left_height, middle_height, right_height) + horiz_pos = min(total_height - middle_height, left_height, right_height) + + lines = [] + left_els = ( + [None] * max(horiz_pos - left_height + 1, 0) + + list(left_els) + + [None] * (total_height - left_height) + ) + middle_els = ( + [" " * middle_width] * (horiz_pos) + + ["─" * middle_width] + + [ + " " * middle_off + format(el, f"<{middle_width_inner}") + " " * middle_off + for el in middle_els[::-1] + ] + + [" " * middle_width] * (total_height - horiz_pos) + ) + right_els = ( + [None] * max(horiz_pos - right_height + 1, 0) + + list(right_els) + + [None] * (total_height - right_height) + ) + for i, (left_el, middle_el, right_el) in enumerate(zip(left_els, middle_els, right_els)): + line = get_left(left_el, i, horiz_pos, left_height, left_width, left_off) + line += middle_el + line += get_right(right_el, i, horiz_pos, right_height, right_width, right_off) + + lines.append(line) + + print(f"{horiz_pos = }, {total_height = }, {middle_height = }") + + print("\n".join(lines[::-1])) -def make_grid( - dt: float | None = None, - period: float | None = None, - t_num: float | None = None, - wl_min: float | None = None, -): - ... +def get_left(left_el, i, horiz_pos, left_height, left_width, left_off): + if not left_el: + return " " * (left_width + left_off + 1) + line = format(left_el, f">{left_width}") + "─" * left_off + if i == horiz_pos: + if left_height == 1: + line += "─" + elif i == 0: + line += "┴" + elif i == left_height: + line += "┬" + else: + line += "┼" + else: + if i == left_height - 1: + line += "╮" + elif i == 0: + line += "╯" + else: + line += "┤" + return line -class Root: - dt: float = Param() - period: float - t_num: int - - fiber: Fiber - pulses: PulseTrain - - def __init__(self, name: str): - ... - - @dt.register - def dt_from_lmin(wavelength_max: float, wavelength_pump: float): - return 1 / 6e8 * 1 / (1 / wavelength_pump - 1 / wavelength_max) +def get_right(right_el, i, horiz_pos, right_height, right_width, right_off): + if not right_el: + return " " * (right_width + right_off + 1) + if i == horiz_pos: + if right_height == 1: + line = "─" + elif i == 0: + line = "┴" + elif i == right_height: + line = "┬" + else: + line = "┼" + else: + if i == right_height - 1: + line = "╭" + elif i == 0: + line = "╰" + else: + line = "├" + line += "─" * right_off + format(right_el, f"<{right_width}") + return line -class PulseTrain: - pulse_width: float - shape: str = "gaussian" - peak_power: float - quantum_noise: bool = True - - def load_noise_spectrum(self, path: os.PathLike): - ... - - -class Fiber: - beta2_arr: np.ndarray - length: float - - -params = Root(dt=2e-15, t_num=1024) - -pulses = params.pulse_train -pulses.pulse_width = 50e-15 -pulses.shape = "sech" -pulses.load_noise_spectrum(dBm="./some_noise.csv", v_ref=3) - -fiber = params.fiber -fiber.length = 0.2 +if __name__ == "__main__": + print_graph( + ("ads", "s", "45 sdksd dkfj"), + "main.fn.bonjour.s", + ("asdf", "bonjour", "gamma", "wavelengt", "dt"), + ) + print() + print() + print_graph(("ads", "s", "45 sdksd dkfj"), "main.fn.bonjour.s", ("asdf",)) + print() + print() + print_graph(("ads", "s", "45 sdksd dkfj"), "main", ("asdf",)) + print() + print() + print_graph( + ("ads", "s", "45 sdksd dkfj", "a", "b", "c"), + "main.ollol", + ("asdf", "some super long variable name"), + ) + print() + print()