janky rule printer
This commit is contained in:
164
playground.py
164
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
|
middle_els = middle.split(".")
|
||||||
import os
|
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(
|
def get_left(left_el, i, horiz_pos, left_height, left_width, left_off):
|
||||||
dt: float | None = None,
|
if not left_el:
|
||||||
period: float | None = None,
|
return " " * (left_width + left_off + 1)
|
||||||
t_num: float | None = None,
|
line = format(left_el, f">{left_width}") + "─" * left_off
|
||||||
wl_min: float | None = None,
|
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:
|
def get_right(right_el, i, horiz_pos, right_height, right_width, right_off):
|
||||||
dt: float = Param()
|
if not right_el:
|
||||||
period: float
|
return " " * (right_width + right_off + 1)
|
||||||
t_num: int
|
if i == horiz_pos:
|
||||||
|
if right_height == 1:
|
||||||
fiber: Fiber
|
line = "─"
|
||||||
pulses: PulseTrain
|
elif i == 0:
|
||||||
|
line = "┴"
|
||||||
def __init__(self, name: str):
|
elif i == right_height:
|
||||||
...
|
line = "┬"
|
||||||
|
else:
|
||||||
@dt.register
|
line = "┼"
|
||||||
def dt_from_lmin(wavelength_max: float, wavelength_pump: float):
|
else:
|
||||||
return 1 / 6e8 * 1 / (1 / wavelength_pump - 1 / wavelength_max)
|
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:
|
if __name__ == "__main__":
|
||||||
pulse_width: float
|
print_graph(
|
||||||
shape: str = "gaussian"
|
("ads", "s", "45 sdksd dkfj"),
|
||||||
peak_power: float
|
"main.fn.bonjour.s",
|
||||||
quantum_noise: bool = True
|
("asdf", "bonjour", "gamma", "wavelengt", "dt"),
|
||||||
|
)
|
||||||
def load_noise_spectrum(self, path: os.PathLike):
|
print()
|
||||||
...
|
print()
|
||||||
|
print_graph(("ads", "s", "45 sdksd dkfj"), "main.fn.bonjour.s", ("asdf",))
|
||||||
|
print()
|
||||||
class Fiber:
|
print()
|
||||||
beta2_arr: np.ndarray
|
print_graph(("ads", "s", "45 sdksd dkfj"), "main", ("asdf",))
|
||||||
length: float
|
print()
|
||||||
|
print()
|
||||||
|
print_graph(
|
||||||
params = Root(dt=2e-15, t_num=1024)
|
("ads", "s", "45 sdksd dkfj", "a", "b", "c"),
|
||||||
|
"main.ollol",
|
||||||
pulses = params.pulse_train
|
("asdf", "some super long variable name"),
|
||||||
pulses.pulse_width = 50e-15
|
)
|
||||||
pulses.shape = "sech"
|
print()
|
||||||
pulses.load_noise_spectrum(dBm="./some_noise.csv", v_ref=3)
|
print()
|
||||||
|
|
||||||
fiber = params.fiber
|
|
||||||
fiber.length = 0.2
|
|
||||||
|
|||||||
Reference in New Issue
Block a user