From 8a1fabfd70a612009d6e26982606f72b277d7049 Mon Sep 17 00:00:00 2001 From: daquintero Date: Wed, 29 May 2024 17:14:28 +0200 Subject: [PATCH 1/7] :sparkles: Beta demo sky130 spice-to-layout --- .gitignore | 3 + .python-version | 1 + gplugins/hdl21/__init__.py | 5 + gplugins/hdl21/netlist.py | 355 +++++++++++++++ gplugins/hdl21/sky130.py | 98 ++++ gplugins/schematic_editor/circuitviz.py | 3 + gplugins/schematic_editor/schematic_editor.py | 23 +- gplugins/spice/parse_netlist.py | 180 ++++++++ notebooks/20_schematic_driven_layout.ipynb | 4 +- ...ky130nm_inverter_schematic_to_layout.ipynb | 430 ++++++++++++++++++ .../example_inverter_auto.layout.yaml | 23 + .../sky130nm/example_inverter_auto.schem.yaml | 15 + .../example_inverter_manual.schem.yaml | 59 +++ notebooks/data/sky130nm/inv.mag | 59 +++ notebooks/data/sky130nm/inv.pex.sch | 21 + notebooks/data/sky130nm/inv.pex.sym | 26 ++ notebooks/data/sky130nm/inv.sch | 46 ++ notebooks/data/sky130nm/inv.sym | 23 + .../sky130_fd_pr__nfet_g5v0d10v5_H9JWFY.mag | 70 +++ .../sky130_fd_pr__pfet_g5v0d10v5_5AEDG4.mag | 96 ++++ notebooks/data/sky130nm/tb_inv.sch | 78 ++++ notebooks/data/sky130nm/tb_inv_pex.sch | 78 ++++ notebooks/data/sky130nm/tb_most.sch | 106 +++++ pyproject.toml | 8 + 24 files changed, 1801 insertions(+), 9 deletions(-) create mode 100644 .python-version create mode 100644 gplugins/hdl21/__init__.py create mode 100644 gplugins/hdl21/netlist.py create mode 100644 gplugins/hdl21/sky130.py create mode 100644 gplugins/spice/parse_netlist.py create mode 100644 notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb create mode 100644 notebooks/data/sky130nm/example_inverter_auto.layout.yaml create mode 100644 notebooks/data/sky130nm/example_inverter_auto.schem.yaml create mode 100644 notebooks/data/sky130nm/example_inverter_manual.schem.yaml create mode 100644 notebooks/data/sky130nm/inv.mag create mode 100644 notebooks/data/sky130nm/inv.pex.sch create mode 100644 notebooks/data/sky130nm/inv.pex.sym create mode 100644 notebooks/data/sky130nm/inv.sch create mode 100644 notebooks/data/sky130nm/inv.sym create mode 100644 notebooks/data/sky130nm/sky130_fd_pr__nfet_g5v0d10v5_H9JWFY.mag create mode 100644 notebooks/data/sky130nm/sky130_fd_pr__pfet_g5v0d10v5_5AEDG4.mag create mode 100644 notebooks/data/sky130nm/tb_inv.sch create mode 100644 notebooks/data/sky130nm/tb_inv_pex.sch create mode 100644 notebooks/data/sky130nm/tb_most.sch diff --git a/.gitignore b/.gitignore index d489743c..06a660b2 100644 --- a/.gitignore +++ b/.gitignore @@ -172,6 +172,7 @@ cython_debug/ .DS_Store *Thumbs.db + # Possible generated files *.cmd *.tcl @@ -180,3 +181,5 @@ cython_debug/ *.BAK *.sav *.plt +.virtual_documents +.idea diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..7cd96c2e --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +gplugins_spice diff --git a/gplugins/hdl21/__init__.py b/gplugins/hdl21/__init__.py new file mode 100644 index 00000000..43b6a1d3 --- /dev/null +++ b/gplugins/hdl21/__init__.py @@ -0,0 +1,5 @@ +from .netlist import * +<<<<<<< HEAD +from .sky130 import * +======= +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) diff --git a/gplugins/hdl21/netlist.py b/gplugins/hdl21/netlist.py new file mode 100644 index 00000000..46ce3c8f --- /dev/null +++ b/gplugins/hdl21/netlist.py @@ -0,0 +1,355 @@ +""" +This module provides functions to generate a raw netlist semi-compatible with gdsfactory from a hdl21 module object. +""" + +import hdl21 as h +import yaml + +__all__ = [ +<<<<<<< HEAD +<<<<<<< HEAD + 'ParsedProtoVLSIR', + 'generate_raw_netlist_dict_from_module', + 'generate_raw_yaml_from_module' +======= + "ParsedProtoVLSIR", + "parse_module_to_proto_dict", + "generate_raw_netlist_from_module", + "generate_raw_yaml_from_module", +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= + "ParsedProtoVLSIR", + "generate_raw_netlist_dict_from_module", + "generate_raw_yaml_from_module", +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) +] + +ParsedProtoVLSIR = dict + + +<<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) +def _parse_module_to_proto_dict(module: h.module) -> ParsedProtoVLSIR: +======= +def parse_module_to_proto_dict(module: h.module) -> ParsedProtoVLSIR: +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) + """ + Parse a hdl21 module object into a dictionary with the same structure as the proto VLSIR format. + """ + + def parse_value(lines, index): + value = {} + while index < len(lines): + line = lines[index].strip() + if line == "}": + return value, index + elif line.endswith("{"): + key = line[:-1].strip() + sub_value, new_index = parse_value(lines, index + 1) + if key not in value: + value[key] = [] + value[key].append(sub_value) + index = new_index + else: + key, val = line.split(":", 1) + value[key.strip()] = val.strip().strip('"') + index += 1 + return value, index + + raw_proto_str = str(h.to_proto(module)) + lines = raw_proto_str.split("\n") + result = {} + index = 0 + while index < len(lines): + line = lines[index].strip() + if line.endswith("{"): + key = line[:-1].strip() + sub_value, new_index = parse_value(lines, index + 1) + if key not in result: + result[key] = [] + result[key].append(sub_value) + index = new_index + else: + index += 1 + + return result + + +def _parse_connections(proto_dict: ParsedProtoVLSIR) -> dict: + """ + Extract the connections from the proto_dict and return a dictionary with the connections. + """ + connections = {} + + # Extract the instances and their connections + for module in proto_dict.get("modules", []): + for instance in module.get("instances", []): + instance_name = instance["name"] + for connection in instance.get("connections", []): + portname = connection["portname"] + target_signal = connection["target"][0]["sig"] + connection_key = f"{instance_name},{portname}" + # Find the target instance and port +<<<<<<< HEAD +<<<<<<< HEAD + target_instance_port = _find_target_instance_port(proto_dict, target_signal, instance_name) +======= + target_instance_port = find_target_instance_port( + proto_dict, target_signal, instance_name + ) +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= + target_instance_port = _find_target_instance_port( + proto_dict, target_signal, instance_name + ) +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + if target_instance_port: + connections[connection_key] = target_instance_port + + return connections + + +<<<<<<< HEAD +<<<<<<< HEAD +def _find_target_instance_port(proto_dict: ParsedProtoVLSIR, + target_signal, + current_instance_name): +======= +def find_target_instance_port( + proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name +): +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= +def _find_target_instance_port( + proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name +): +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + """ + Find the target instance and port of the target signal in the proto_dict. + """ + # Search in the same module + for module in proto_dict.get("modules", []): + for instance in module.get("instances", []): + if instance["name"] == current_instance_name: + continue + for connection in instance.get("connections", []): + if connection["target"][0]["sig"] == target_signal: + return f"{instance['name']},{connection['portname']}" + # Search in external modules + for ext_module in proto_dict.get("ext_modules", []): + for port in ext_module.get("ports", []): + if port["signal"] == target_signal: + for instance in module.get("instances", []): + if instance["name"] == current_instance_name: + continue + for connection in instance.get("connections", []): + if connection["target"][0]["sig"] == target_signal: + return f"{instance['name']},{connection['portname']}" + + return None + + +def _generate_top_level_connections(proto_dict: ParsedProtoVLSIR): + """ + Generate the top-level connections from the proto_dict. + """ + top_level_connections = {} + + # Iterate over the top-level module ports +<<<<<<< HEAD +<<<<<<< HEAD + for module in proto_dict.get('modules', []): + for port in module.get('ports', []): + port_signal = port['signal'] +======= + for module in proto_dict.get("modules", []): + for port in module.get("ports", []): + port_signal = port["signal"] +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + connection = _find_port_connection(proto_dict, port_signal) +======= + for module in proto_dict.get("modules", []): + for port in module.get("ports", []): + port_signal = port["signal"] + connection = find_port_connection(proto_dict, port_signal) +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) + if connection: + top_level_connections[port_signal] = connection + + return top_level_connections + + +def _find_port_connection(proto_dict: ParsedProtoVLSIR, port_signal): + """ + Find the connection of the port signal in the proto_dict. + """ + # Search within the module instances + for module in proto_dict.get("modules", []): + for instance in module.get("instances", []): + instance_name = instance["name"] + for connection in instance.get("connections", []): + if connection["target"][0]["sig"] == port_signal: + return f"{instance_name},{connection['portname']}" + return None + + +def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR): + """ + Extract the instance parameters from the proto_dict. + """ + instance_parameters = {} + + for module in proto_dict.get("modules", []): + for instance in module.get("instances", []): + instance_name = instance["name"] + instance_info = { +<<<<<<< HEAD +<<<<<<< HEAD + 'component': _extract_component_name(instance), + 'info': {}, + 'settings': {} + } + + # Extract parameters into the settings + for parameter in instance.get('parameters', []): + param_name = parameter['name'] + param_value = _extract_parameter_value(parameter['value']) + instance_info['settings'][param_name] = param_value +======= + "component": extract_component_name(instance), + "info": {}, + "settings": {}, + } + + # Extract parameters into the settings + for parameter in instance.get("parameters", []): + param_name = parameter["name"] + param_value = extract_parameter_value(parameter["value"]) + instance_info["settings"][param_name] = param_value +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= + "component": _extract_component_name(instance), + "info": {}, + "settings": {}, + } + + # Extract parameters into the settings + for parameter in instance.get("parameters", []): + param_name = parameter["name"] + param_value = _extract_parameter_value(parameter["value"]) + instance_info["settings"][param_name] = param_value +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + + # Extract connections and add to settings + instance_info["settings"]["ports"] = {} + for connection in instance.get("connections", []): + portname = connection["portname"] + target_signal = connection["target"][0]["sig"] + instance_info["settings"]["ports"][portname] = target_signal + + instance_parameters[instance_name] = instance_info + + return instance_parameters + + +def _extract_component_name(instance): + """ + Extract the component name from the instance. + """ + external_modules = instance.get("module", []) + if external_modules: +<<<<<<< HEAD +<<<<<<< HEAD + domain = external_modules[0].get('external', [{}])[0].get('domain', '') + name = external_modules[0].get('external', [{}])[0].get('name', '') + return f"{name}" + return 'unknown_component' +======= + domain = external_modules[0].get("external", [{}])[0].get("domain", "") + name = external_modules[0].get("external", [{}])[0].get("name", "") + return f"{domain}_{name}" + return "unknown_component" +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= + domain = external_modules[0].get("external", [{}])[0].get("domain", "") + name = external_modules[0].get("external", [{}])[0].get("name", "") + return f"{name}" + return "unknown_component" +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + + +def _extract_parameter_value(value): + """ + Extract the parameter value from the value dictionary. + """ + if value and "literal" in value[0]: + return value[0]["literal"] + elif value and "prefixed" in value[0]: + prefix = value[0]["prefixed"][0].get("prefix", "") + int64_value = value[0]["prefixed"][0].get("int64_value", "") + return f"{prefix}_{int64_value}" + return None + + +def _generate_raw_netlist_dict_from_proto_dict(proto_dict: ParsedProtoVLSIR): + """ + Generate a raw netlist dictionary from the proto_dict. + """ + raw_netlist_dict = {"name": "", "instances": {}, "connections": {}, "ports": {}} + + # Extract the top-level module name + if proto_dict.get("modules"): + raw_netlist_dict["name"] = proto_dict["modules"][0].get("name", "") + + # Generate instances information +<<<<<<< HEAD +<<<<<<< HEAD + raw_netlist_dict['instances'] = _extract_instance_parameters(proto_dict) +======= + raw_netlist_dict["instances"] = _extract_instance_parameters(proto_dict) +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + + # Generate connections + raw_netlist_dict["connections"] = _parse_connections(proto_dict) + + # Generate top-level connections +<<<<<<< HEAD + raw_netlist_dict['ports'] = _generate_top_level_connections(proto_dict) +======= + raw_netlist_dict["instances"] = extract_instance_parameters(proto_dict) + + # Generate connections + raw_netlist_dict["connections"] = parse_connections(proto_dict) + + # Generate top-level connections + raw_netlist_dict["ports"] = generate_top_level_connections(proto_dict) +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) +======= + raw_netlist_dict["ports"] = _generate_top_level_connections(proto_dict) +>>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) + + return raw_netlist_dict + + +def generate_raw_netlist_dict_from_module(module: h.module): + """ + Generate a raw netlist dictionary from a hdl21 module object. + This just gives us a raw structure of the hdl21 modules, we cannot use this json equivalently to a gdsfactory netlist. + """ + proto_dict = _parse_module_to_proto_dict(module) + return _generate_raw_netlist_dict_from_proto_dict(proto_dict) + + +def generate_raw_yaml_from_module(module: h.module): + """ + Generate a raw netlist yaml from a hdl21 module object which could be manually edited for specific instances + related to the corresponding SPICE. + """ +<<<<<<< HEAD + raw_netlist = generate_raw_netlist_dict_from_module(module) +======= + raw_netlist = generate_raw_netlist_from_module(module) +>>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) + return yaml.dump(raw_netlist, default_flow_style=False) diff --git a/gplugins/hdl21/sky130.py b/gplugins/hdl21/sky130.py new file mode 100644 index 00000000..3b4cf651 --- /dev/null +++ b/gplugins/hdl21/sky130.py @@ -0,0 +1,98 @@ +from collections.abc import Callable + +import hdl21 as h +import sky130 + +from ..schematic_editor import SchematicEditor +from .netlist import ( + _generate_raw_netlist_dict_from_proto_dict, + _parse_module_to_proto_dict, +) + +__all__ = ["hdl21_module_to_schematic_editor", "find_most_relevant_gds", "filter_port"] + +from difflib import get_close_matches + +custom_mapping_dict = { + "sky130_fd_pr__nfet_01v8": "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15", + "sky130_fd_pr__pfet_01v8": "sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15", +} + + +def find_most_relevant_gds( + component_name, component_dict=sky130.cells, custom_mapping=None +): + if custom_mapping is None: + custom_mapping = custom_mapping_dict + + if component_name in custom_mapping.keys(): + print(f"Mapping for {component_name}: {custom_mapping[component_name]}") + return custom_mapping[component_name] + + all_components = [ + name for name in component_dict.keys() if "rf_test_coil" not in name + ] + closest_matches = get_close_matches(component_name, all_components, n=1, cutoff=0.1) + print(f"Closest matches for {component_name}: {closest_matches}") + return closest_matches[0] if closest_matches else component_name + + +def filter_port(port): + """ + Filter the port name to match spice declaration to gds port name, specifically focused on the SKY130nm technology. + """ + if port == "d": + return "DRAIN" + elif port == "g": + return "GATE" + elif port == "s": + return "SOURCE" + else: + return port + + +def hdl21_module_to_schematic_editor( + module: h.module, + yaml_schematic_file_name: str, + spice_gds_mapping_method: Callable | None = find_most_relevant_gds, + port_filter_method: Callable = filter_port, +) -> SchematicEditor: + """ + Constructs a SchematicEditor instance from a hdl21 module object. + + Args: + module (h.module): The hdl21 module object. + yaml_schematic_file_name (str): The yaml schematic file name. + spice_gds_mapping_method (Callable): The method to map the spice instance name to the component name. + port_filter_method (Callable): The method to filter the port name. + """ + proto_dict = _parse_module_to_proto_dict(module) + raw_netlist_dict = _generate_raw_netlist_dict_from_proto_dict(proto_dict) + + # This just gives us a raw structure of the hdl21 modules. + se = SchematicEditor(yaml_schematic_file_name) + + for instance_name_i, instance_i in raw_netlist_dict["instances"].items(): + # Maps the spice instance name to the component name. + # TODO implement setting mapping and custom name mapping + if spice_gds_mapping_method is None: + gds_component_name_i = instance_i["component"] + else: + gds_component_name_i = spice_gds_mapping_method( + instance_i["component"], sky130.cells + ) + se.add_instance( + instance_name=instance_name_i, + component=sky130.cells[gds_component_name_i](), + ) + + for connection_source_i, connection_target_i in raw_netlist_dict[ + "connections" + ].items(): + source_instance, source_port = connection_source_i.split(",") + target_instance, target_port = connection_target_i.split(",") + source_port = port_filter_method(source_port) + target_port = port_filter_method(target_port) + se.add_net(source_instance, source_port, target_instance, target_port) + + return se diff --git a/gplugins/schematic_editor/circuitviz.py b/gplugins/schematic_editor/circuitviz.py index 4fff9ed6..916ff120 100644 --- a/gplugins/schematic_editor/circuitviz.py +++ b/gplugins/schematic_editor/circuitviz.py @@ -455,6 +455,7 @@ def viz_netlist(netlist, instances, instance_size=20): for net in netlist.nets: p_in, p_out = net + print(port_coords) point1 = port_coords[p_in] point2 = port_coords[p_out] els += viz_connection(netlist, p_in, p_out, instance_size, point1, point2) @@ -466,6 +467,7 @@ def show_netlist( ) -> None: global data data["netlist"] = schematic + print(schematic) fig = bp.figure(width=800, height=500) app = viz_bk( schematic, @@ -474,6 +476,7 @@ def show_netlist( instance_size=50, netlist_filename=netlist_filename, ) + print(app) bio.show(app) diff --git a/gplugins/schematic_editor/schematic_editor.py b/gplugins/schematic_editor/schematic_editor.py index 5c280947..46fa2dc6 100644 --- a/gplugins/schematic_editor/schematic_editor.py +++ b/gplugins/schematic_editor/schematic_editor.py @@ -270,6 +270,12 @@ def port_widget(self): return self._port_grid def visualize(self) -> None: + print("self.schematic") + print(self.schematic) + print("self.symbols") + print(self.symbols) + print("self.path") + print(self.path) circuitviz.show_netlist(self.schematic, self.symbols, self.path) self.on_instance_added.append(self._update_schematic_plot) @@ -327,16 +333,19 @@ def update_settings( instance_name=instance, settings=settings, old_settings=old_settings ) - def add_net(self, inst1, port1, inst2, port2): + def add_net(self, inst1, port1, inst2, port2, allow_multiple: bool = False) -> None: p1 = f"{inst1},{port1}" p2 = f"{inst2},{port2}" if p1 in self._connected_ports: - if self._connected_ports[p1] == p2: - return - current_port = self._connected_ports[p1] - raise ValueError( - f"{p1} is already connected to {current_port}. Can't connect to {p2}" - ) + if allow_multiple: + pass + else: + if self._connected_ports[p1] == p2: + return + current_port = self._connected_ports[p1] + raise ValueError( + f"{p1} is already connected to {current_port}. Can't connect to {p2}" + ) self._connected_ports[p1] = p2 self._connected_ports[p2] = p1 old_nets = self._schematic.nets.copy() diff --git a/gplugins/spice/parse_netlist.py b/gplugins/spice/parse_netlist.py new file mode 100644 index 00000000..37909d74 --- /dev/null +++ b/gplugins/spice/parse_netlist.py @@ -0,0 +1,180 @@ +import re +from typing import Literal + +# Your netlist text as a string +# TODO CHECK This is from lumerical interconnect right? +netlist_text = """ +* Netlist generated with INTERCONNECT on Fri Dec 8 11:06:53 2023 + +* +* Component pathname : compound_1 +* +.subckt COMPOUND_1 PORT_1 PORT_2 PORT_3 PORT_4 PORT_5 PORT_6 PORT_7 PORT_8 + X_dc_1 PORT_1 PORT_2 N$1 N$3 ebeam_dc_te1550 coupling_length=17.5u sch_x=-0.245 sch_y=1.205 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_dc_2 N$1 N$3 PORT_3 PORT_4 ebeam_dc_te1550 coupling_length=17.5u sch_x=0.79 sch_y=0.38 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_dc_3 PORT_5 PORT_7 N$11 N$13 ebeam_dc_te1550 coupling_length={%test_param1%*1e-6} sch_x=-1.3 sch_y=-1.585 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_1 N$8 N$13 N$11 ebeam_y_1550 sch_x=0.95 sch_y=-1.58 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_2 N$8 PORT_6 PORT_8 ebeam_y_1550 sch_x=1.89 sch_y=-1.58 sch_r=0 sch_f=f lay_x=0 lay_y=0 +.ends COMPOUND_1 + +* +* MAIN CELL: Component pathname : root_element +* + .MODEL ebeam_dc_te1550 radius=5u gap=0.2u note=".- The current model only supports "coupling_length" as an input parameter..- The other parameters + (i.e., "wg_width", "gap", "radius") are now fixed but will be parameterized in the future." + + wg_width=0.5u library="design_kit/ebeam" + .MODEL ebeam_gc_te1550 MC_grid={%MC_grid%} MC_non_uniform={%MC_non_uniform%} MC_resolution_x={%MC_resolution_x%} + + MC_resolution_y={%MC_resolution_y%} MC_uniformity_thickness={%MC_uniformity_thickness%} MC_uniformity_width={%MC_uniformity_width%} + + library="design_kit/ebeam" + .MODEL ebeam_y_1550 Model_Version="2016/04/07" MC_grid={%MC_grid%} MC_non_uniform={%MC_non_uniform%} + + MC_resolution_x={%MC_resolution_x%} MC_resolution_y={%MC_resolution_y%} MC_uniformity_thickness={%MC_uniformity_thickness%} + + MC_uniformity_width={%MC_uniformity_width%} library="design_kit/ebeam" + .MODEL wg_heater wg_length=0.0001 library="design_kit/ebeam" + X_COMPOUND_1 N$1 N$2 N$5 N$4 N$7 N$10 N$9 N$8 COMPOUND_1 test_param2=2 test_param1=3 sch_x=0.75 sch_y=0 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_1 N$6 N$1 N$2 ebeam_y_1550 sch_x=-0.22 sch_y=0.005 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_2 N$3 N$4 N$5 ebeam_y_1550 sch_x=2.795 sch_y=1.665 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_TE1550_SubGC_neg31_oxide_1 N$17 N$6 ebeam_gc_te1550 sch_x=-2.175 sch_y=-0.05 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_TE1550_SubGC_neg31_oxide_2 N$18 N$3 ebeam_gc_te1550 sch_x=4.435 sch_y=2.655 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_3 N$14 N$7 N$9 ebeam_y_1550 sch_x=-1.42 sch_y=-1.31 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_ebeam_y_1550_4 N$16 N$8 N$10 ebeam_y_1550 sch_x=4.525 sch_y=-1.395 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_wg_heater_1 N$12 N$11 N$13 N$15 wg_heater sch_x=2.11 sch_y=-3.82 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_wg_heater_2 N$11 N$12 N$16 N$14 wg_heater sch_x=2.085 sch_y=-2.645 sch_r=180 sch_f=f lay_x=0 lay_y=0 + X_TE1550_SubGC_neg31_oxide_3 N$19 N$13 ebeam_gc_te1550 sch_x=4.205 sch_y=-3.99 sch_r=0 sch_f=f lay_x=0 lay_y=0 + X_TE1550_SubGC_neg31_oxide_4 N$20 N$15 ebeam_gc_te1550 sch_x=-4.305 sch_y=-4.13 sch_r=180 sch_f=f lay_x=0 lay_y=0 +* +.end + +*# ebeam_dc_te1550 opt_1(opt) opt_2(opt) opt_3(opt) opt_4(opt) +*# ebeam_gc_te1550 opt_fiber(opt) opt_wg(opt) +*# ebeam_y_1550 opt_a1(opt) opt_b1(opt) opt_b(opt) +*# wg_heater ele_1(ele) ele_2(ele) opt_1(opt) opt_2(opt) +""" +SupportedSpiceTypes = Literal["lumerical", "xschem"] + + +def parse_netlist_and_extract_elements( + netlist_text, spice_type: SupportedSpiceTypes = "lumerical" +): + elements = [] # To store elements like components and subcircuits + connections = [] # To store connections (routes) between elements + settings = [] # To store settings like .MODEL definitions + + if spice_type == "lumerical": + lines = netlist_text.split("\n") + for line in lines: + line = line.strip() + # Skip comments and empty lines + if not line or line.startswith("*"): + continue + + # Handle .subckt, .ends, and .MODEL lines specifically + if line.startswith(".subckt"): + parts = re.split(r"\s+", line) + subckt_name = parts[1] + ports = parts[2:] + elements.append({"type": "subckt", "name": subckt_name, "ports": ports}) + elif line.startswith(".ends"): + continue + elif line.startswith(".MODEL"): + model_definition = re.split(pattern=r"\s+", string=line, maxsplit=1)[1] + model_name, model_params = model_definition.split(" ", 1) + elements.append( + {"type": "model", "name": model_name, "params": model_params} + ) + else: + # Assuming remaining lines are component instances + parts = re.split(r"\s+", line) + component_type = parts[0] + component_name = parts[-1] + # Extract connections from the nodes + parts = parts[1:-1] + nodes = [] + for i in range(len(parts) - 1): + if "=" not in parts[i + 1]: + nodes.append({"from": component_name, "to": parts[i]}) + else: + component_name = parts[i] + settings.append(parts[i + 1 :]) + break + + elements.append( + { + "type": "component", + "name": component_name, + "component_type": component_type, + "nodes": nodes, + "settings": settings, + } + ) + + elif spice_type == "xschem": + lines = netlist_text.split("\n") + for line in lines: + line = line.strip() + if not line or line.startswith( + "v {" + ): # Skip the version line and empty lines + continue + + if line.startswith("C {"): + parts = line.split(" ") + component_info = parts[1].strip("{}") + x, y = parts[2], parts[3] + attributes_str = " ".join(parts[4:]) + match = re.search( + r"\{(.*)\}", attributes_str + ) # Attempt to find the attributes + + if match: # Check if a match was found + attributes = match.group(1) + name_match = re.search(r"name=([^ ]+)", attributes) + label_match = re.search(r"lab=([^}\n]+)", attributes) + name = name_match.group(1) if name_match else "" + label = label_match.group(1) if label_match else "" + + additional_settings = re.findall(r"(\w+)=([^\s}]+)", attributes) + settings_dict = dict(additional_settings) + + elements.append( + { + "type": "component", + "component_type": component_info, + "position": {"x": x, "y": y}, + "name": name, + "label": label, + "settings": settings_dict, + } + ) + else: + # Handle lines that do not match the expected format + print(f"Warning: Line skipped due to unexpected format: {line}") + elif line.startswith("N "): + parts = line.split(" ") + x1, y1, x2, y2 = parts[1], parts[2], parts[3], parts[4] + attributes_str = " ".join(parts[5:]) + label_match = re.search(r"lab=([^}\n]+)", attributes_str) + label = label_match.group(1) if label_match else "" + + connections.append( + { + "start": {"x": x1, "y": y1}, + "end": {"x": x2, "y": y2}, + "label": label, + } + ) + + return elements, connections, settings + + +if __name__ == "__main__": + # Extract elements and connections + elements, connections = parse_netlist_and_extract_elements(netlist_text) + + # Example output + print("Elements:") + for element in elements: + print(element) + + print("\nConnections:") + for connection in connections: + print(connection) diff --git a/notebooks/20_schematic_driven_layout.ipynb b/notebooks/20_schematic_driven_layout.ipynb index 661f36e2..951a3425 100644 --- a/notebooks/20_schematic_driven_layout.ipynb +++ b/notebooks/20_schematic_driven_layout.ipynb @@ -360,7 +360,7 @@ "custom_cell_magics": "kql" }, "kernelspec": { - "display_name": "base", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -374,7 +374,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb new file mode 100644 index 00000000..40582cf0 --- /dev/null +++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb @@ -0,0 +1,430 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# SkyWater Inverter Design using GPlugins\n", + "\n", + "The goal of this notebook is to demonstrate the integration of the `sky130nm` electronic PDK within a gdsfactory-based schematic driven layout. Broadly, we will explore:\n", + "\n", + "* A little introduction at setting up the existing open-source electronic EDA development flow with `xschem` using the latest `sky130nm` library\n", + "* Exporting that schematic into a SPICE model, which is used to schematic-driven-layout using gdsfactory.\n", + "* Example inverter design and layout between the toolsets." + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Using the `gdsfactory-sky130nm` Repository" + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "The goal of this notebook is to show that analogue simulation and layout can be performed together within a `gdsfactory` environment." + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "```\n", + "pip install gplugins[hdl21,sky130]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "import hdl21 as h\n", + "import gdsfactory as gf\n", + "import gplugins.hdl21 as gph\n", + "import sky130\n", + "import sky130_hdl21\n", + "\n", + "from bokeh.io import output_notebook\n", + "from gdsfactory.config import rich_output\n", + "from gplugins.schematic_editor import SchematicEditor\n", + "\n", + "gf.config.rich_output()\n", + "\n", + "%env BOKEH_ALLOW_WS_ORIGIN=*\n", + "\n", + "output_notebook()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# sky130.cells" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "@h.module\n", + "class SkyInv:\n", + " \"\"\" An inverter, demonstrating using PDK modules \"\"\"\n", + "\n", + " # Create some IO\n", + " i, o, VDD, VSS = h.Ports(4)\n", + "\n", + " p = sky130_hdl21.Sky130MosParams(w=1,l=1)\n", + "\n", + " # And create some transistors!\n", + " ps = sky130_hdl21.primitives.PMOS_1p8V_STD(p)(d=o, g=i, s=VDD, b=VDD)\n", + " ns = sky130_hdl21.primitives.NMOS_1p8V_STD(p)(d=VSS, g=i, s=o, b=VSS)" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "### Manually editing the `SPICE`-generated `gdsfactory` component YAML\n", + "\n", + "It is important to know that with the SPICE-generated YAML, we cannot actually create a layout on its own. This is because the SPICE models do not exactly directly map to layout instances. SPICE models can represent performance corners for the same device, with multiple temperature or yield quality variations. As such, we need to assign the corresponding gds we want to layout for our specific schematic model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "example_inverter_manual_yaml = gph.generate_raw_yaml_from_module(\n", + " SkyInv\n", + ")\n", + "print(example_inverter_manual_yaml)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "example_inverter_manual_yaml = \"\"\"\n", + "connections:\n", + " ns,d: ps,d\n", + " ns,g: ps,g\n", + " ps,d: ns,d\n", + " ps,g: ns,g\n", + "instances:\n", + " ns:\n", + " component: sky130_fd_pr__nfet_01v8\n", + " info: {}\n", + " settings:\n", + " As: int((nf+2)/2) * w/nf * 0.29\n", + " ad: int((nf+1)/2) * w/nf * 0.29\n", + " l: UNIT_1\n", + " m: UNIT_1\n", + " mult: UNIT_1\n", + " nf: UNIT_1\n", + " nrd: 0.29 / w\n", + " nrs: 0.29 / w\n", + " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", + " ports:\n", + " b: VSS\n", + " d: o\n", + " g: i\n", + " s: VSS\n", + " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", + " sa: UNIT_0\n", + " sb: UNIT_0\n", + " sd: UNIT_0\n", + " w: UNIT_1\n", + " ps:\n", + " component: sky130_fd_pr__pfet_01v8\n", + " info: {}\n", + " settings:\n", + " As: int((nf+2)/2) * w/nf * 0.29\n", + " ad: int((nf+1)/2) * w/nf * 0.29\n", + " l: UNIT_1\n", + " m: UNIT_1\n", + " mult: UNIT_1\n", + " nf: UNIT_1\n", + " nrd: 0.29 / w\n", + " nrs: 0.29 / w\n", + " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", + " ports:\n", + " b: VDD\n", + " d: o\n", + " g: i\n", + " s: VDD\n", + " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", + " sa: UNIT_0\n", + " sb: UNIT_0\n", + " sd: UNIT_0\n", + " w: UNIT_1\n", + "name: SkyInv\n", + "ports:\n", + " VDD: ps,s\n", + " VSS: ns,s\n", + " i: ps,g\n", + " o: ps,d\n", + "\"\"\"\n", + "with open(\"data/sky130nm/example_inverter_manual.schem.yaml\", 'w') as file:\n", + " file.write(example_inverter_manual_yaml)" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "### Automatically mapping layout instances to the YAML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "example_inverter_schematic_editor = gph.hdl21_module_to_schematic_editor(\n", + " module=SkyInv,\n", + " yaml_schematic_file_name=\"data/sky130nm/example_inverter_auto.schem.yaml\",\n", + ")\n", + "example_inverter_schematic_editor.visualize()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "example_inverter_layout = \"data/sky130nm/example_inverter_auto.layout.yaml\"\n", + "example_inverter_schematic_editor.instantiate_layout(example_inverter_layout, default_router=\"get_bundle\", default_cross_section=\"xs_metal1\")\n", + "c = gf.read.from_yaml(example_inverter_layout)\n", + "c.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "## (WIP, future integrations) Setting up the required tools: `xschem`, `volare` and the `sky130nm` PDKs\n", + "\n", + "I will say early on, you would benefit from working in a UNIX or Debian Linux environment. Most EDA tools either proprietary or open-source only work within these operating systems or a Docker environment of these operating systems.\n", + "\n", + "There are multiple ways to get started with the environment, you could, for example:\n", + "1. Work within a [IIC-OSIC-TOOLS docker environment](https://github.com/iic-jku/IIC-OSIC-TOOLS). There is also a nice [OSIC-multitool project](https://github.com/iic-jku/osic-multitool) specifically for SKY130nm designs.\n", + "2. Install these tools natively in your operating system. You could follow one of these tutorials, for example:\n", + " * https://www.engineerwikis.com/wikis/installation-of-xschem\n", + " * https://www.youtube.com/watch?v=jXmmxO8WG8s&t=7s\n", + "\n", + "This tutorial assumes the tools have already been installed in a local operating system. We will use some design files generated by these toolsets as guided by this [OSIC-Multitool example](https://github.com/iic-jku/osic-multitool/tree/main/example/ana). Note we recommend cloning the `gplugins` repository." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib\n", + "from gplugins.spice import parse_netlist as spice" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "Our example files are under the directory of `gplugins/notebooks/data`, let's extract our SPICE declaration:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "def read_file(file_path):\n", + " try:\n", + " with open(file_path, 'r') as file:\n", + " text = file.read()\n", + " return text\n", + " except FileNotFoundError:\n", + " print(\"File not found. Please provide a valid file path.\")\n", + " return None" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "Let's list the files we're going to be reading into:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "inverter_spice_file = pathlib.Path(\"data\") / \"sky130nm\" / \"inv.sch\"" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "Let's extract our raw spice netlist. An important aspect to understand is that unfortunately, every SPICE tool developed their own file format. So in this sense, netlist parsing function is implemented according to the type of spice toolset that has generated this netlist.\n", + "\n", + "We aim to support:\n", + "\n", + "- `xschem`\n", + "- `lumerical?`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "inverter_spice_text = read_file(inverter_spice_file)\n", + "inverter_spice_text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "spice.netlist_text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "elements, _, _ = spice.parse_netlist_and_extract_elements(netlist_text=spice.netlist_text, spice_type=\"lumerical\")\n", + "elements" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "So we can use our `netlist` parsing function to convert this to a compatible netlist for gdsfactory plugins into the extracted elements and the extracted connections:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "inverter_netlist_elements, inverter_netlist_connections, _ = spice.parse_netlist_and_extract_elements(netlist_text=inverter_spice_text, spice_type=\"xschem\")\n", + "inverter_netlist_elements, inverter_netlist_connections, _" + ] + }, + { + "cell_type": "markdown", + "id": "25", + "metadata": {}, + "source": [ + "### Automated schematic-driven-layout" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "We have now extracted our spice elements and our connectivity. Let's explore what we have there:" + ] + }, + { + "cell_type": "raw", + "id": "27", + "metadata": {}, + "source": [ + "# Current TODOs\n", + "\n", + "1. Update the extraction function to add xschem compatibility.\n", + "2. Create the mapping between the extracted netlist and the corresponding SKY130nm elements." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/data/sky130nm/example_inverter_auto.layout.yaml b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml new file mode 100644 index 00000000..8ed11bb7 --- /dev/null +++ b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml @@ -0,0 +1,23 @@ +schema_version: 1 +schema: null +instances: + ps: + component: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 + settings: {} + ns: + component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 + settings: {} +placements: + ps: {x: null, y: null, port: null, rotation: 0, dx: -1.4737477228631808, dy: -8.228251743803634, + mirror: null} + ns: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null} +routes: + r0: + routing_strategy: get_bundle + settings: {cross_section: xs_metal1, separation: 5.0} + links: {'ps,DRAIN': 'ns,SOURCE'} + r1: + routing_strategy: get_bundle + settings: {cross_section: xs_metal1, separation: 5.0} + links: {'ps,GATE': 'ns,GATE'} +ports: {} diff --git a/notebooks/data/sky130nm/example_inverter_auto.schem.yaml b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml new file mode 100644 index 00000000..b2c9cc05 --- /dev/null +++ b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml @@ -0,0 +1,15 @@ +instances: + ps: + component: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 + settings: {} + ns: + component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 + settings: {} +schematic_placements: + ps: {rotation: 0, dx: -1.4737477228631808, dy: -8.228251743803634} + ns: {rotation: 0} +nets: +- ['ps,DRAIN', 'ns,SOURCE'] +- ['ps,GATE', 'ns,GATE'] +ports: {} +schema_version: 1 diff --git a/notebooks/data/sky130nm/example_inverter_manual.schem.yaml b/notebooks/data/sky130nm/example_inverter_manual.schem.yaml new file mode 100644 index 00000000..a295c4d5 --- /dev/null +++ b/notebooks/data/sky130nm/example_inverter_manual.schem.yaml @@ -0,0 +1,59 @@ + +connections: + ns,d: ps,d + ns,g: ps,g + ps,d: ns,d + ps,g: ns,g +instances: + ns: + component: sky130_fd_pr__nfet_01v8 + info: {} + settings: + As: int((nf+2)/2) * w/nf * 0.29 + ad: int((nf+1)/2) * w/nf * 0.29 + l: UNIT_1 + m: UNIT_1 + mult: UNIT_1 + nf: UNIT_1 + nrd: 0.29 / w + nrs: 0.29 / w + pd: 2*int((nf+1)/2) * (w/nf + 0.29) + ports: + b: VSS + d: o + g: i + s: VSS + ps: 2*int((nf+2)/2) * (w/nf + 0.29) + sa: UNIT_0 + sb: UNIT_0 + sd: UNIT_0 + w: UNIT_1 + ps: + component: sky130_fd_pr__pfet_01v8 + info: {} + settings: + As: int((nf+2)/2) * w/nf * 0.29 + ad: int((nf+1)/2) * w/nf * 0.29 + l: UNIT_1 + m: UNIT_1 + mult: UNIT_1 + nf: UNIT_1 + nrd: 0.29 / w + nrs: 0.29 / w + pd: 2*int((nf+1)/2) * (w/nf + 0.29) + ports: + b: VDD + d: o + g: i + s: VDD + ps: 2*int((nf+2)/2) * (w/nf + 0.29) + sa: UNIT_0 + sb: UNIT_0 + sd: UNIT_0 + w: UNIT_1 +name: SkyInv +ports: + VDD: ps,s + VSS: ns,s + i: ps,g + o: ps,d diff --git a/notebooks/data/sky130nm/inv.mag b/notebooks/data/sky130nm/inv.mag new file mode 100644 index 00000000..a02e00b6 --- /dev/null +++ b/notebooks/data/sky130nm/inv.mag @@ -0,0 +1,59 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1640640991 +<< nwell >> +rect 86 1006 122 1120 +rect 402 1006 438 1120 +<< pwell >> +rect 174 -918 208 -806 +<< viali >> +rect 32 1116 492 1152 +rect 118 -954 422 -916 +<< metal1 >> +rect -126 1152 650 1230 +rect -126 1116 32 1152 +rect 492 1116 650 1152 +rect -126 1090 650 1116 +rect 80 992 128 1090 +rect 196 204 206 1002 +rect 322 204 332 1002 +rect 396 992 444 1090 +rect 212 134 304 162 +rect 212 116 316 134 +rect 224 -336 316 116 +rect 300 -420 402 -404 +rect 300 -802 310 -420 +rect 392 -802 402 -420 +rect 168 -898 214 -802 +rect -126 -916 650 -898 +rect -126 -954 118 -916 +rect 422 -954 650 -916 +rect -126 -1038 650 -954 +<< via1 >> +rect 206 204 322 1002 +rect 310 -802 392 -420 +<< metal2 >> +rect 206 1002 322 1012 +rect 322 204 392 348 +rect 206 194 392 204 +rect 310 -420 392 194 +rect 310 -812 392 -802 +use sky130_fd_pr__nfet_g5v0d10v5_H9JWFY sky130_fd_pr__nfet_g5v0d10v5_H9JWFY_0 +timestamp 1639595562 +transform 1 0 270 0 1 -573 +box -278 -427 278 427 +use sky130_fd_pr__pfet_g5v0d10v5_5AEDG4 sky130_fd_pr__pfet_g5v0d10v5_5AEDG4_0 +timestamp 1639595562 +transform -1 0 262 0 1 567 +box -387 -662 387 662 +<< labels >> +rlabel metal1 -126 1152 650 1230 1 VDD +port 3 n default input +rlabel metal1 -126 -1038 650 -954 1 VSS +port 4 n +rlabel metal1 224 -336 316 134 1 in +port 1 n +rlabel metal2 310 -420 392 204 1 out +port 2 n +<< end >> diff --git a/notebooks/data/sky130nm/inv.pex.sch b/notebooks/data/sky130nm/inv.pex.sch new file mode 100644 index 00000000..cc207f35 --- /dev/null +++ b/notebooks/data/sky130nm/inv.pex.sch @@ -0,0 +1,21 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 560 -1020 600 -1020 { lab=VDD} +N 560 -890 600 -890 { lab=in} +N 560 -760 600 -760 { lab=VSS} +N 840 -890 880 -890 { lab=out} +C {devices/ipin.sym} 560 -890 0 0 {name=p1 lab=in} +C {devices/opin.sym} 880 -890 0 0 {name=p3 lab=out +} +C {devices/ipin.sym} 560 -1020 0 0 {name=p5 lab=VDD +} +C {devices/ipin.sym} 560 -760 0 0 {name=p6 lab=VSS} +C {devices/noconn.sym} 840 -890 0 0 {name=l1} +C {devices/noconn.sym} 600 -1020 0 1 {name=l2} +C {devices/noconn.sym} 600 -890 0 1 {name=l3} +C {devices/noconn.sym} 600 -760 0 1 {name=l4} +C {devices/code.sym} 660 -930 0 0 {name=s1 only_toplevel=false value=".include inv.pex.spice"} diff --git a/notebooks/data/sky130nm/inv.pex.sym b/notebooks/data/sky130nm/inv.pex.sym new file mode 100644 index 00000000..a48c5037 --- /dev/null +++ b/notebooks/data/sky130nm/inv.pex.sym @@ -0,0 +1,26 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1"} +V {} +S {} +E {} +L 4 -130 -30 130 -30 {} +L 4 -130 30 130 30 {} +L 4 -130 -30 -130 30 {} +L 4 130 -30 130 30 {} +L 4 -150 -20 -130 -20 {} +L 4 -150 0 -130 0 {} +L 4 130 -20 150 -20 {} +L 4 -150 20 -130 20 {} +B 5 -152.5 -22.5 -147.5 -17.5 {name=VDD dir=in } +B 5 -152.5 -2.5 -147.5 2.5 {name=in dir=in } +B 5 147.5 -22.5 152.5 -17.5 {name=out dir=out } +B 5 -152.5 17.5 -147.5 22.5 {name=VSS dir=in } +T {@symname} -72 -6 0 0 0.3 0.3 {} +T {@name} 135 -42 0 0 0.2 0.2 {} +T {VDD} -125 -24 0 0 0.2 0.2 {} +T {in} -125 -4 0 0 0.2 0.2 {} +T {out} 125 -24 0 1 0.2 0.2 {} +T {VSS} -125 16 0 0 0.2 0.2 {} diff --git a/notebooks/data/sky130nm/inv.sch b/notebooks/data/sky130nm/inv.sch new file mode 100644 index 00000000..7ff4ae84 --- /dev/null +++ b/notebooks/data/sky130nm/inv.sch @@ -0,0 +1,46 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +N 720 -800 720 -760 { lab=VSS} +N 720 -1020 720 -980 { lab=VDD} +N 720 -950 790 -950 { lab=VDD} +N 790 -1020 790 -950 { lab=VDD} +N 720 -830 790 -830 { lab=VSS} +N 790 -830 790 -760 { lab=VSS} +N 720 -890 720 -860 { lab=out} +N 660 -950 680 -950 { lab=in} +N 660 -890 660 -830 { lab=in} +N 660 -830 680 -830 { lab=in} +N 720 -890 880 -890 { lab=out} +N 720 -1020 790 -1020 { lab=VDD} +N 720 -760 790 -760 { lab=VSS} +N 660 -950 660 -890 { lab=in} +N 720 -920 720 -890 { lab=out} +N 560 -760 720 -760 { lab=VSS} +N 560 -890 660 -890 { lab=in} +N 560 -1020 720 -1020 { lab=VDD} +C {devices/ipin.sym} 560 -890 0 0 {name=p1 lab=in} +C {devices/opin.sym} 880 -890 0 0 {name=p2 lab=out +} +C {devices/ipin.sym} 560 -1020 0 0 {name=p3 lab=VDD +} +C {devices/ipin.sym} 560 -760 0 0 {name=p4 lab=VSS} +C {sky130_fd_pr/pfet_g5v0d10v5.sym} 700 -950 0 0 {name=M10 + +L=0.5 +W=8 +nf=2 mult=1 +model=pfet_g5v0d10v5 +spiceprefix=X +} +C {sky130_fd_pr/nfet_g5v0d10v5.sym} 700 -830 0 0 {name=M9 + +L=0.5 +W=2 +nf=1 mult=1 +model=nfet_g5v0d10v5 +spiceprefix=X +} diff --git a/notebooks/data/sky130nm/inv.sym b/notebooks/data/sky130nm/inv.sym new file mode 100644 index 00000000..710c1b36 --- /dev/null +++ b/notebooks/data/sky130nm/inv.sym @@ -0,0 +1,23 @@ +v {xschem version=3.0.0 file_version=1.2} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1" +} +T {@symname} -72 -6 0 0 0.3 0.3 {} +T {@name} 135 -42 0 0 0.2 0.2 {} +L 4 -130 -30 130 -30 {} +L 4 -130 30 130 30 {} +L 4 -130 -30 -130 30 {} +L 4 130 -30 130 30 {} +B 5 -152.5 -22.5 -147.5 -17.5 {name=VDD dir=in } +L 4 -150 -20 -130 -20 {} +T {VDD} -125 -24 0 0 0.2 0.2 {} +B 5 -152.5 -2.5 -147.5 2.5 {name=in dir=in } +L 4 -150 0 -130 0 {} +T {in} -125 -4 0 0 0.2 0.2 {} +B 5 147.5 -22.5 152.5 -17.5 {name=out dir=out } +L 4 130 -20 150 -20 {} +T {out} 125 -24 0 1 0.2 0.2 {} +B 5 -152.5 17.5 -147.5 22.5 {name=VSS dir=in } +L 4 -150 20 -130 20 {} +T {VSS} -125 16 0 0 0.2 0.2 {} diff --git a/notebooks/data/sky130nm/sky130_fd_pr__nfet_g5v0d10v5_H9JWFY.mag b/notebooks/data/sky130nm/sky130_fd_pr__nfet_g5v0d10v5_H9JWFY.mag new file mode 100644 index 00000000..817e34d4 --- /dev/null +++ b/notebooks/data/sky130nm/sky130_fd_pr__nfet_g5v0d10v5_H9JWFY.mag @@ -0,0 +1,70 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1639595562 +<< pwell >> +rect -278 -427 278 427 +<< mvnmos >> +rect -50 -231 50 169 +<< mvndiff >> +rect -108 157 -50 169 +rect -108 -219 -96 157 +rect -62 -219 -50 157 +rect -108 -231 -50 -219 +rect 50 157 108 169 +rect 50 -219 62 157 +rect 96 -219 108 157 +rect 50 -231 108 -219 +<< mvndiffc >> +rect -96 -219 -62 157 +rect 62 -219 96 157 +<< mvpsubdiff >> +rect -242 333 242 391 +rect -242 -333 -184 333 +rect 184 -333 242 333 +rect -242 -345 242 -333 +rect -242 -379 -134 -345 +rect 134 -379 242 -345 +rect -242 -391 242 -379 +<< mvpsubdiffcont >> +rect -134 -379 134 -345 +<< poly >> +rect -50 241 50 257 +rect -50 207 -34 241 +rect 34 207 50 241 +rect -50 169 50 207 +rect -50 -257 50 -231 +<< polycont >> +rect -34 207 34 241 +<< locali >> +rect -50 207 -34 241 +rect 34 207 50 241 +rect -96 157 -62 173 +rect -96 -235 -62 -219 +rect 62 157 96 173 +rect 62 -235 96 -219 +rect -150 -379 -134 -345 +rect 134 -379 150 -345 +<< viali >> +rect -34 207 34 241 +rect -96 -219 -62 157 +rect 62 -219 96 157 +<< metal1 >> +rect -46 241 46 247 +rect -46 207 -34 241 +rect 34 207 46 241 +rect -46 201 46 207 +rect -102 157 -56 169 +rect -102 -219 -96 157 +rect -62 -219 -56 157 +rect -102 -231 -56 -219 +rect 56 157 102 169 +rect 56 -219 62 157 +rect 96 -219 102 157 +rect 56 -231 102 -219 +<< properties >> +string gencell sky130_fd_pr__nfet_g5v0d10v5 +string FIXED_BBOX -213 -362 213 362 +string parameters w 2 l 0.50 m 1 nf 1 diffcov 100 polycov 100 guard 1 glc 0 grc 0 gtc 0 gbc 1 tbcov 100 rlcov 100 topc 1 botc 0 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt sky130_fd_bs_flash__special_sonosfet_star sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt sky130_fd_pr__nfet_03v3_nvt} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0 +string library sky130 +<< end >> diff --git a/notebooks/data/sky130nm/sky130_fd_pr__pfet_g5v0d10v5_5AEDG4.mag b/notebooks/data/sky130nm/sky130_fd_pr__pfet_g5v0d10v5_5AEDG4.mag new file mode 100644 index 00000000..e87fb0b5 --- /dev/null +++ b/notebooks/data/sky130nm/sky130_fd_pr__pfet_g5v0d10v5_5AEDG4.mag @@ -0,0 +1,96 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1639595562 +<< nwell >> +rect -387 -662 387 662 +<< mvpmos >> +rect -129 -364 -29 436 +rect 29 -364 129 436 +<< mvpdiff >> +rect -187 424 -129 436 +rect -187 -352 -175 424 +rect -141 -352 -129 424 +rect -187 -364 -129 -352 +rect -29 424 29 436 +rect -29 -352 -17 424 +rect 17 -352 29 424 +rect -29 -364 29 -352 +rect 129 424 187 436 +rect 129 -352 141 424 +rect 175 -352 187 424 +rect 129 -364 187 -352 +<< mvpdiffc >> +rect -175 -352 -141 424 +rect -17 -352 17 424 +rect 141 -352 175 424 +<< mvnsubdiff >> +rect -321 584 321 596 +rect -321 550 -213 584 +rect 213 550 321 584 +rect -321 538 321 550 +rect -321 -538 -263 538 +rect 263 -538 321 538 +rect -321 -596 321 -538 +<< mvnsubdiffcont >> +rect -213 550 213 584 +<< poly >> +rect -129 436 -29 462 +rect 29 436 129 462 +rect -129 -411 -29 -364 +rect -129 -445 -113 -411 +rect -45 -445 -29 -411 +rect -129 -461 -29 -445 +rect 29 -411 129 -364 +rect 29 -445 45 -411 +rect 113 -445 129 -411 +rect 29 -461 129 -445 +<< polycont >> +rect -113 -445 -45 -411 +rect 45 -445 113 -411 +<< locali >> +rect -229 550 -213 584 +rect 213 550 229 584 +rect -175 424 -141 440 +rect -175 -368 -141 -352 +rect -17 424 17 440 +rect -17 -368 17 -352 +rect 141 424 175 440 +rect 141 -368 175 -352 +rect -129 -445 -113 -411 +rect -45 -445 -29 -411 +rect 29 -445 45 -411 +rect 113 -445 129 -411 +<< viali >> +rect -175 -352 -141 424 +rect -17 -352 17 424 +rect 141 -352 175 424 +rect -113 -445 -45 -411 +rect 45 -445 113 -411 +<< metal1 >> +rect -181 424 -135 436 +rect -181 -352 -175 424 +rect -141 -352 -135 424 +rect -181 -364 -135 -352 +rect -23 424 23 436 +rect -23 -352 -17 424 +rect 17 -352 23 424 +rect -23 -364 23 -352 +rect 135 424 181 436 +rect 135 -352 141 424 +rect 175 -352 181 424 +rect 135 -364 181 -352 +rect -125 -411 -33 -405 +rect -125 -445 -113 -411 +rect -45 -445 -33 -411 +rect -125 -451 -33 -445 +rect 33 -411 125 -405 +rect 33 -445 45 -411 +rect 113 -445 125 -411 +rect 33 -451 125 -445 +<< properties >> +string gencell sky130_fd_pr__pfet_g5v0d10v5 +string FIXED_BBOX -292 -567 292 567 +string parameters w 4 l 0.50 m 1 nf 2 diffcov 100 polycov 100 guard 1 glc 0 grc 0 gtc 1 gbc 0 tbcov 100 rlcov 100 topc 0 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 compatible {sky130_fd_pr__pfet_01v8 sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt sky130_fd_pr__pfet_g5v0d10v5} full_metal 0 viasrc 100 viadrn 100 viagate 100 viagb 0 viagr 0 viagl 0 viagt 0 +string library sky130 +<< end >> diff --git a/notebooks/data/sky130nm/tb_inv.sch b/notebooks/data/sky130nm/tb_inv.sch new file mode 100644 index 00000000..f79138c4 --- /dev/null +++ b/notebooks/data/sky130nm/tb_inv.sch @@ -0,0 +1,78 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {(c) 2021 Harald Pretl, JKU, IIC + +Inverter Testbench + +Here a simple inverter (cell "inv") is instantiated as a symbol, and this +can be simulated.} 140 -690 0 0 0.4 0.4 {} +N 240 -100 240 -40 { lab=GND} +N 240 -40 360 -40 { lab=GND} +N 360 -100 360 -40 { lab=GND} +N 360 -200 360 -160 { lab=in} +N 240 -380 240 -160 { lab=vdd_hi} +N 360 -40 600 -40 { lab=GND} +N 360 -200 620 -200 { lab=in} +N 600 -180 620 -180 { lab=GND} +N 600 -180 600 -40 { lab=GND} +N 600 -220 620 -220 { lab=vdd_hi} +N 600 -380 600 -220 { lab=vdd_hi} +N 240 -380 600 -380 { lab=vdd_hi} +N 240 -40 240 -20 { lab=GND} +N 600 -40 1020 -40 { lab=GND} +N 1020 -100 1020 -40 { lab=GND} +N 1020 -220 1020 -160 { lab=out} +N 920 -220 1020 -220 { lab=out} +C {devices/code.sym} -230 -190 0 0 {name=TT_MODELS +only_toplevel=true +format="tcleval( @value )" +value="** manual skywater pdks install (with patches applied) +* .lib \\\\$::SKYWATER_MODELS\\\\/models/sky130.lib.spice tt + +** opencircuitdesign pdks install +.lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice.tt.red tt + +.param mc_mm_switch=0 +.param mc_pr_switch=0 +" +spice_ignore=false} +C {devices/launcher.sym} -150 -30 0 0 {name=h2 +descr="Simulate" +tclcommand="xschem netlist; xschem simulate"} +C {devices/vsource.sym} 240 -130 0 0 {name=V2 value=5 +} +C {devices/lab_wire.sym} 310 -380 0 0 {name=l2 lab=vdd_hi} +C {devices/code_shown.sym} -250 -470 0 0 {name=NGSPICE +only_toplevel=true +value=" +.control +set noaskquit +set filetype=ascii +save all + +op +tran 0.1n 1u + +write tb_inv.raw +exit + +.endc +"} +C {devices/lab_wire.sym} 400 -200 0 0 {name=l3 lab=in} +C {devices/vsource.sym} 360 -130 0 0 {name=V5 +value1="dc 5 " +value="dc 5 pulse 5 0 0 1n 1n 0.05u 0.1u"} +C {inv.sym} 770 -200 0 0 {name=x1} +C {devices/gnd.sym} 240 -20 0 0 {name=l1 lab=GND} +C {devices/capa.sym} 1020 -130 0 0 {name=C1 +m=1 +value=10f + +footprint=1206 +device="ceramic capacitor"} +C {devices/lab_wire.sym} 990 -220 0 0 {name=l4 lab=out +} diff --git a/notebooks/data/sky130nm/tb_inv_pex.sch b/notebooks/data/sky130nm/tb_inv_pex.sch new file mode 100644 index 00000000..d1b9c769 --- /dev/null +++ b/notebooks/data/sky130nm/tb_inv_pex.sch @@ -0,0 +1,78 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {(c) 2021 Harald Pretl, JKU, IIC + +Inverter Testbench + +Here a simple inverter (cell "inv") is instantiated as a symbol, and this +can be simulated.} 140 -690 0 0 0.4 0.4 {} +N 240 -100 240 -40 { lab=GND} +N 240 -40 360 -40 { lab=GND} +N 360 -100 360 -40 { lab=GND} +N 360 -200 360 -160 { lab=in} +N 240 -380 240 -160 { lab=vdd_hi} +N 360 -40 600 -40 { lab=GND} +N 360 -200 620 -200 { lab=in} +N 600 -180 620 -180 { lab=GND} +N 600 -180 600 -40 { lab=GND} +N 600 -220 620 -220 { lab=vdd_hi} +N 600 -380 600 -220 { lab=vdd_hi} +N 240 -380 600 -380 { lab=vdd_hi} +N 240 -40 240 -20 { lab=GND} +N 600 -40 1020 -40 { lab=GND} +N 1020 -100 1020 -40 { lab=GND} +N 1020 -220 1020 -160 { lab=out} +N 920 -220 1020 -220 { lab=out} +C {devices/code.sym} -230 -190 0 0 {name=TT_MODELS +only_toplevel=true +format="tcleval( @value )" +value="** manual skywater pdks install (with patches applied) +* .lib \\\\$::SKYWATER_MODELS\\\\/models/sky130.lib.spice tt + +** opencircuitdesign pdks install +.lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice.tt.red tt + +.param mc_mm_switch=0 +.param mc_pr_switch=0 +" +spice_ignore=false} +C {devices/launcher.sym} -150 -30 0 0 {name=h2 +descr="Simulate" +tclcommand="xschem netlist; xschem simulate"} +C {devices/vsource.sym} 240 -130 0 0 {name=V2 value=5 +} +C {devices/lab_wire.sym} 310 -380 0 0 {name=l2 lab=vdd_hi} +C {devices/code_shown.sym} -250 -470 0 0 {name=NGSPICE +only_toplevel=true +value=" +.control +set noaskquit +set filetype=ascii +save all + +op +tran 0.1n 1u + +write tb_inv.raw +exit + +.endc +"} +C {devices/lab_wire.sym} 400 -200 0 0 {name=l3 lab=in} +C {devices/vsource.sym} 360 -130 0 0 {name=V5 +value1="dc 5 " +value="dc 5 pulse 5 0 0 1n 1n 0.05u 0.1u"} +C {inv.pex.sym} 770 -200 0 0 {name=x1} +C {devices/gnd.sym} 240 -20 0 0 {name=l1 lab=GND} +C {devices/capa.sym} 1020 -130 0 0 {name=C1 +m=1 +value=10f + +footprint=1206 +device="ceramic capacitor"} +C {devices/lab_wire.sym} 990 -220 0 0 {name=l4 lab=out +} diff --git a/notebooks/data/sky130nm/tb_most.sch b/notebooks/data/sky130nm/tb_most.sch new file mode 100644 index 00000000..d2ae00a6 --- /dev/null +++ b/notebooks/data/sky130nm/tb_most.sch @@ -0,0 +1,106 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {(c) 2021 Harald Pretl, JKU, IIC + +MOSFET Testbench + +Use this to explore the dc and ac behavior of the various MOSFET devices. + +CTRL-click on "Simulate" to create netlist and start the simulation.} 100 -720 0 0 0.4 0.4 {} +N 240 -100 240 -40 { lab=GND} +N 240 -40 560 -40 { lab=GND} +N 120 -100 120 -40 { lab=GND} +N 120 -40 240 -40 { lab=GND} +N 710 -40 900 -40 { lab=GND} +N 560 -200 630 -200 { lab=GND} +N 560 -170 560 -40 { lab=GND} +N 240 -200 240 -160 { lab=vgs} +N 240 -200 520 -200 { lab=vgs} +N 120 -300 120 -160 { lab=vds} +N 120 -300 560 -300 { lab=vds} +N 560 -420 560 -300 { lab=vds} +N 900 -420 900 -380 { lab=vds} +N 560 -40 630 -40 { lab=GND} +N 560 -420 820 -420 { lab=vds} +N 760 -420 760 -380 { lab=vds} +N 630 -40 710 -40 { lab=GND} +N 630 -200 640 -200 { lab=GND} +N 640 -200 640 -40 { lab=GND} +N 760 -320 760 -280 { lab=#net1} +N 760 -280 820 -280 { lab=#net1} +N 820 -350 820 -280 { lab=#net1} +N 820 -350 860 -350 { lab=#net1} +N 820 -420 900 -420 { lab=vds} +N 700 -330 720 -330 { lab=GND} +N 700 -330 700 -40 { lab=GND} +N 400 -370 400 -200 { lab=vgs} +N 400 -370 720 -370 { lab=vgs} +N 900 -350 1000 -350 { lab=vds} +N 1000 -420 1000 -350 { lab=vds} +N 900 -420 1000 -420 { lab=vds} +N 560 -300 560 -290 { lab=vds} +N 900 -260 900 -40 { lab=GND} +C {devices/code.sym} -230 -190 0 0 {name=TT_MODELS +only_toplevel=true +format="tcleval( @value )" +value="** manual skywater pdks install (with patches applied) +* .lib \\\\$::SKYWATER_MODELS\\\\/models/sky130.lib.spice tt + +** opencircuitdesign pdks install +.lib \\\\$::SKYWATER_MODELS\\\\/sky130.lib.spice.tt.red tt + +.param mc_mm_switch=0 +.param mc_pr_switch=0 +" +spice_ignore=false} +C {devices/launcher.sym} -150 -30 0 0 {name=h2 +descr="Simulate" +tclcommand="xschem netlist; xschem simulate"} +C {devices/vsource.sym} 240 -130 0 0 {name=Vg value=5 +} +C {devices/code_shown.sym} -240 -590 0 0 {name=NGSPICE only_toplevel=true value=" +.control + +set noaskquit +set filetype=ascii +save all + +op +dc Vd 0 5 0.01 Vg 0 5 1 + +write tb_most.raw + +plot i(Vnid) +plot i(Vpid) + +* exit + +.endc +"} +C {devices/vsource.sym} 120 -130 0 0 {name=Vd + value=5 +} +C {sky130_fd_pr/nfet_g5v0d10v5.sym} 540 -200 0 0 {name=M1 +L=0.5 +W=5 +nf=1 mult=1 +model=nfet_g5v0d10v5 +spiceprefix=X +} +C {sky130_fd_pr/pfet_g5v0d10v5.sym} 880 -350 0 0 {name=M9 +L=0.5 +W=5 +nf=1 mult=1 +model=pfet_g5v0d10v5 +spiceprefix=X +} +C {devices/lab_wire.sym} 470 -200 0 0 {name=l2 lab=vgs} +C {devices/lab_wire.sym} 470 -300 0 0 {name=l3 lab=vds} +C {devices/vcvs.sym} 760 -350 0 0 {name=E1 value=1} +C {devices/gnd.sym} 160 -40 0 0 {name=l4 lab=GND} +C {devices/ammeter.sym} 900 -290 0 0 {name=Vpid} +C {devices/ammeter.sym} 560 -260 0 0 {name=Vnid} diff --git a/pyproject.toml b/pyproject.toml index 4410b861..400753d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,6 +82,11 @@ gmsh = [ "shapely", "meshwell>=1.0.7,<=1.1" ] +hdl21 = [ + "hdl21>=6.0.0,<7.0.0", + "vlsir>=6.0.0", + "sky130-hdl21>=6.0.0" +] klayout = [ "klayout", "pyvis<=0.3.1" @@ -105,6 +110,9 @@ schematic = [ "bokeh", "natsort" ] +sky130 = [ + "sky130 @ git+https://github.com/daquintero/skywater130.git@latest_pdk" +] tidy3d = [ "tidy3d>=2.5.2,<2.7", "meshio", From 0b450e445d3ac04d9781e8e404560e4314061c32 Mon Sep 17 00:00:00 2001 From: daquintero Date: Sun, 2 Jun 2024 18:43:18 +0200 Subject: [PATCH 2/7] :wrench: Cleanup print statements and ready for draft review --- gplugins/hdl21/__init__.py | 3 - gplugins/hdl21/netlist.py | 121 +- gplugins/schematic_editor/circuitviz.py | 3 - gplugins/schematic_editor/schematic_editor.py | 6 - ...ky130nm_inverter_schematic_to_layout.ipynb | 1762 ++++++++++++++++- .../example_inverter_auto.layout.yaml | 4 +- .../sky130nm/example_inverter_auto.schem.yaml | 6 +- 7 files changed, 1748 insertions(+), 157 deletions(-) diff --git a/gplugins/hdl21/__init__.py b/gplugins/hdl21/__init__.py index 43b6a1d3..b11624c0 100644 --- a/gplugins/hdl21/__init__.py +++ b/gplugins/hdl21/__init__.py @@ -1,5 +1,2 @@ from .netlist import * -<<<<<<< HEAD from .sky130 import * -======= ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) diff --git a/gplugins/hdl21/netlist.py b/gplugins/hdl21/netlist.py index 46ce3c8f..2dbbfd9e 100644 --- a/gplugins/hdl21/netlist.py +++ b/gplugins/hdl21/netlist.py @@ -6,35 +6,15 @@ import yaml __all__ = [ -<<<<<<< HEAD -<<<<<<< HEAD 'ParsedProtoVLSIR', 'generate_raw_netlist_dict_from_module', 'generate_raw_yaml_from_module' -======= - "ParsedProtoVLSIR", - "parse_module_to_proto_dict", - "generate_raw_netlist_from_module", - "generate_raw_yaml_from_module", ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= - "ParsedProtoVLSIR", - "generate_raw_netlist_dict_from_module", - "generate_raw_yaml_from_module", ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) ] ParsedProtoVLSIR = dict -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) def _parse_module_to_proto_dict(module: h.module) -> ParsedProtoVLSIR: -======= -def parse_module_to_proto_dict(module: h.module) -> ParsedProtoVLSIR: ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) """ Parse a hdl21 module object into a dictionary with the same structure as the proto VLSIR format. """ @@ -92,40 +72,16 @@ def _parse_connections(proto_dict: ParsedProtoVLSIR) -> dict: target_signal = connection["target"][0]["sig"] connection_key = f"{instance_name},{portname}" # Find the target instance and port -<<<<<<< HEAD -<<<<<<< HEAD target_instance_port = _find_target_instance_port(proto_dict, target_signal, instance_name) -======= - target_instance_port = find_target_instance_port( - proto_dict, target_signal, instance_name - ) ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= - target_instance_port = _find_target_instance_port( - proto_dict, target_signal, instance_name - ) ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) if target_instance_port: connections[connection_key] = target_instance_port return connections -<<<<<<< HEAD -<<<<<<< HEAD def _find_target_instance_port(proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name): -======= -def find_target_instance_port( - proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name -): ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= -def _find_target_instance_port( - proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name -): ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) """ Find the target instance and port of the target signal in the proto_dict. """ @@ -158,23 +114,10 @@ def _generate_top_level_connections(proto_dict: ParsedProtoVLSIR): top_level_connections = {} # Iterate over the top-level module ports -<<<<<<< HEAD -<<<<<<< HEAD for module in proto_dict.get('modules', []): for port in module.get('ports', []): port_signal = port['signal'] -======= - for module in proto_dict.get("modules", []): - for port in module.get("ports", []): - port_signal = port["signal"] ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) connection = _find_port_connection(proto_dict, port_signal) -======= - for module in proto_dict.get("modules", []): - for port in module.get("ports", []): - port_signal = port["signal"] - connection = find_port_connection(proto_dict, port_signal) ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) if connection: top_level_connections[port_signal] = connection @@ -205,8 +148,7 @@ def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR): for instance in module.get("instances", []): instance_name = instance["name"] instance_info = { -<<<<<<< HEAD -<<<<<<< HEAD + 'component': _extract_component_name(instance), 'info': {}, 'settings': {} @@ -217,30 +159,6 @@ def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR): param_name = parameter['name'] param_value = _extract_parameter_value(parameter['value']) instance_info['settings'][param_name] = param_value -======= - "component": extract_component_name(instance), - "info": {}, - "settings": {}, - } - - # Extract parameters into the settings - for parameter in instance.get("parameters", []): - param_name = parameter["name"] - param_value = extract_parameter_value(parameter["value"]) - instance_info["settings"][param_name] = param_value ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= - "component": _extract_component_name(instance), - "info": {}, - "settings": {}, - } - - # Extract parameters into the settings - for parameter in instance.get("parameters", []): - param_name = parameter["name"] - param_value = _extract_parameter_value(parameter["value"]) - instance_info["settings"][param_name] = param_value ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) # Extract connections and add to settings instance_info["settings"]["ports"] = {} @@ -260,24 +178,10 @@ def _extract_component_name(instance): """ external_modules = instance.get("module", []) if external_modules: -<<<<<<< HEAD -<<<<<<< HEAD domain = external_modules[0].get('external', [{}])[0].get('domain', '') name = external_modules[0].get('external', [{}])[0].get('name', '') return f"{name}" return 'unknown_component' -======= - domain = external_modules[0].get("external", [{}])[0].get("domain", "") - name = external_modules[0].get("external", [{}])[0].get("name", "") - return f"{domain}_{name}" - return "unknown_component" ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= - domain = external_modules[0].get("external", [{}])[0].get("domain", "") - name = external_modules[0].get("external", [{}])[0].get("name", "") - return f"{name}" - return "unknown_component" ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) def _extract_parameter_value(value): @@ -304,31 +208,13 @@ def _generate_raw_netlist_dict_from_proto_dict(proto_dict: ParsedProtoVLSIR): raw_netlist_dict["name"] = proto_dict["modules"][0].get("name", "") # Generate instances information -<<<<<<< HEAD -<<<<<<< HEAD raw_netlist_dict['instances'] = _extract_instance_parameters(proto_dict) -======= - raw_netlist_dict["instances"] = _extract_instance_parameters(proto_dict) ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) # Generate connections raw_netlist_dict["connections"] = _parse_connections(proto_dict) # Generate top-level connections -<<<<<<< HEAD raw_netlist_dict['ports'] = _generate_top_level_connections(proto_dict) -======= - raw_netlist_dict["instances"] = extract_instance_parameters(proto_dict) - - # Generate connections - raw_netlist_dict["connections"] = parse_connections(proto_dict) - - # Generate top-level connections - raw_netlist_dict["ports"] = generate_top_level_connections(proto_dict) ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) -======= - raw_netlist_dict["ports"] = _generate_top_level_connections(proto_dict) ->>>>>>> a705eac ([pre-commit.ci] auto fixes from pre-commit.com hooks) return raw_netlist_dict @@ -347,9 +233,6 @@ def generate_raw_yaml_from_module(module: h.module): Generate a raw netlist yaml from a hdl21 module object which could be manually edited for specific instances related to the corresponding SPICE. """ -<<<<<<< HEAD + raw_netlist = generate_raw_netlist_dict_from_module(module) -======= - raw_netlist = generate_raw_netlist_from_module(module) ->>>>>>> 75a4e37 ([pre-commit.ci] auto fixes from pre-commit.com hooks) return yaml.dump(raw_netlist, default_flow_style=False) diff --git a/gplugins/schematic_editor/circuitviz.py b/gplugins/schematic_editor/circuitviz.py index 916ff120..4fff9ed6 100644 --- a/gplugins/schematic_editor/circuitviz.py +++ b/gplugins/schematic_editor/circuitviz.py @@ -455,7 +455,6 @@ def viz_netlist(netlist, instances, instance_size=20): for net in netlist.nets: p_in, p_out = net - print(port_coords) point1 = port_coords[p_in] point2 = port_coords[p_out] els += viz_connection(netlist, p_in, p_out, instance_size, point1, point2) @@ -467,7 +466,6 @@ def show_netlist( ) -> None: global data data["netlist"] = schematic - print(schematic) fig = bp.figure(width=800, height=500) app = viz_bk( schematic, @@ -476,7 +474,6 @@ def show_netlist( instance_size=50, netlist_filename=netlist_filename, ) - print(app) bio.show(app) diff --git a/gplugins/schematic_editor/schematic_editor.py b/gplugins/schematic_editor/schematic_editor.py index 46fa2dc6..8350efcc 100644 --- a/gplugins/schematic_editor/schematic_editor.py +++ b/gplugins/schematic_editor/schematic_editor.py @@ -270,12 +270,6 @@ def port_widget(self): return self._port_grid def visualize(self) -> None: - print("self.schematic") - print(self.schematic) - print("self.symbols") - print(self.symbols) - print("self.path") - print(self.path) circuitviz.show_netlist(self.schematic, self.symbols, self.path) self.on_instance_added.append(self._update_schematic_plot) diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb index 40582cf0..ce4a577b 100644 --- a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb +++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb @@ -42,10 +42,361 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32m2024-06-02 18:43:57.433\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mregister_cells_yaml\u001b[0m:\u001b[36m376\u001b[0m - \u001b[1mRegistered cell 'sample'\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:57.753\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpydantic._internal._fields\u001b[0m:\u001b[36mcollect_model_fields\u001b[0m:\u001b[36m186\u001b[0m - \u001b[33m\u001b[1mUserWarning: Field name \"schema\" shadows an attribute in parent \"BaseModel\"; \u001b[0m\n", + "env: BOKEH_ALLOW_WS_ORIGIN=*\n" + ] + }, + { + "data": { + "text/html": [ + " \n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "'use strict';\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + "const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " function drop(id) {\n", + " const view = Bokeh.index.get_by_id(id)\n", + " if (view != null) {\n", + " view.model.document.clear()\n", + " Bokeh.index.delete(view)\n", + " }\n", + " }\n", + "\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + "\n", + " // Clean up Bokeh references\n", + " if (id != null) {\n", + " drop(id)\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim()\n", + " drop(id)\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"
    \\n\"+\n", + " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", + " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", + " \"
\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded(error = null) {\n", + " const el = document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\");\n", + " if (el != null) {\n", + " const html = (() => {\n", + " if (typeof root.Bokeh === \"undefined\") {\n", + " if (error == null) {\n", + " return \"BokehJS is loading ...\";\n", + " } else {\n", + " return \"BokehJS failed to load.\";\n", + " }\n", + " } else {\n", + " const prefix = `BokehJS ${root.Bokeh.version}`;\n", + " if (error == null) {\n", + " return `${prefix} successfully loaded.`;\n", + " } else {\n", + " return `${prefix} encountered errors while loading and may not function as expected.`;\n", + " }\n", + " }\n", + " })();\n", + " el.innerHTML = html;\n", + "\n", + " if (error != null) {\n", + " const wrapper = document.createElement(\"div\");\n", + " wrapper.style.overflow = \"auto\";\n", + " wrapper.style.height = \"5em\";\n", + " wrapper.style.resize = \"vertical\";\n", + " const content = document.createElement(\"div\");\n", + " content.style.fontFamily = \"monospace\";\n", + " content.style.whiteSpace = \"pre-wrap\";\n", + " content.style.backgroundColor = \"rgb(255, 221, 221)\";\n", + " content.textContent = error.stack ?? error.toString();\n", + " wrapper.append(content);\n", + " el.append(wrapper);\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(() => display_loaded(error), 100);\n", + " }\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n", + " const css_urls = [];\n", + "\n", + " const inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {\n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if (root.Bokeh !== undefined || force === true) {\n", + " try {\n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + "\n", + " } catch (error) {display_loaded(error);throw error;\n", + " }if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import hdl21 as h\n", "import gdsfactory as gf\n", @@ -66,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "5", "metadata": {}, "outputs": [], @@ -76,7 +427,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "6", "metadata": {}, "outputs": [], @@ -107,10 +458,76 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "8", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "connections:\n", + " ns,g: ps,g\n", + " ns,s: ps,d\n", + " ps,d: ns,s\n", + " ps,g: ns,g\n", + "instances:\n", + " ns:\n", + " component: sky130_fd_pr__nfet_01v8\n", + " info: {}\n", + " settings:\n", + " As: int((nf+2)/2) * w/nf * 0.29\n", + " ad: int((nf+1)/2) * w/nf * 0.29\n", + " l: UNIT_1\n", + " m: UNIT_1\n", + " mult: UNIT_1\n", + " nf: UNIT_1\n", + " nrd: 0.29 / w\n", + " nrs: 0.29 / w\n", + " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", + " ports:\n", + " b: VSS\n", + " d: VSS\n", + " g: i\n", + " s: o\n", + " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", + " sa: UNIT_0\n", + " sb: UNIT_0\n", + " sd: UNIT_0\n", + " w: UNIT_1\n", + " ps:\n", + " component: sky130_fd_pr__pfet_01v8\n", + " info: {}\n", + " settings:\n", + " As: int((nf+2)/2) * w/nf * 0.29\n", + " ad: int((nf+1)/2) * w/nf * 0.29\n", + " l: UNIT_1\n", + " m: UNIT_1\n", + " mult: UNIT_1\n", + " nf: UNIT_1\n", + " nrd: 0.29 / w\n", + " nrs: 0.29 / w\n", + " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", + " ports:\n", + " b: VDD\n", + " d: o\n", + " g: i\n", + " s: VDD\n", + " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", + " sa: UNIT_0\n", + " sb: UNIT_0\n", + " sd: UNIT_0\n", + " w: UNIT_1\n", + "name: SkyInv\n", + "ports:\n", + " VDD: ps,s\n", + " VSS: ns,d\n", + " i: ps,g\n", + " o: ps,d\n", + "\n" + ] + } + ], "source": [ "example_inverter_manual_yaml = gph.generate_raw_yaml_from_module(\n", " SkyInv\n", @@ -120,7 +537,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "9", "metadata": {}, "outputs": [], @@ -201,10 +618,109 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "11", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mapping for sky130_fd_pr__pfet_01v8: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15\n", + "\u001b[32m2024-06-02 18:43:57.978\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15\u001b[0m:\u001b[36m1318\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n", + "Mapping for sky130_fd_pr__nfet_01v8: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15\n", + "\u001b[32m2024-06-02 18:43:57.994\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15\u001b[0m:\u001b[36m526\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:57.996\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.read.import_gds\u001b[0m:\u001b[36mimport_gds\u001b[0m:\u001b[36m56\u001b[0m - \u001b[33m\u001b[1mRuntimeWarning: Unsupported record in file.\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:57.999\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mget_symbol\u001b[0m:\u001b[36m438\u001b[0m - \u001b[33m\u001b[1mUserWarning: prefix is deprecated and will be removed soon. floorplan_with_block_letters\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:58.021\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.read.from_yaml\u001b[0m:\u001b[36mfrom_yaml\u001b[0m:\u001b[36m692\u001b[0m - \u001b[33m\u001b[1mUserWarning: prefix is deprecated and will be removed soon. _from_yaml\u001b[0m\n", + "layer (2, 0) not found\n", + "layer (0, 0) not found\n", + "layer (2, 0) not found\n", + "layer (0, 0) not found\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", + "[GDSTK] Record type NODE (0x15) is not supported.\n", + "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n" + ] + }, + { + "data": { + "application/vnd.bokehjs_exec.v0+json": "", + "text/html": [ + "" + ] + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "server_id": "2722e1325c3841dfacaf2de8a36ddbc3" + } + }, + "output_type": "display_data" + } + ], "source": [ "example_inverter_schematic_editor = gph.hdl21_module_to_schematic_editor(\n", " module=SkyInv,\n", @@ -215,10 +731,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "12", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32m2024-06-02 18:43:58.063\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpydantic.main\u001b[0m:\u001b[36mmodel_dump\u001b[0m:\u001b[36m314\u001b[0m - \u001b[33m\u001b[1mUserWarning: Pydantic serializer warnings:\n", + " Expected `str` but got `int` - serialized value may not be as expected\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:58.161\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36m_write_library\u001b[0m:\u001b[36m1933\u001b[0m - \u001b[33m\u001b[1mUserWarning: Component Unnamed_68ce16e9 has invalid transformations. Try component.flatten_offgrid_references() first.\u001b[0m\n", + "\u001b[32m2024-06-02 18:43:58.162\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36mplot_klayout\u001b[0m:\u001b[36m1645\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_68ce16e9'\u001b[0m\n" + ] + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "example_inverter_layout = \"data/sky130nm/example_inverter_auto.layout.yaml\"\n",
     "example_inverter_schematic_editor.instantiate_layout(example_inverter_layout, default_router=\"get_bundle\", default_cross_section=\"xs_metal1\")\n",
@@ -246,7 +793,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 8,
    "id": "14",
    "metadata": {},
    "outputs": [],
@@ -265,7 +812,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 9,
    "id": "16",
    "metadata": {},
    "outputs": [],
@@ -290,7 +837,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 10,
    "id": "18",
    "metadata": {},
    "outputs": [],
@@ -313,10 +860,31 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 11,
    "id": "20",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\u001b[32m'v \u001b[0m\u001b[32m{\u001b[0m\u001b[32mxschem \u001b[0m\u001b[32mversion\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m.0.0 \u001b[0m\u001b[32mfile_version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.2 \u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nG \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nK \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nV \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nS \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nE \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -800 720 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -1020 720 -980 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -950 790 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 790 -1020 790 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -830 790 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 790 -830 790 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -890 720 -860 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -950 680 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -890 660 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -830 680 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -890 880 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -1020 790 -1020 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -760 790 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -950 660 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -920 720 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -760 720 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -890 660 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -1020 720 -1020 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -890 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp1\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/opin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 880 -890 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp2\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -1020 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp3\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -760 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp4\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32msky130_fd_pr/pfet_g5v0d10v5.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 700 -950 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mM10\u001b[0m\u001b[32m\\n\\\u001b[0m\u001b[32mnL\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5\\\u001b[0m\u001b[32mnW\u001b[0m\u001b[32m=\u001b[0m\u001b[32m8\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnnf\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m \u001b[0m\u001b[32mmult\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnmodel\u001b[0m\u001b[32m=\u001b[0m\u001b[32mpfet_g5v0d10v5\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnspiceprefix\u001b[0m\u001b[32m=\u001b[0m\u001b[32mX\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32msky130_fd_pr/nfet_g5v0d10v5.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 700 -830 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mM9\u001b[0m\u001b[32m\\n\\\u001b[0m\u001b[32mnL\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5\\\u001b[0m\u001b[32mnW\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnnf\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m \u001b[0m\u001b[32mmult\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnmodel\u001b[0m\u001b[32m=\u001b[0m\u001b[32mnfet_g5v0d10v5\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnspiceprefix\u001b[0m\u001b[32m=\u001b[0m\u001b[32mX\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n'\u001b[0m"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "inverter_spice_text = read_file(inverter_spice_file)\n",
     "inverter_spice_text"
@@ -324,20 +892,1098 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 12,
    "id": "21",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\u001b[32m'\\n* Netlist generated with INTERCONNECT on Fri Dec 8 11:06:53 2023\\n\\n*\\n* Component pathname : compound_1\\n*\\n.subckt COMPOUND_1 PORT_1 PORT_2 PORT_3 PORT_4 PORT_5 PORT_6 PORT_7 PORT_8\\n        X_dc_1 PORT_1 PORT_2 N$1 N$3 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_dc_2 N$1 N$3 PORT_3 PORT_4 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_dc_3 PORT_5 PORT_7 N$11 N$13 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_1 N$8 N$13 N$11 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_2 N$8 PORT_6 PORT_8 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n.ends COMPOUND_1\\n\\n*\\n* MAIN CELL: Component pathname : root_element\\n*\\n        .MODEL ebeam_dc_te1550 \u001b[0m\u001b[32mradius\u001b[0m\u001b[32m=\u001b[0m\u001b[32m5u\u001b[0m\u001b[32m \u001b[0m\u001b[32mgap\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.2u \u001b[0m\u001b[32mnote\u001b[0m\u001b[32m=\".- The current model only supports \"coupling_length\" as an input parameter..- The other parameters\\n        \u001b[0m\u001b[32m(\u001b[0m\u001b[32mi.e., \"wg_width\", \"gap\", \"radius\"\u001b[0m\u001b[32m)\u001b[0m\u001b[32m are now fixed but will be parameterized in the future.\"\\n        + \u001b[0m\u001b[32mwg_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL ebeam_gc_te1550 \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_width%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL ebeam_y_1550 \u001b[0m\u001b[32mModel_Version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"2016\u001b[0m\u001b[32m/04/07\" \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_uniformity_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_width%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL wg_heater \u001b[0m\u001b[32mwg_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.0001 \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        X_COMPOUND_1 N$1 N$2 N$5 N$4 N$7 N$10 N$9 N$8 COMPOUND_1 \u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m \u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_1 N$6 N$1 N$2 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_2 N$3 N$4 N$5 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_1 N$17 N$6 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_2 N$18 N$3 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_3 N$14 N$7 N$9 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_4 N$16 N$8 N$10 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_wg_heater_1 N$12 N$11 N$13 N$15 wg_heater \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_wg_heater_2 N$11 N$12 N$16 N$14 wg_heater \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_3 N$19 N$13 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_4 N$20 N$15 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n*\\n.end\\n\\n*# ebeam_dc_te1550 opt_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_3\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_4\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# ebeam_gc_te1550 opt_fiber\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_wg\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# ebeam_y_1550 opt_a1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_b1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_b\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# wg_heater ele_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mele\u001b[0m\u001b[32m)\u001b[0m\u001b[32m ele_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mele\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n'\u001b[0m"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "spice.netlist_text"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 13,
    "id": "22",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\u001b[1m[\u001b[0m\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'subckt'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'COMPOUND_1'\u001b[0m,\n",
+       "        \u001b[32m'ports'\u001b[0m: \u001b[1m[\u001b[0m\u001b[32m'PORT_1'\u001b[0m, \u001b[32m'PORT_2'\u001b[0m, \u001b[32m'PORT_3'\u001b[0m, \u001b[32m'PORT_4'\u001b[0m, \u001b[32m'PORT_5'\u001b[0m, \u001b[32m'PORT_6'\u001b[0m, \u001b[32m'PORT_7'\u001b[0m, \u001b[32m'PORT_8'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_1'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_2'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_2'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_3'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_4'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_3'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_5'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_7'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_2'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_6'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_8'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mradius\u001b[0m\u001b[32m=\u001b[0m\u001b[32m5u\u001b[0m\u001b[32m \u001b[0m\u001b[32mgap\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.2u \u001b[0m\u001b[32mnote\u001b[0m\u001b[32m=\".- The current model only supports \"coupling_length\" as an input parameter..- The other parameters'\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'future.\"'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32m(\u001b[0m\u001b[32mi.e.,'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"wg_width\",'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"gap\",'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"radius\"\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'are'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'now'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'fixed'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'but'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'will'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'be'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'parameterized'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mModel_Version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"2016\u001b[0m\u001b[32m/04/07\" \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m, \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m, \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mwg_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.0001 \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'COMPOUND_1'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_COMPOUND_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$2'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$5'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$4'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$7'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$10'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$9'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$6'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$2'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_2'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$4'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$5'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$17'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$6'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_2'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$18'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_3'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$14'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$7'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$9'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_4'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$16'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$10'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_wg_heater_1'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$12'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$15'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_wg_heater_2'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$12'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$16'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$14'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_3'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$19'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_4'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$20'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$15'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m,\n",
+       "    \u001b[1m{\u001b[0m\n",
+       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "        \u001b[32m'name'\u001b[0m: \u001b[32m'.end'\u001b[0m,\n",
+       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'.end'\u001b[0m,\n",
+       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
+       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
+       "            \u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
+       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
+       "        \u001b[1m]\u001b[0m\n",
+       "    \u001b[1m}\u001b[0m\n",
+       "\u001b[1m]\u001b[0m"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "elements, _, _ = spice.parse_netlist_and_extract_elements(netlist_text=spice.netlist_text, spice_type=\"lumerical\")\n",
     "elements"
@@ -353,10 +1999,82 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 14,
    "id": "24",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Warning: Line skipped due to unexpected format: C {devices/opin.sym} 880 -890 0 0 {name=p2 lab=out\n",
+      "Warning: Line skipped due to unexpected format: C {devices/ipin.sym} 560 -1020 0 0 {name=p3 lab=VDD\n",
+      "Warning: Line skipped due to unexpected format: C {sky130_fd_pr/pfet_g5v0d10v5.sym} 700 -950 0 0 {name=M10\n",
+      "Warning: Line skipped due to unexpected format: C {sky130_fd_pr/nfet_g5v0d10v5.sym} 700 -830 0 0 {name=M9\n"
+     ]
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\n",
+       "\u001b[1m(\u001b[0m\n",
+       "    \u001b[1m[\u001b[0m\n",
+       "        \u001b[1m{\u001b[0m\n",
+       "            \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "            \u001b[32m'component_type'\u001b[0m: \u001b[32m'devices/ipin.sym'\u001b[0m,\n",
+       "            \u001b[32m'position'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[32m'name'\u001b[0m: \u001b[32m'p1'\u001b[0m,\n",
+       "            \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m,\n",
+       "            \u001b[32m'settings'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'p1'\u001b[0m, \u001b[32m'lab'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\n",
+       "            \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
+       "            \u001b[32m'component_type'\u001b[0m: \u001b[32m'devices/ipin.sym'\u001b[0m,\n",
+       "            \u001b[32m'position'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "            \u001b[32m'name'\u001b[0m: \u001b[32m'p4'\u001b[0m,\n",
+       "            \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m,\n",
+       "            \u001b[32m'settings'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'p4'\u001b[0m, \u001b[32m'lab'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "        \u001b[1m}\u001b[0m\n",
+       "    \u001b[1m]\u001b[0m,\n",
+       "    \u001b[1m[\u001b[0m\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-800'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-980'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-860'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'680'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'680'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'880'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-920'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
+       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m\n",
+       "    \u001b[1m]\u001b[0m,\n",
+       "    \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n",
+       "\u001b[1m)\u001b[0m"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "inverter_netlist_elements, inverter_netlist_connections, _ = spice.parse_netlist_and_extract_elements(netlist_text=inverter_spice_text, spice_type=\"xschem\")\n",
     "inverter_netlist_elements, inverter_netlist_connections, _"
diff --git a/notebooks/data/sky130nm/example_inverter_auto.layout.yaml b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
index 8ed11bb7..923f7178 100644
--- a/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
+++ b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
@@ -8,9 +8,9 @@ instances:
     component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15
     settings: {}
 placements:
-  ps: {x: null, y: null, port: null, rotation: 0, dx: -1.4737477228631808, dy: -8.228251743803634,
+  ps: {x: null, y: null, port: null, rotation: 0.0, dx: -1.4737477228631808, dy: -8.228251743803634,
     mirror: null}
-  ns: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null}
+  ns: {x: null, y: null, port: null, rotation: 0.0, dx: null, dy: null, mirror: null}
 routes:
   r0:
     routing_strategy: get_bundle
diff --git a/notebooks/data/sky130nm/example_inverter_auto.schem.yaml b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
index b2c9cc05..5a11cd55 100644
--- a/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
+++ b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
@@ -1,3 +1,4 @@
+schema: null
 instances:
   ps:
     component: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15
@@ -6,8 +7,9 @@ instances:
     component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15
     settings: {}
 schematic_placements:
-  ps: {rotation: 0, dx: -1.4737477228631808, dy: -8.228251743803634}
-  ns: {rotation: 0}
+  ps: {x: null, y: null, port: null, rotation: 0.0, dx: -1.4737477228631808, dy: -8.228251743803634,
+    mirror: null}
+  ns: {x: null, y: null, port: null, rotation: 0.0, dx: null, dy: null, mirror: null}
 nets:
 - ['ps,DRAIN', 'ns,SOURCE']
 - ['ps,GATE', 'ns,GATE']

From 52757f79d128d9ff5b16f5e3c8eed2d7fa40bc7e Mon Sep 17 00:00:00 2001
From: daquintero 
Date: Sun, 2 Jun 2024 18:51:45 +0200
Subject: [PATCH 3/7] :wrench: Get precommit to pass

---
 gplugins/hdl21/__init__.py                    |   21 +-
 gplugins/hdl21/netlist.py                     |   46 +-
 gplugins/hdl21/sky130.py                      |    5 +-
 ...ky130nm_inverter_schematic_to_layout.ipynb | 1762 +----------------
 4 files changed, 62 insertions(+), 1772 deletions(-)

diff --git a/gplugins/hdl21/__init__.py b/gplugins/hdl21/__init__.py
index b11624c0..8f04598f 100644
--- a/gplugins/hdl21/__init__.py
+++ b/gplugins/hdl21/__init__.py
@@ -1,2 +1,19 @@
-from .netlist import *
-from .sky130 import *
+from .netlist import (
+    ParsedProtoVLSIR,
+    generate_raw_netlist_dict_from_module,
+    generate_raw_yaml_from_module,
+)
+from .sky130 import (
+    filter_port,
+    find_most_relevant_gds,
+    hdl21_module_to_schematic_editor,
+)
+
+__all__ = [
+    "filter_port",
+    "find_most_relevant_gds",
+    "hdl21_module_to_schematic_editor",
+    "generate_raw_yaml_from_module",
+    "generate_raw_netlist_dict_from_module",
+    "ParsedProtoVLSIR",
+]
diff --git a/gplugins/hdl21/netlist.py b/gplugins/hdl21/netlist.py
index 2dbbfd9e..e701a4c4 100644
--- a/gplugins/hdl21/netlist.py
+++ b/gplugins/hdl21/netlist.py
@@ -5,12 +5,6 @@
 import hdl21 as h
 import yaml
 
-__all__ = [
-    'ParsedProtoVLSIR',
-    'generate_raw_netlist_dict_from_module',
-    'generate_raw_yaml_from_module'
-]
-
 ParsedProtoVLSIR = dict
 
 
@@ -72,16 +66,18 @@ def _parse_connections(proto_dict: ParsedProtoVLSIR) -> dict:
                 target_signal = connection["target"][0]["sig"]
                 connection_key = f"{instance_name},{portname}"
                 # Find the target instance and port
-                target_instance_port = _find_target_instance_port(proto_dict, target_signal, instance_name)
+                target_instance_port = _find_target_instance_port(
+                    proto_dict, target_signal, instance_name
+                )
                 if target_instance_port:
                     connections[connection_key] = target_instance_port
 
     return connections
 
 
-def _find_target_instance_port(proto_dict: ParsedProtoVLSIR,
-                               target_signal,
-                               current_instance_name):
+def _find_target_instance_port(
+    proto_dict: ParsedProtoVLSIR, target_signal, current_instance_name
+):
     """
     Find the target instance and port of the target signal in the proto_dict.
     """
@@ -114,9 +110,9 @@ def _generate_top_level_connections(proto_dict: ParsedProtoVLSIR):
     top_level_connections = {}
 
     # Iterate over the top-level module ports
-    for module in proto_dict.get('modules', []):
-        for port in module.get('ports', []):
-            port_signal = port['signal']
+    for module in proto_dict.get("modules", []):
+        for port in module.get("ports", []):
+            port_signal = port["signal"]
             connection = _find_port_connection(proto_dict, port_signal)
             if connection:
                 top_level_connections[port_signal] = connection
@@ -148,17 +144,16 @@ def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR):
         for instance in module.get("instances", []):
             instance_name = instance["name"]
             instance_info = {
-
-                'component': _extract_component_name(instance),
-                'info': {},
-                'settings': {}
+                "component": _extract_component_name(instance),
+                "info": {},
+                "settings": {},
             }
 
             # Extract parameters into the settings
-            for parameter in instance.get('parameters', []):
-                param_name = parameter['name']
-                param_value = _extract_parameter_value(parameter['value'])
-                instance_info['settings'][param_name] = param_value
+            for parameter in instance.get("parameters", []):
+                param_name = parameter["name"]
+                param_value = _extract_parameter_value(parameter["value"])
+                instance_info["settings"][param_name] = param_value
 
             # Extract connections and add to settings
             instance_info["settings"]["ports"] = {}
@@ -178,10 +173,9 @@ def _extract_component_name(instance):
     """
     external_modules = instance.get("module", [])
     if external_modules:
-        domain = external_modules[0].get('external', [{}])[0].get('domain', '')
-        name = external_modules[0].get('external', [{}])[0].get('name', '')
+        name = external_modules[0].get("external", [{}])[0].get("name", "")
         return f"{name}"
-    return 'unknown_component'
+    return "unknown_component"
 
 
 def _extract_parameter_value(value):
@@ -208,13 +202,13 @@ def _generate_raw_netlist_dict_from_proto_dict(proto_dict: ParsedProtoVLSIR):
         raw_netlist_dict["name"] = proto_dict["modules"][0].get("name", "")
 
     # Generate instances information
-    raw_netlist_dict['instances'] = _extract_instance_parameters(proto_dict)
+    raw_netlist_dict["instances"] = _extract_instance_parameters(proto_dict)
 
     # Generate connections
     raw_netlist_dict["connections"] = _parse_connections(proto_dict)
 
     # Generate top-level connections
-    raw_netlist_dict['ports'] = _generate_top_level_connections(proto_dict)
+    raw_netlist_dict["ports"] = _generate_top_level_connections(proto_dict)
 
     return raw_netlist_dict
 
diff --git a/gplugins/hdl21/sky130.py b/gplugins/hdl21/sky130.py
index 3b4cf651..a7b6ffef 100644
--- a/gplugins/hdl21/sky130.py
+++ b/gplugins/hdl21/sky130.py
@@ -1,4 +1,5 @@
 from collections.abc import Callable
+from difflib import get_close_matches
 
 import hdl21 as h
 import sky130
@@ -9,10 +10,6 @@
     _parse_module_to_proto_dict,
 )
 
-__all__ = ["hdl21_module_to_schematic_editor", "find_most_relevant_gds", "filter_port"]
-
-from difflib import get_close_matches
-
 custom_mapping_dict = {
     "sky130_fd_pr__nfet_01v8": "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15",
     "sky130_fd_pr__pfet_01v8": "sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15",
diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
index ce4a577b..40582cf0 100644
--- a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
+++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
@@ -42,361 +42,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "id": "4",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "\u001b[32m2024-06-02 18:43:57.433\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mregister_cells_yaml\u001b[0m:\u001b[36m376\u001b[0m - \u001b[1mRegistered cell 'sample'\u001b[0m\n",
-      "\u001b[32m2024-06-02 18:43:57.753\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpydantic._internal._fields\u001b[0m:\u001b[36mcollect_model_fields\u001b[0m:\u001b[36m186\u001b[0m - \u001b[33m\u001b[1mUserWarning: Field name \"schema\" shadows an attribute in parent \"BaseModel\"; \u001b[0m\n",
-      "env: BOKEH_ALLOW_WS_ORIGIN=*\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "    \n",
-       "    
\n", - " \n", - " Loading BokehJS ...\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "'use strict';\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " const force = true;\n", - "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - "const JS_MIME_TYPE = 'application/javascript';\n", - " const HTML_MIME_TYPE = 'text/html';\n", - " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " const CLASS_NAME = 'output_bokeh rendered_html';\n", - "\n", - " /**\n", - " * Render data to the DOM node\n", - " */\n", - " function render(props, node) {\n", - " const script = document.createElement(\"script\");\n", - " node.appendChild(script);\n", - " }\n", - "\n", - " /**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - " function handleClearOutput(event, handle) {\n", - " function drop(id) {\n", - " const view = Bokeh.index.get_by_id(id)\n", - " if (view != null) {\n", - " view.model.document.clear()\n", - " Bokeh.index.delete(view)\n", - " }\n", - " }\n", - "\n", - " const cell = handle.cell;\n", - "\n", - " const id = cell.output_area._bokeh_element_id;\n", - " const server_id = cell.output_area._bokeh_server_id;\n", - "\n", - " // Clean up Bokeh references\n", - " if (id != null) {\n", - " drop(id)\n", - " }\n", - "\n", - " if (server_id !== undefined) {\n", - " // Clean up Bokeh references\n", - " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", - " cell.notebook.kernel.execute(cmd_clean, {\n", - " iopub: {\n", - " output: function(msg) {\n", - " const id = msg.content.text.trim()\n", - " drop(id)\n", - " }\n", - " }\n", - " });\n", - " // Destroy server and session\n", - " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd_destroy);\n", - " }\n", - " }\n", - "\n", - " /**\n", - " * Handle when a new output is added\n", - " */\n", - " function handleAddOutput(event, handle) {\n", - " const output_area = handle.output_area;\n", - " const output = handle.output;\n", - "\n", - " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", - " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - "\n", - " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - "\n", - " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", - " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", - " // store reference to embed id on output_area\n", - " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " }\n", - " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " const bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " const script_attrs = bk_div.children[0].attributes;\n", - " for (let i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - " }\n", - "\n", - " function register_renderer(events, OutputArea) {\n", - "\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " const toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[toinsert.length - 1]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " /* Handle when an output is cleared or removed */\n", - " events.on('clear_output.CodeCell', handleClearOutput);\n", - " events.on('delete.Cell', handleClearOutput);\n", - "\n", - " /* Handle when a new output is added */\n", - " events.on('output_added.OutputArea', handleAddOutput);\n", - "\n", - " /**\n", - " * Register the mime type and append_mime function with output_area\n", - " */\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " /* Is output safe? */\n", - " safe: true,\n", - " /* Index of renderer in `output_area.display_order` */\n", - " index: 0\n", - " });\n", - " }\n", - "\n", - " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", - " if (root.Jupyter !== undefined) {\n", - " const events = require('base/js/events');\n", - " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", - "\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " }\n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " const NB_LOAD_WARNING = {'data': {'text/html':\n", - " \"
\\n\"+\n", - " \"

\\n\"+\n", - " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", - " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", - " \"

\\n\"+\n", - " \"
    \\n\"+\n", - " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", - " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", - " \"
\\n\"+\n", - " \"\\n\"+\n", - " \"from bokeh.resources import INLINE\\n\"+\n", - " \"output_notebook(resources=INLINE)\\n\"+\n", - " \"\\n\"+\n", - " \"
\"}};\n", - "\n", - " function display_loaded(error = null) {\n", - " const el = document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\");\n", - " if (el != null) {\n", - " const html = (() => {\n", - " if (typeof root.Bokeh === \"undefined\") {\n", - " if (error == null) {\n", - " return \"BokehJS is loading ...\";\n", - " } else {\n", - " return \"BokehJS failed to load.\";\n", - " }\n", - " } else {\n", - " const prefix = `BokehJS ${root.Bokeh.version}`;\n", - " if (error == null) {\n", - " return `${prefix} successfully loaded.`;\n", - " } else {\n", - " return `${prefix} encountered errors while loading and may not function as expected.`;\n", - " }\n", - " }\n", - " })();\n", - " el.innerHTML = html;\n", - "\n", - " if (error != null) {\n", - " const wrapper = document.createElement(\"div\");\n", - " wrapper.style.overflow = \"auto\";\n", - " wrapper.style.height = \"5em\";\n", - " wrapper.style.resize = \"vertical\";\n", - " const content = document.createElement(\"div\");\n", - " content.style.fontFamily = \"monospace\";\n", - " content.style.whiteSpace = \"pre-wrap\";\n", - " content.style.backgroundColor = \"rgb(255, 221, 221)\";\n", - " content.textContent = error.stack ?? error.toString();\n", - " wrapper.append(content);\n", - " el.append(wrapper);\n", - " }\n", - " } else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(() => display_loaded(error), 100);\n", - " }\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - "\n", - " function on_error(url) {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (let i = 0; i < css_urls.length; i++) {\n", - " const url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error.bind(null, url);\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " for (let i = 0; i < js_urls.length; i++) {\n", - " const url = js_urls[i];\n", - " const element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error.bind(null, url);\n", - " element.async = false;\n", - " element.src = url;\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n", - " const css_urls = [];\n", - "\n", - " const inline_js = [ function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - "function(Bokeh) {\n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " if (root.Bokeh !== undefined || force === true) {\n", - " try {\n", - " for (let i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }\n", - "\n", - " } catch (error) {display_loaded(error);throw error;\n", - " }if (force === true) {\n", - " display_loaded();\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " } else if (force !== true) {\n", - " const cell = $(document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\")).parents('.cell').data().cell;\n", - " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", - " }\n", - " }\n", - "\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(css_urls, js_urls, function() {\n", - " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(window));" - ], - "application/vnd.bokehjs_load.v0+json": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"fe9dd8e6-7771-43e2-8ac9-9e19a857d90e\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import hdl21 as h\n", "import gdsfactory as gf\n", @@ -417,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "5", "metadata": {}, "outputs": [], @@ -427,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "6", "metadata": {}, "outputs": [], @@ -458,76 +107,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "8", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "connections:\n", - " ns,g: ps,g\n", - " ns,s: ps,d\n", - " ps,d: ns,s\n", - " ps,g: ns,g\n", - "instances:\n", - " ns:\n", - " component: sky130_fd_pr__nfet_01v8\n", - " info: {}\n", - " settings:\n", - " As: int((nf+2)/2) * w/nf * 0.29\n", - " ad: int((nf+1)/2) * w/nf * 0.29\n", - " l: UNIT_1\n", - " m: UNIT_1\n", - " mult: UNIT_1\n", - " nf: UNIT_1\n", - " nrd: 0.29 / w\n", - " nrs: 0.29 / w\n", - " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", - " ports:\n", - " b: VSS\n", - " d: VSS\n", - " g: i\n", - " s: o\n", - " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", - " sa: UNIT_0\n", - " sb: UNIT_0\n", - " sd: UNIT_0\n", - " w: UNIT_1\n", - " ps:\n", - " component: sky130_fd_pr__pfet_01v8\n", - " info: {}\n", - " settings:\n", - " As: int((nf+2)/2) * w/nf * 0.29\n", - " ad: int((nf+1)/2) * w/nf * 0.29\n", - " l: UNIT_1\n", - " m: UNIT_1\n", - " mult: UNIT_1\n", - " nf: UNIT_1\n", - " nrd: 0.29 / w\n", - " nrs: 0.29 / w\n", - " pd: 2*int((nf+1)/2) * (w/nf + 0.29)\n", - " ports:\n", - " b: VDD\n", - " d: o\n", - " g: i\n", - " s: VDD\n", - " ps: 2*int((nf+2)/2) * (w/nf + 0.29)\n", - " sa: UNIT_0\n", - " sb: UNIT_0\n", - " sd: UNIT_0\n", - " w: UNIT_1\n", - "name: SkyInv\n", - "ports:\n", - " VDD: ps,s\n", - " VSS: ns,d\n", - " i: ps,g\n", - " o: ps,d\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "example_inverter_manual_yaml = gph.generate_raw_yaml_from_module(\n", " SkyInv\n", @@ -537,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "9", "metadata": {}, "outputs": [], @@ -618,109 +201,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "11", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mapping for sky130_fd_pr__pfet_01v8: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15\n", - "\u001b[32m2024-06-02 18:43:57.978\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15\u001b[0m:\u001b[36m1318\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n", - "Mapping for sky130_fd_pr__nfet_01v8: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15\n", - "\u001b[32m2024-06-02 18:43:57.994\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15\u001b[0m:\u001b[36m526\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n", - "\u001b[32m2024-06-02 18:43:57.996\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.read.import_gds\u001b[0m:\u001b[36mimport_gds\u001b[0m:\u001b[36m56\u001b[0m - \u001b[33m\u001b[1mRuntimeWarning: Unsupported record in file.\u001b[0m\n", - "\u001b[32m2024-06-02 18:43:57.999\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mget_symbol\u001b[0m:\u001b[36m438\u001b[0m - \u001b[33m\u001b[1mUserWarning: prefix is deprecated and will be removed soon. floorplan_with_block_letters\u001b[0m\n", - "\u001b[32m2024-06-02 18:43:58.021\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.read.from_yaml\u001b[0m:\u001b[36mfrom_yaml\u001b[0m:\u001b[36m692\u001b[0m - \u001b[33m\u001b[1mUserWarning: prefix is deprecated and will be removed soon. _from_yaml\u001b[0m\n", - "layer (2, 0) not found\n", - "layer (0, 0) not found\n", - "layer (2, 0) not found\n", - "layer (0, 0) not found\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n", - "[GDSTK] Record type NODE (0x15) is not supported.\n", - "[GDSTK] Record type NODETYPE (0x2A) is not supported.\n" - ] - }, - { - "data": { - "application/vnd.bokehjs_exec.v0+json": "", - "text/html": [ - "" - ] - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "server_id": "2722e1325c3841dfacaf2de8a36ddbc3" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "example_inverter_schematic_editor = gph.hdl21_module_to_schematic_editor(\n", " module=SkyInv,\n", @@ -731,41 +215,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "12", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-06-02 18:43:58.063\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpydantic.main\u001b[0m:\u001b[36mmodel_dump\u001b[0m:\u001b[36m314\u001b[0m - \u001b[33m\u001b[1mUserWarning: Pydantic serializer warnings:\n", - " Expected `str` but got `int` - serialized value may not be as expected\u001b[0m\n", - "\u001b[32m2024-06-02 18:43:58.161\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36m_write_library\u001b[0m:\u001b[36m1933\u001b[0m - \u001b[33m\u001b[1mUserWarning: Component Unnamed_68ce16e9 has invalid transformations. Try component.flatten_offgrid_references() first.\u001b[0m\n", - "\u001b[32m2024-06-02 18:43:58.162\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36mplot_klayout\u001b[0m:\u001b[36m1645\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_68ce16e9'\u001b[0m\n" - ] - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "image/png": "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",
-      "text/plain": [
-       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "example_inverter_layout = \"data/sky130nm/example_inverter_auto.layout.yaml\"\n",
     "example_inverter_schematic_editor.instantiate_layout(example_inverter_layout, default_router=\"get_bundle\", default_cross_section=\"xs_metal1\")\n",
@@ -793,7 +246,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "id": "14",
    "metadata": {},
    "outputs": [],
@@ -812,7 +265,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "id": "16",
    "metadata": {},
    "outputs": [],
@@ -837,7 +290,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "id": "18",
    "metadata": {},
    "outputs": [],
@@ -860,31 +313,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "id": "20",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/plain": [
-       "\u001b[32m'v \u001b[0m\u001b[32m{\u001b[0m\u001b[32mxschem \u001b[0m\u001b[32mversion\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m.0.0 \u001b[0m\u001b[32mfile_version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.2 \u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nG \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nK \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nV \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nS \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nE \u001b[0m\u001b[32m{\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -800 720 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -1020 720 -980 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -950 790 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 790 -1020 790 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -830 790 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 790 -830 790 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -890 720 -860 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -950 680 -950 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -890 660 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -830 680 -830 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -890 880 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -1020 790 -1020 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -760 790 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 660 -950 660 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 720 -920 720 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -760 720 -760 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -890 660 -890 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nN 560 -1020 720 -1020 \u001b[0m\u001b[32m{\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -890 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp1\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32min\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/opin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 880 -890 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp2\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mout\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -1020 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp3\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVDD\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32mdevices/ipin.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 560 -760 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mp4\u001b[0m\u001b[32m \u001b[0m\u001b[32mlab\u001b[0m\u001b[32m=\u001b[0m\u001b[32mVSS\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32msky130_fd_pr/pfet_g5v0d10v5.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 700 -950 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mM10\u001b[0m\u001b[32m\\n\\\u001b[0m\u001b[32mnL\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5\\\u001b[0m\u001b[32mnW\u001b[0m\u001b[32m=\u001b[0m\u001b[32m8\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnnf\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m \u001b[0m\u001b[32mmult\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnmodel\u001b[0m\u001b[32m=\u001b[0m\u001b[32mpfet_g5v0d10v5\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnspiceprefix\u001b[0m\u001b[32m=\u001b[0m\u001b[32mX\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\nC \u001b[0m\u001b[32m{\u001b[0m\u001b[32msky130_fd_pr/nfet_g5v0d10v5.sym\u001b[0m\u001b[32m}\u001b[0m\u001b[32m 700 -830 0 0 \u001b[0m\u001b[32m{\u001b[0m\u001b[32mname\u001b[0m\u001b[32m=\u001b[0m\u001b[32mM9\u001b[0m\u001b[32m\\n\\\u001b[0m\u001b[32mnL\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5\\\u001b[0m\u001b[32mnW\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnnf\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m \u001b[0m\u001b[32mmult\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnmodel\u001b[0m\u001b[32m=\u001b[0m\u001b[32mnfet_g5v0d10v5\u001b[0m\u001b[32m\\\u001b[0m\u001b[32mnspiceprefix\u001b[0m\u001b[32m=\u001b[0m\u001b[32mX\u001b[0m\u001b[32m\\n\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n'\u001b[0m"
-      ]
-     },
-     "execution_count": 11,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "inverter_spice_text = read_file(inverter_spice_file)\n",
     "inverter_spice_text"
@@ -892,1098 +324,20 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
    "id": "21",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/plain": [
-       "\u001b[32m'\\n* Netlist generated with INTERCONNECT on Fri Dec 8 11:06:53 2023\\n\\n*\\n* Component pathname : compound_1\\n*\\n.subckt COMPOUND_1 PORT_1 PORT_2 PORT_3 PORT_4 PORT_5 PORT_6 PORT_7 PORT_8\\n        X_dc_1 PORT_1 PORT_2 N$1 N$3 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_dc_2 N$1 N$3 PORT_3 PORT_4 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_dc_3 PORT_5 PORT_7 N$11 N$13 ebeam_dc_te1550 \u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_1 N$8 N$13 N$11 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_2 N$8 PORT_6 PORT_8 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n.ends COMPOUND_1\\n\\n*\\n* MAIN CELL: Component pathname : root_element\\n*\\n        .MODEL ebeam_dc_te1550 \u001b[0m\u001b[32mradius\u001b[0m\u001b[32m=\u001b[0m\u001b[32m5u\u001b[0m\u001b[32m \u001b[0m\u001b[32mgap\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.2u \u001b[0m\u001b[32mnote\u001b[0m\u001b[32m=\".- The current model only supports \"coupling_length\" as an input parameter..- The other parameters\\n        \u001b[0m\u001b[32m(\u001b[0m\u001b[32mi.e., \"wg_width\", \"gap\", \"radius\"\u001b[0m\u001b[32m)\u001b[0m\u001b[32m are now fixed but will be parameterized in the future.\"\\n        + \u001b[0m\u001b[32mwg_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.5u \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL ebeam_gc_te1550 \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_width%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL ebeam_y_1550 \u001b[0m\u001b[32mModel_Version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"2016\u001b[0m\u001b[32m/04/07\" \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\n        + \u001b[0m\u001b[32mMC_uniformity_width\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_width%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        .MODEL wg_heater \u001b[0m\u001b[32mwg_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.0001 \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"\\n        X_COMPOUND_1 N$1 N$2 N$5 N$4 N$7 N$10 N$9 N$8 COMPOUND_1 \u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m \u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_1 N$6 N$1 N$2 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_2 N$3 N$4 N$5 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_1 N$17 N$6 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_2 N$18 N$3 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_3 N$14 N$7 N$9 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_ebeam_y_1550_4 N$16 N$8 N$10 ebeam_y_1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_wg_heater_1 N$12 N$11 N$13 N$15 wg_heater \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_wg_heater_2 N$11 N$12 N$16 N$14 wg_heater \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_3 N$19 N$13 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n        X_TE1550_SubGC_neg31_oxide_4 N$20 N$15 ebeam_gc_te1550 \u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305 \u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13 \u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m \u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m \u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m\\n*\\n.end\\n\\n*# ebeam_dc_te1550 opt_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_3\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_4\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# ebeam_gc_te1550 opt_fiber\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_wg\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# ebeam_y_1550 opt_a1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_b1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_b\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n*# wg_heater ele_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mele\u001b[0m\u001b[32m)\u001b[0m\u001b[32m ele_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mele\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_1\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m opt_2\u001b[0m\u001b[32m(\u001b[0m\u001b[32mopt\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\n'\u001b[0m"
-      ]
-     },
-     "execution_count": 12,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "spice.netlist_text"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": null,
    "id": "22",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/plain": [
-       "\n",
-       "\u001b[1m[\u001b[0m\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'subckt'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'COMPOUND_1'\u001b[0m,\n",
-       "        \u001b[32m'ports'\u001b[0m: \u001b[1m[\u001b[0m\u001b[32m'PORT_1'\u001b[0m, \u001b[32m'PORT_2'\u001b[0m, \u001b[32m'PORT_3'\u001b[0m, \u001b[32m'PORT_4'\u001b[0m, \u001b[32m'PORT_5'\u001b[0m, \u001b[32m'PORT_6'\u001b[0m, \u001b[32m'PORT_7'\u001b[0m, \u001b[32m'PORT_8'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_1'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_2'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_2'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_3'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_4'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_dc_3'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_5'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_7'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_2'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_6'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'PORT_8'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_dc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mradius\u001b[0m\u001b[32m=\u001b[0m\u001b[32m5u\u001b[0m\u001b[32m \u001b[0m\u001b[32mgap\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.2u \u001b[0m\u001b[32mnote\u001b[0m\u001b[32m=\".- The current model only supports \"coupling_length\" as an input parameter..- The other parameters'\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'future.\"'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32m(\u001b[0m\u001b[32mi.e.,'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"wg_width\",'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"gap\",'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'\"radius\"\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'are'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'now'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'fixed'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'but'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'will'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'be'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'parameterized'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'future.\"'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mModel_Version\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"2016\u001b[0m\u001b[32m/04/07\" \u001b[0m\u001b[32mMC_grid\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_grid%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m \u001b[0m\u001b[32mMC_non_uniform\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_non_uniform%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mMC_resolution_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_x%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'+'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\u001b[32m'type'\u001b[0m: \u001b[32m'model'\u001b[0m, \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m, \u001b[32m'params'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mwg_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.0001 \u001b[0m\u001b[32mlibrary\u001b[0m\u001b[32m=\u001b[0m\u001b[32m\"design_kit\u001b[0m\u001b[32m/ebeam\"'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'COMPOUND_1'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_COMPOUND_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$2'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$5'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$4'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$7'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$10'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$9'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$6'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$1'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$2'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_2'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$4'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$5'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$17'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$6'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_2'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$18'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$3'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_3'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$14'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$7'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$9'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_y_1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_ebeam_y_1550_4'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$16'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$8'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$10'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_wg_heater_1'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$12'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$15'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'wg_heater'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_wg_heater_2'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$11'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$12'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$16'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$14'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_3'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$19'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$13'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'ebeam_gc_te1550'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'X_TE1550_SubGC_neg31_oxide_4'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$20'\u001b[0m\u001b[1m}\u001b[0m, \u001b[1m{\u001b[0m\u001b[32m'from'\u001b[0m: \u001b[32m'\u001b[0m\u001b[32mlay_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'to'\u001b[0m: \u001b[32m'N$15'\u001b[0m\u001b[1m}\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m,\n",
-       "    \u001b[1m{\u001b[0m\n",
-       "        \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "        \u001b[32m'name'\u001b[0m: \u001b[32m'.end'\u001b[0m,\n",
-       "        \u001b[32m'component_type'\u001b[0m: \u001b[32m'.end'\u001b[0m,\n",
-       "        \u001b[32m'nodes'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "        \u001b[32m'settings'\u001b[0m: \u001b[1m[\u001b[0m\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.245'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m17\u001b[0m\u001b[32m.5u'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.79'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.38'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mcoupling_length\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%test_param1%*1e-6\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.3'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.585'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.95'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.89'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.58'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_uniformity_thickness\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_uniformity_thickness%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32mMC_resolution_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m{\u001b[0m\u001b[32m%MC_resolution_y%\u001b[0m\u001b[32m}\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param2\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mtest_param1\u001b[0m\u001b[32m=\u001b[0m\u001b[32m3\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.75'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m,\n",
-       "                \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\n",
-       "            \u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-0.22'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m.005'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.795'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m1\u001b[0m\u001b[32m.665'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-2.175'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-0.05'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.435'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.655'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-1.42'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.31'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.525'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-1.395'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.11'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.82'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m2\u001b[0m\u001b[32m.085'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-2.645'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m4\u001b[0m\u001b[32m.205'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-3.99'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m,\n",
-       "            \u001b[1m[\u001b[0m\u001b[32m'\u001b[0m\u001b[32msch_x\u001b[0m\u001b[32m=-4.305'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_y\u001b[0m\u001b[32m=-4.13'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_r\u001b[0m\u001b[32m=\u001b[0m\u001b[32m180\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32msch_f\u001b[0m\u001b[32m=\u001b[0m\u001b[32mf\u001b[0m\u001b[32m'\u001b[0m, \u001b[32m'\u001b[0m\u001b[32mlay_x\u001b[0m\u001b[32m=\u001b[0m\u001b[32m0\u001b[0m\u001b[32m'\u001b[0m\u001b[1m]\u001b[0m\n",
-       "        \u001b[1m]\u001b[0m\n",
-       "    \u001b[1m}\u001b[0m\n",
-       "\u001b[1m]\u001b[0m"
-      ]
-     },
-     "execution_count": 13,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "elements, _, _ = spice.parse_netlist_and_extract_elements(netlist_text=spice.netlist_text, spice_type=\"lumerical\")\n",
     "elements"
@@ -1999,82 +353,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": null,
    "id": "24",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Warning: Line skipped due to unexpected format: C {devices/opin.sym} 880 -890 0 0 {name=p2 lab=out\n",
-      "Warning: Line skipped due to unexpected format: C {devices/ipin.sym} 560 -1020 0 0 {name=p3 lab=VDD\n",
-      "Warning: Line skipped due to unexpected format: C {sky130_fd_pr/pfet_g5v0d10v5.sym} 700 -950 0 0 {name=M10\n",
-      "Warning: Line skipped due to unexpected format: C {sky130_fd_pr/nfet_g5v0d10v5.sym} 700 -830 0 0 {name=M9\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/plain": [
-       "\n",
-       "\u001b[1m(\u001b[0m\n",
-       "    \u001b[1m[\u001b[0m\n",
-       "        \u001b[1m{\u001b[0m\n",
-       "            \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "            \u001b[32m'component_type'\u001b[0m: \u001b[32m'devices/ipin.sym'\u001b[0m,\n",
-       "            \u001b[32m'position'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[32m'name'\u001b[0m: \u001b[32m'p1'\u001b[0m,\n",
-       "            \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m,\n",
-       "            \u001b[32m'settings'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'p1'\u001b[0m, \u001b[32m'lab'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\n",
-       "            \u001b[32m'type'\u001b[0m: \u001b[32m'component'\u001b[0m,\n",
-       "            \u001b[32m'component_type'\u001b[0m: \u001b[32m'devices/ipin.sym'\u001b[0m,\n",
-       "            \u001b[32m'position'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "            \u001b[32m'name'\u001b[0m: \u001b[32m'p4'\u001b[0m,\n",
-       "            \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m,\n",
-       "            \u001b[32m'settings'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'p4'\u001b[0m, \u001b[32m'lab'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "        \u001b[1m}\u001b[0m\n",
-       "    \u001b[1m]\u001b[0m,\n",
-       "    \u001b[1m[\u001b[0m\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-800'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-980'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-860'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'680'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'680'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-830'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'880'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'790'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-950'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-920'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'out'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-760'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VSS'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'660'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-890'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'in'\u001b[0m\u001b[1m}\u001b[0m,\n",
-       "        \u001b[1m{\u001b[0m\u001b[32m'start'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'560'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'end'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'x'\u001b[0m: \u001b[32m'720'\u001b[0m, \u001b[32m'y'\u001b[0m: \u001b[32m'-1020'\u001b[0m\u001b[1m}\u001b[0m, \u001b[32m'label'\u001b[0m: \u001b[32m'VDD'\u001b[0m\u001b[1m}\u001b[0m\n",
-       "    \u001b[1m]\u001b[0m,\n",
-       "    \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n",
-       "\u001b[1m)\u001b[0m"
-      ]
-     },
-     "execution_count": 14,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "inverter_netlist_elements, inverter_netlist_connections, _ = spice.parse_netlist_and_extract_elements(netlist_text=inverter_spice_text, spice_type=\"xschem\")\n",
     "inverter_netlist_elements, inverter_netlist_connections, _"

From 11747415664486292d8348f393a48e666a72817d Mon Sep 17 00:00:00 2001
From: daquintero 
Date: Sat, 8 Jun 2024 19:58:58 +0200
Subject: [PATCH 4/7] :rocket: Added R2R auto-spice to layout demo towards DAC

---
 gplugins/hdl21/netlist.py                     |  71 ++-
 gplugins/hdl21/sky130.py                      |   1 +
 ...ky130nm_inverter_schematic_to_layout.ipynb | 296 +++++++++-
 .../example_inverter_auto.layout.yaml         |   5 +-
 .../sky130nm/example_inverter_auto.schem.yaml |   5 +-
 .../example_resistor_ladder.layout.yaml       | 519 ++++++++++++++++++
 .../example_resistor_ladder.schem.yaml        | 422 ++++++++++++++
 pyproject.toml                                |   4 +-
 8 files changed, 1292 insertions(+), 31 deletions(-)
 create mode 100644 notebooks/data/sky130nm/example_resistor_ladder.layout.yaml
 create mode 100644 notebooks/data/sky130nm/example_resistor_ladder.schem.yaml

diff --git a/gplugins/hdl21/netlist.py b/gplugins/hdl21/netlist.py
index e701a4c4..2b7e11cb 100644
--- a/gplugins/hdl21/netlist.py
+++ b/gplugins/hdl21/netlist.py
@@ -63,7 +63,20 @@ def _parse_connections(proto_dict: ParsedProtoVLSIR) -> dict:
             instance_name = instance["name"]
             for connection in instance.get("connections", []):
                 portname = connection["portname"]
-                target_signal = connection["target"][0]["sig"]
+                target = connection["target"][0]
+
+                # Handle different structures of target
+                if "sig" in target:
+                    target_signal = target["sig"]
+                elif "slice" in target:
+                    target_signal = target["slice"][0]["signal"]
+                else:
+                    # Log a warning or provide a default value for unknown structures
+                    target_signal = "unknown_signal"
+                    print(
+                        f"Warning: Unknown target structure in connection for instance '{instance_name}', port '{portname}'"
+                    )
+
                 connection_key = f"{instance_name},{portname}"
                 # Find the target instance and port
                 target_instance_port = _find_target_instance_port(
@@ -87,8 +100,22 @@ def _find_target_instance_port(
             if instance["name"] == current_instance_name:
                 continue
             for connection in instance.get("connections", []):
-                if connection["target"][0]["sig"] == target_signal:
+                target = connection["target"][0]
+
+                # Handle different structures of target
+                if "sig" in target:
+                    signal = target["sig"]
+                elif "slice" in target:
+                    signal = target["slice"][0]["signal"]
+                else:
+                    signal = None
+                    print(
+                        f"Warning: Unknown target structure for instance '{instance['name']}', port '{connection['portname']}'"
+                    )
+
+                if signal == target_signal:
                     return f"{instance['name']},{connection['portname']}"
+
     # Search in external modules
     for ext_module in proto_dict.get("ext_modules", []):
         for port in ext_module.get("ports", []):
@@ -97,7 +124,19 @@ def _find_target_instance_port(
                     if instance["name"] == current_instance_name:
                         continue
                     for connection in instance.get("connections", []):
-                        if connection["target"][0]["sig"] == target_signal:
+                        target = connection["target"][0]
+
+                        if "sig" in target:
+                            signal = target["sig"]
+                        elif "slice" in target:
+                            signal = target["slice"][0]["signal"]
+                        else:
+                            signal = None
+                            print(
+                                f"Warning: Unknown target structure for instance '{instance['name']}', port '{connection['portname']}'"
+                            )
+
+                        if signal == target_signal:
                             return f"{instance['name']},{connection['portname']}"
 
     return None
@@ -129,7 +168,20 @@ def _find_port_connection(proto_dict: ParsedProtoVLSIR, port_signal):
         for instance in module.get("instances", []):
             instance_name = instance["name"]
             for connection in instance.get("connections", []):
-                if connection["target"][0]["sig"] == port_signal:
+                target = connection["target"][0]
+
+                # Handle different structures of target
+                if "sig" in target:
+                    signal = target["sig"]
+                elif "slice" in target:
+                    signal = target["slice"][0]["signal"]
+                else:
+                    signal = None
+                    print(
+                        f"Warning: Unknown target structure in connection for instance '{instance_name}', port '{connection['portname']}'"
+                    )
+
+                if signal == port_signal:
                     return f"{instance_name},{connection['portname']}"
     return None
 
@@ -159,7 +211,16 @@ def _extract_instance_parameters(proto_dict: ParsedProtoVLSIR):
             instance_info["settings"]["ports"] = {}
             for connection in instance.get("connections", []):
                 portname = connection["portname"]
-                target_signal = connection["target"][0]["sig"]
+                target = connection["target"][0]
+
+                if "sig" in target:
+                    target_signal = target["sig"]
+                elif "slice" in target:
+                    target_signal = target["slice"][0]["signal"]
+                else:
+                    # Handle cases where 'target' does not have 'sig' or 'slice'
+                    target_signal = "unknown_signal"
+
                 instance_info["settings"]["ports"][portname] = target_signal
 
             instance_parameters[instance_name] = instance_info
diff --git a/gplugins/hdl21/sky130.py b/gplugins/hdl21/sky130.py
index a7b6ffef..e957737e 100644
--- a/gplugins/hdl21/sky130.py
+++ b/gplugins/hdl21/sky130.py
@@ -13,6 +13,7 @@
 custom_mapping_dict = {
     "sky130_fd_pr__nfet_01v8": "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15",
     "sky130_fd_pr__pfet_01v8": "sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15",
+    "sky130_fd_pr__res_generic_po": "p_n_poly",
 }
 
 
diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
index 40582cf0..e78dca39 100644
--- a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
+++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
@@ -71,7 +71,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "# sky130.cells"
+    "# sky130.cells\n",
+    "# sky130.cells[\"sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield\"]()"
    ]
   },
   {
@@ -196,7 +197,7 @@
    "id": "10",
    "metadata": {},
    "source": [
-    "### Automatically mapping layout instances to the YAML"
+    "### Automatically mapping layout instances to the YAML - Inverter"
    ]
   },
   {
@@ -230,6 +231,265 @@
    "cell_type": "markdown",
    "id": "13",
    "metadata": {},
+   "source": [
+    "### More Advanced Example - R2R DAC\n",
+    "\n",
+    "\n",
+    "An example of using `hdl21.ExternalModule`s representing an implementation technology/ PDK\n",
+    "in a parametric resistive DAC generator mapping to a gdsfactory implementation."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "14",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sys\n",
+    "from typing import Optional\n",
+    "\n",
+    "import hdl21 as h\n",
+    "\n",
+    "PdkResistor = sky130_hdl21.ress[\"GEN_PO\"]\n",
+    "Nch = sky130_hdl21.primitives.NMOS_1p8V_STD\n",
+    "Pch = sky130_hdl21.primitives.PMOS_1p8V_STD\n",
+    "\n",
+    "\n",
+    "@h.paramclass\n",
+    "class RLadderParams:\n",
+    "    \"\"\"# Resistor Ladder Parameters\n",
+    "\n",
+    "    Note the use of the `hdl21.Instantiable` type for the unit resistor element.\n",
+    "    This generally means \"something we can make an `Instance` of\" - most commonly a `Module`.\n",
+    "\n",
+    "    Here we will be using a combination of an `ExternalModule` and its parameter-values,\n",
+    "    in something like:\n",
+    "\n",
+    "    ```python\n",
+    "    RLadderParams(res=PdkResistor(w=4 * µ, l=10 * µ))\n",
+    "    ```\n",
+    "    \"\"\"\n",
+    "\n",
+    "    nseg = h.Param(dtype=int, desc=\"Number of segments\")\n",
+    "    res = h.Param(dtype=h.Instantiable, desc=\"Unit resistor, with params applied\")\n",
+    "\n",
+    "\n",
+    "@h.generator\n",
+    "def rladder(params: RLadderParams) -> h.Module:\n",
+    "    \"\"\"# Resistor Ladder Generator\"\"\"\n",
+    "\n",
+    "    @h.module\n",
+    "    class RLadder:\n",
+    "        # IO\n",
+    "        top = h.Inout()\n",
+    "        bot = h.Inout()\n",
+    "        taps = h.Output(width=params.nseg - 1)\n",
+    "\n",
+    "        # Create concatenations for the P and N sides of each resistor\n",
+    "        nsides = h.Concat(bot, taps)\n",
+    "        psides = h.Concat(taps, top)\n",
+    "\n",
+    "        # And create our unit resistor array\n",
+    "        runits = params.nseg * params.res(p=psides, n=nsides)\n",
+    "\n",
+    "    return RLadder\n",
+    "\n",
+    "\n",
+    "@h.paramclass\n",
+    "class PassGateParams:\n",
+    "    \"\"\"# Pass Gate Parameters\n",
+    "\n",
+    "    See the commentary on `RLadderParams` above regarding the use of `hdl21.Instantiable`,\n",
+    "    which here serves as the parameter type for each transistor. It will generally be used like:\n",
+    "\n",
+    "    ```python\n",
+    "    PassGateParams(\n",
+    "        nmos=Nch(PdkMosParams(l=1 * n)),\n",
+    "        pmos=Pch(PdkMosParams(l=1 * n)),\n",
+    "    )\n",
+    "    ```\n",
+    "\n",
+    "    Both `nmos` and `pmos` parameters are `Optional`, which means they can be set to the Python built-in `None` value.\n",
+    "    If either is `None`, its \"half\" of the pass gate will be omitted.\n",
+    "    Setting *both* to `None` will cause a generator exception.\n",
+    "    \"\"\"\n",
+    "\n",
+    "    nmos = h.Param(dtype=Optional[h.Instantiable], desc=\"NMOS. Disabled if None.\")\n",
+    "    pmos = h.Param(dtype=Optional[h.Instantiable], desc=\"PMOS. Disabled if None\")\n",
+    "\n",
+    "\n",
+    "@h.generator\n",
+    "def passgate(params: PassGateParams) -> h.Module:\n",
+    "    \"\"\"# Pass Gate Generator\"\"\"\n",
+    "    if params.nmos is None and params.pmos is None:\n",
+    "        raise RuntimeError(\"A pass gate needs at least *one* transistor!\")\n",
+    "\n",
+    "    @h.module\n",
+    "    class PassGate:\n",
+    "        source = h.Inout()\n",
+    "        drain = h.Inout()\n",
+    "\n",
+    "    if params.pmos is not None:\n",
+    "        PassGate.VDD = h.Inout()\n",
+    "        PassGate.en_b = h.Input()\n",
+    "        PassGate.PSW = params.pmos(\n",
+    "            d=PassGate.drain, s=PassGate.source, g=PassGate.en_b, b=PassGate.VDD\n",
+    "        )\n",
+    "\n",
+    "    if params.nmos is not None:\n",
+    "        PassGate.VSS = h.Inout()\n",
+    "        PassGate.en = h.Input()\n",
+    "        PassGate.NSW = params.nmos(\n",
+    "            d=PassGate.drain, s=PassGate.source, g=PassGate.en, b=PassGate.VSS\n",
+    "        )\n",
+    "\n",
+    "    return PassGate\n",
+    "\n",
+    "\n",
+    "@h.generator\n",
+    "def mux(params: PassGateParams) -> h.Module:\n",
+    "    \"\"\"# Pass-Gate Analog Mux Generator\"\"\"\n",
+    "\n",
+    "    @h.module\n",
+    "    class Mux:\n",
+    "        sourceA = h.Input()\n",
+    "        sourceB = h.Input()\n",
+    "        out = h.Output()\n",
+    "        ctrl = h.Input()\n",
+    "        ctrl_b = h.Input()\n",
+    "\n",
+    "    aconns, bconns = (\n",
+    "        dict(source=Mux.sourceA, drain=Mux.out),\n",
+    "        dict(source=Mux.sourceB, drain=Mux.out),\n",
+    "    )\n",
+    "    if params.pmos is not None:\n",
+    "        Mux.VDD = h.Inout()\n",
+    "        aconns[\"VDD\"] = Mux.VDD\n",
+    "        aconns[\"en_b\"] = Mux.ctrl_b\n",
+    "        bconns[\"VDD\"] = Mux.VDD\n",
+    "        bconns[\"en_b\"] = Mux.ctrl\n",
+    "    if params.nmos is not None:\n",
+    "        Mux.VSS = h.Inout()\n",
+    "        aconns[\"VSS\"] = Mux.VSS\n",
+    "        aconns[\"en\"] = Mux.ctrl\n",
+    "        bconns[\"VSS\"] = Mux.VSS\n",
+    "        bconns[\"en\"] = Mux.ctrl_b\n",
+    "    Mux.passgate_a = passgate(params)(**aconns)\n",
+    "    Mux.passgate_b = passgate(params)(**bconns)\n",
+    "    return Mux\n",
+    "\n",
+    "\n",
+    "@h.paramclass\n",
+    "class MuxTreeParams:\n",
+    "    \"\"\"# Mux Tree Parameters\"\"\"\n",
+    "\n",
+    "    nbit = h.Param(dtype=int, desc=\"Number of bits\")\n",
+    "    mux_params = h.Param(dtype=PassGateParams, desc=\"Parameters for the MUX generator\")\n",
+    "\n",
+    "\n",
+    "@h.generator\n",
+    "def mux_tree(params: MuxTreeParams) -> h.Module:\n",
+    "    \"\"\"Binary Mux Tree Generator\"\"\"\n",
+    "\n",
+    "    n_inputs = 2**params.nbit\n",
+    "    p_ctrl = params.mux_params.nmos is not None\n",
+    "    n_ctrl = params.mux_params.pmos is not None\n",
+    "\n",
+    "    # Base module\n",
+    "    @h.module\n",
+    "    class MuxTree:\n",
+    "        out = h.Output()\n",
+    "        v_in = h.Input(width=n_inputs)\n",
+    "        ctrl = h.Input(width=params.nbit)\n",
+    "        ctrl_b = h.Input(width=params.nbit)\n",
+    "\n",
+    "    base_mux_conns = dict()\n",
+    "    if p_ctrl:\n",
+    "        MuxTree.VSS = h.Inout()\n",
+    "        base_mux_conns[\"VSS\"] = MuxTree.VSS\n",
+    "    if n_ctrl:\n",
+    "        MuxTree.VDD = h.Inout()\n",
+    "        base_mux_conns[\"VDD\"] = MuxTree.VDD\n",
+    "\n",
+    "    # Build the MUX tree layer by layer\n",
+    "    curr_input = MuxTree.v_in\n",
+    "    for layer in range(params.nbit - 1, -1, -1):\n",
+    "        layer_mux_conns = base_mux_conns.copy()\n",
+    "        layer_mux_conns[\"ctrl\"] = MuxTree.ctrl[layer]\n",
+    "        layer_mux_conns[\"ctrl_b\"] = MuxTree.ctrl_b[layer]\n",
+    "        if layer != 0:\n",
+    "            curr_output = MuxTree.add(\n",
+    "                name=f\"sig_{layer}\", val=h.Signal(width=2**layer)\n",
+    "            )\n",
+    "        else:\n",
+    "            curr_output = MuxTree.out\n",
+    "        for mux_idx in range(2**layer):\n",
+    "            mux_conns = layer_mux_conns.copy()\n",
+    "            mux_conns[\"sourceA\"] = curr_input[2 * mux_idx]\n",
+    "            mux_conns[\"sourceB\"] = curr_input[2 * mux_idx + 1]\n",
+    "            mux_conns[\"out\"] = curr_output[mux_idx]\n",
+    "            MuxTree.add(\n",
+    "                name=f\"mux_{layer}_{mux_idx}\", val=mux(params.mux_params)(**mux_conns)\n",
+    "            )\n",
+    "        curr_input = curr_output\n",
+    "    return MuxTree\n",
+    "\n",
+    "\n",
+    "\"\"\"Main function, generating an `rladder` and `mux_tree` and netlisting each.\"\"\"\n",
+    "\n",
+    "# Create parameter values for each of our top-level generators\n",
+    "rparams = RLadderParams(\n",
+    "    nseg=15,\n",
+    "    res=PdkResistor(),\n",
+    ")\n",
+    "mparams = MuxTreeParams(\n",
+    "    nbit=4,\n",
+    "    mux_params=PassGateParams(\n",
+    "        nmos=Nch(),\n",
+    "        pmos=Pch(),\n",
+    "    ),\n",
+    ")\n",
+    "\n",
+    "# Netlist in a handful of formats\n",
+    "duts = [rladder(rparams)]\n",
+    "# h.netlist(duts, sys.stdout, fmt=\"verilog\")\n",
+    "# h.netlist(duts, sys.stdout, fmt=\"spectre\")\n",
+    "# h.netlist(duts, sys.stdout, fmt=\"spice\")\n",
+    "# h.netlist(duts, sys.stdout, fmt=\"xyce\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "15",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "example_resistor_ladder_schematic_editor = gph.hdl21_module_to_schematic_editor(\n",
+    "    module=rladder(rparams),\n",
+    "    yaml_schematic_file_name=\"data/sky130nm/rladder.schem.yaml\",\n",
+    ")\n",
+    "example_resistor_ladder_schematic_editor.visualize()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "16",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "example_inverter_layout = \"data/sky130nm/example_inverter_auto.layout.yaml\"\n",
+    "example_inverter_schematic_editor.instantiate_layout(example_inverter_layout, default_router=\"get_bundle\", default_cross_section=\"xs_metal1\")\n",
+    "c = gf.read.from_yaml(example_inverter_layout)\n",
+    "c.plot()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "17",
+   "metadata": {},
    "source": [
     "## (WIP, future integrations) Setting up the required tools: `xschem`, `volare` and the `sky130nm` PDKs\n",
     "\n",
@@ -247,7 +507,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "14",
+   "id": "18",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -257,7 +517,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "15",
+   "id": "19",
    "metadata": {},
    "source": [
     "Our example files are under the directory of `gplugins/notebooks/data`, let's extract our SPICE declaration:"
@@ -266,7 +526,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "16",
+   "id": "20",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -282,7 +542,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "17",
+   "id": "21",
    "metadata": {},
    "source": [
     "Let's list the files we're going to be reading into:"
@@ -291,7 +551,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "18",
+   "id": "22",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -300,7 +560,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "19",
+   "id": "23",
    "metadata": {},
    "source": [
     "Let's extract our raw spice netlist. An important aspect to understand is that unfortunately, every SPICE tool developed their own file format. So in this sense, netlist parsing function is implemented according to the type of spice toolset that has generated this netlist.\n",
@@ -314,7 +574,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "20",
+   "id": "24",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -325,7 +585,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "21",
+   "id": "25",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -335,7 +595,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "22",
+   "id": "26",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -345,7 +605,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "23",
+   "id": "27",
    "metadata": {},
    "source": [
     "So we can use our `netlist` parsing function to convert this to a compatible netlist for gdsfactory plugins into the extracted elements and the extracted connections:"
@@ -354,7 +614,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "24",
+   "id": "28",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -364,7 +624,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "25",
+   "id": "29",
    "metadata": {},
    "source": [
     "### Automated schematic-driven-layout"
@@ -372,7 +632,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "26",
+   "id": "30",
    "metadata": {},
    "source": [
     "We have now extracted our spice elements and our connectivity. Let's explore what we have there:"
@@ -380,7 +640,7 @@
   },
   {
    "cell_type": "raw",
-   "id": "27",
+   "id": "31",
    "metadata": {},
    "source": [
     "# Current TODOs\n",
@@ -392,7 +652,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "28",
+   "id": "32",
    "metadata": {},
    "outputs": [],
    "source": []
@@ -400,7 +660,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "29",
+   "id": "33",
    "metadata": {},
    "outputs": [],
    "source": []
diff --git a/notebooks/data/sky130nm/example_inverter_auto.layout.yaml b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
index 923f7178..eb4ce2d0 100644
--- a/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
+++ b/notebooks/data/sky130nm/example_inverter_auto.layout.yaml
@@ -8,9 +8,8 @@ instances:
     component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15
     settings: {}
 placements:
-  ps: {x: null, y: null, port: null, rotation: 0.0, dx: -1.4737477228631808, dy: -8.228251743803634,
-    mirror: null}
-  ns: {x: null, y: null, port: null, rotation: 0.0, dx: null, dy: null, mirror: null}
+  ps: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null}
+  ns: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null}
 routes:
   r0:
     routing_strategy: get_bundle
diff --git a/notebooks/data/sky130nm/example_inverter_auto.schem.yaml b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
index 5a11cd55..2b9f3dbb 100644
--- a/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
+++ b/notebooks/data/sky130nm/example_inverter_auto.schem.yaml
@@ -7,9 +7,8 @@ instances:
     component: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15
     settings: {}
 schematic_placements:
-  ps: {x: null, y: null, port: null, rotation: 0.0, dx: -1.4737477228631808, dy: -8.228251743803634,
-    mirror: null}
-  ns: {x: null, y: null, port: null, rotation: 0.0, dx: null, dy: null, mirror: null}
+  ps: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null}
+  ns: {x: null, y: null, port: null, rotation: 0, dx: null, dy: null, mirror: null}
 nets:
 - ['ps,DRAIN', 'ns,SOURCE']
 - ['ps,GATE', 'ns,GATE']
diff --git a/notebooks/data/sky130nm/example_resistor_ladder.layout.yaml b/notebooks/data/sky130nm/example_resistor_ladder.layout.yaml
new file mode 100644
index 00000000..55aace17
--- /dev/null
+++ b/notebooks/data/sky130nm/example_resistor_ladder.layout.yaml
@@ -0,0 +1,519 @@
+schema_version: 1
+schema: null
+instances:
+  runits_0:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_1:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_2:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_3:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_4:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_5:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_6:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_7:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_8:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_9:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_10:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_11:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_12:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_13:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_14:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+placements:
+  runits_0: {x: null, y: null, port: null, rotation: 0, dx: -4.426076548125775, dy: 0.2228959412725211,
+    mirror: null}
+  runits_1: {x: null, y: null, port: null, rotation: 0, dx: 3.574295629691498, dy: -0.3821073278957504,
+    mirror: null}
+  runits_2: {x: null, y: null, port: null, rotation: 0, dx: -4.72288495924887, dy: -6.032254367480482,
+    mirror: null}
+  runits_3: {x: null, y: null, port: null, rotation: 0, dx: 2.8681354173915055, dy: -5.868066502994218,
+    mirror: null}
+  runits_4: {x: null, y: null, port: null, rotation: 0, dx: -1.8664830368064012, dy: 3.994876027391382,
+    mirror: null}
+  runits_5: {x: null, y: null, port: null, rotation: 0, dx: 1.2576437297169987, dy: 2.9869038580778717,
+    mirror: null}
+  runits_6: {x: null, y: null, port: null, rotation: 0, dx: -1.7607012216037983, dy: -2.5886500103341556,
+    mirror: null}
+  runits_7: {x: null, y: null, port: null, rotation: 0, dx: 1.2576437297169987, dy: -6.361581199485151,
+    mirror: null}
+  runits_8: {x: null, y: null, port: null, rotation: 0, dx: 6.518786665699776, dy: 1.655897577460715,
+    mirror: null}
+  runits_9: {x: null, y: null, port: null, rotation: 0, dx: 0.1152840085573914, dy: -0.4401753054009496,
+    mirror: null}
+  runits_10: {x: null, y: null, port: null, rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757,
+    mirror: null}
+  runits_11: {x: null, y: null, port: null, rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757,
+    mirror: null}
+  runits_12: {x: null, y: null, port: null, rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757,
+    mirror: null}
+  runits_13: {x: null, y: null, port: null, rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757,
+    mirror: null}
+  runits_14: {x: null, y: null, port: null, rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757,
+    mirror: null}
+routes:
+  r0:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_0,p': 'runits_1,p'}
+  r1:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_1,n': 'runits_0,p'}
+  r2:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_2,p': 'runits_0,p'}
+  r3:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_2,n': 'runits_0,p'}
+  r4:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_3,p': 'runits_0,p'}
+  r5:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_3,n': 'runits_0,p'}
+  r6:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_4,p': 'runits_0,p'}
+  r7:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_4,n': 'runits_0,p'}
+  r8:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_5,p': 'runits_0,p'}
+  r9:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_5,n': 'runits_0,p'}
+  r10:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_6,p': 'runits_0,p'}
+  r11:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_6,n': 'runits_0,p'}
+  r12:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_7,p': 'runits_0,p'}
+  r13:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_7,n': 'runits_0,p'}
+  r14:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_8,p': 'runits_0,p'}
+  r15:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_8,n': 'runits_0,p'}
+  r16:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_9,p': 'runits_0,p'}
+  r17:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_9,n': 'runits_0,p'}
+  r18:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_10,p': 'runits_0,p'}
+  r19:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_10,n': 'runits_0,p'}
+  r20:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_11,p': 'runits_0,p'}
+  r21:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_11,n': 'runits_0,p'}
+  r22:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_12,p': 'runits_0,p'}
+  r23:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_12,n': 'runits_0,p'}
+  r24:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_13,p': 'runits_0,p'}
+  r25:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_13,n': 'runits_0,p'}
+  r26:
+    routing_strategy: get_bundle
+    settings: {cross_section: xs_metal1, separation: 5.0}
+    links: {'runits_14,n': 'runits_0,p'}
+ports: {}
diff --git a/notebooks/data/sky130nm/example_resistor_ladder.schem.yaml b/notebooks/data/sky130nm/example_resistor_ladder.schem.yaml
new file mode 100644
index 00000000..cdcfbb6f
--- /dev/null
+++ b/notebooks/data/sky130nm/example_resistor_ladder.schem.yaml
@@ -0,0 +1,422 @@
+instances:
+  runits_0:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_1:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_2:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_3:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_4:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_5:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_6:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_7:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_8:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_9:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_10:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_11:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_12:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_13:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+  runits_14:
+    component: p_n_poly
+    settings:
+      p_poly_width: 0.35
+      p_poly_length: 0.5
+      poly_res_layer: [66, 13]
+      poly_layer: [66, 20]
+      psdm_layer: [94, 20]
+      sdm_enclosure: [0.125, 0.125]
+      contact_size: [0.17, 0.17]
+      contact_spacing: [0.17, 0.17]
+      licon_slots_size: [0.19, 2]
+      licon_slots_spacing: [0.51, 0.51]
+      contact_layer: [66, 44]
+      contact_enclosure: [0.06, 0.06]
+      li_layer: [67, 20]
+      li_enclosure: 0.08
+      mcon_layer: [67, 44]
+      mcon_enclosure: [0.09, 0.09]
+      m1_layer: [68, 20]
+      urpm_layer: [79, 20]
+      urpm_min_width: 1.27
+      urpm_enclosure: [0.2, 0.2]
+      npc_layer: [95, 20]
+      npc_enclosure: [0.095, 0.095]
+schematic_placements:
+  runits_0: {rotation: 0, dx: -4.426076548125775, dy: 0.2228959412725211}
+  runits_1: {rotation: 0, dx: 3.574295629691498, dy: -0.3821073278957504}
+  runits_2: {rotation: 0, dx: -4.72288495924887, dy: -6.032254367480482}
+  runits_3: {rotation: 0, dx: 2.8681354173915055, dy: -5.868066502994218}
+  runits_4: {rotation: 0, dx: -1.8664830368064012, dy: 3.994876027391382}
+  runits_5: {rotation: 0, dx: 1.2576437297169987, dy: 2.9869038580778717}
+  runits_6: {rotation: 0, dx: -1.7607012216037983, dy: -2.5886500103341556}
+  runits_7: {rotation: 0, dx: 1.2576437297169987, dy: -6.361581199485151}
+  runits_8: {rotation: 0, dx: 6.518786665699776, dy: 1.655897577460715}
+  runits_9: {rotation: 0, dx: 0.1152840085573914, dy: -0.4401753054009496}
+  runits_10: {rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757}
+  runits_11: {rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757}
+  runits_12: {rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757}
+  runits_13: {rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757}
+  runits_14: {rotation: 0, dx: 0.817468424316049, dy: 1.079477534673757}
+nets:
+- ['runits_0,p', 'runits_1,p']
+- ['runits_1,n', 'runits_0,p']
+- ['runits_2,p', 'runits_0,p']
+- ['runits_2,n', 'runits_0,p']
+- ['runits_3,p', 'runits_0,p']
+- ['runits_3,n', 'runits_0,p']
+- ['runits_4,p', 'runits_0,p']
+- ['runits_4,n', 'runits_0,p']
+- ['runits_5,p', 'runits_0,p']
+- ['runits_5,n', 'runits_0,p']
+- ['runits_6,p', 'runits_0,p']
+- ['runits_6,n', 'runits_0,p']
+- ['runits_7,p', 'runits_0,p']
+- ['runits_7,n', 'runits_0,p']
+- ['runits_8,p', 'runits_0,p']
+- ['runits_8,n', 'runits_0,p']
+- ['runits_9,p', 'runits_0,p']
+- ['runits_9,n', 'runits_0,p']
+- ['runits_10,p', 'runits_0,p']
+- ['runits_10,n', 'runits_0,p']
+- ['runits_11,p', 'runits_0,p']
+- ['runits_11,n', 'runits_0,p']
+- ['runits_12,p', 'runits_0,p']
+- ['runits_12,n', 'runits_0,p']
+- ['runits_13,p', 'runits_0,p']
+- ['runits_13,n', 'runits_0,p']
+- ['runits_14,n', 'runits_0,p']
+ports: {}
+schema_version: 1
diff --git a/pyproject.toml b/pyproject.toml
index 400753d0..6c724d51 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -124,8 +124,8 @@ vlsir = [
 ]
 
 [tool.codespell]
-ignore-words-list = 'te, te/tm, te, ba, fpr, fpr_spacing, ro, nd, donot, schem, Ue'
-skip = 'notebooks/palace_02_fullwave.ipynb'
+ignore-words-list = 'te, te/tm, te, ba, fpr, fpr_spacing, ro, nd, donot, schem, Ue, Inout'
+skip = 'notebooks/palace_02_fullwave.ipynb, notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb'
 
 [tool.mypy]
 python_version = "3.10"

From 6ccab964523823591d543d62c33f2489315686cc Mon Sep 17 00:00:00 2001
From: daquintero 
Date: Sat, 8 Jun 2024 20:09:09 +0200
Subject: [PATCH 5/7] :wrench: Updated actions to pass?

---
 .github/workflows/pages.yml                   |  2 +-
 .github/workflows/test_code.yml               |  2 +-
 ...ky130nm_inverter_schematic_to_layout.ipynb | 65 ++++++++++++-------
 pyproject.toml                                |  2 +-
 4 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index 3e8fd1f4..594c4032 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -29,7 +29,7 @@ jobs:
         run: |
           eval "$(micromamba shell hook --shell=bash)"
           micromamba activate
-          micromamba install -c conda-forge pymeep=*=mpi_mpich_* nlopt -y
+          micromamba install -c conda-forge pymeep=*=mpi_mpich_* nlopt hdl21 -y
           make dev test-data
           make docs
       - name: Upload artifact
diff --git a/.github/workflows/test_code.yml b/.github/workflows/test_code.yml
index 8152c256..9e568d20 100644
--- a/.github/workflows/test_code.yml
+++ b/.github/workflows/test_code.yml
@@ -29,7 +29,7 @@ jobs:
       fail-fast: false
       max-parallel: 12
       matrix:
-        plugin: [femwell, gmsh, meow, sax, tidy3d, klayout, vlsir]
+        plugin: [femwell, gmsh, meow, sax, tidy3d, klayout, vlsir, hdl21]
 
     name: Test ${{ matrix.plugin }}
     steps:
diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
index e78dca39..c49bb526 100644
--- a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
+++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
@@ -42,10 +42,29 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "id": "4",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "PydanticUserError",
+     "evalue": "A non-annotated attribute was detected: `HACK_TODO_REMOVE = (2, 0)`. All model fields require a type annotation; if `HACK_TODO_REMOVE` is not meant to be a field, you may be able to resolve this error by annotating it as a `ClassVar` or updating `model_config['ignored_types']`.\n\nFor further information visit https://errors.pydantic.dev/2.6/u/model-field-missing-annotation",
+     "output_type": "error",
+     "traceback": [
+      "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
+      "\u001B[0;31mPydanticUserError\u001B[0m                         Traceback (most recent call last)",
+      "Cell \u001B[0;32mIn[1], line 3\u001B[0m\n\u001B[1;32m      1\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mh\u001B[39;00m\n\u001B[1;32m      2\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mgf\u001B[39;00m\n\u001B[0;32m----> 3\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mgplugins\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mgph\u001B[39;00m\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130_hdl21\u001B[39;00m\n",
+      "File \u001B[0;32m~/phd/collaborate/gplugins/gplugins/hdl21/__init__.py:6\u001B[0m\n\u001B[1;32m      1\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mnetlist\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      2\u001B[0m     ParsedProtoVLSIR,\n\u001B[1;32m      3\u001B[0m     generate_raw_netlist_dict_from_module,\n\u001B[1;32m      4\u001B[0m     generate_raw_yaml_from_module,\n\u001B[1;32m      5\u001B[0m )\n\u001B[0;32m----> 6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01msky130\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      7\u001B[0m     filter_port,\n\u001B[1;32m      8\u001B[0m     find_most_relevant_gds,\n\u001B[1;32m      9\u001B[0m     hdl21_module_to_schematic_editor,\n\u001B[1;32m     10\u001B[0m )\n\u001B[1;32m     12\u001B[0m __all__ \u001B[38;5;241m=\u001B[39m [\n\u001B[1;32m     13\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mfilter_port\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m     14\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mfind_most_relevant_gds\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     18\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mParsedProtoVLSIR\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m     19\u001B[0m ]\n",
+      "File \u001B[0;32m~/phd/collaborate/gplugins/gplugins/hdl21/sky130.py:5\u001B[0m\n\u001B[1;32m      2\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mdifflib\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m get_close_matches\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mh\u001B[39;00m\n\u001B[0;32m----> 5\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\n\u001B[1;32m      7\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mschematic_editor\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m SchematicEditor\n\u001B[1;32m      8\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mnetlist\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      9\u001B[0m     _generate_raw_netlist_dict_from_proto_dict,\n\u001B[1;32m     10\u001B[0m     _parse_module_to_proto_dict,\n\u001B[1;32m     11\u001B[0m )\n",
+      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/__init__.py:8\u001B[0m\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mget_factories\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m get_cells\n\u001B[1;32m      6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mpdk\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Pdk\n\u001B[0;32m----> 8\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m components, pcells\n\u001B[1;32m      9\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mlayers\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m LAYER, LAYER_STACK, LAYER_VIEWS\n\u001B[1;32m     10\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mtech\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m cross_sections\n",
+      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/components.py:7\u001B[0m\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mcell\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m cell\n\u001B[1;32m      6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mconfig\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m PATH\n\u001B[0;32m----> 7\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mlayers\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m LAYER\n\u001B[1;32m      9\u001B[0m \u001B[38;5;66;03m# add_ports_m1 = gf.partial(\u001B[39;00m\n\u001B[1;32m     10\u001B[0m \u001B[38;5;66;03m#     gf.add_ports.add_ports_from_markers_inside,\u001B[39;00m\n\u001B[1;32m     11\u001B[0m \u001B[38;5;66;03m#     pin_layer=LAYER.met1pin,\u001B[39;00m\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     19\u001B[0m \u001B[38;5;66;03m#     port_type=\"electrical\",\u001B[39;00m\n\u001B[1;32m     20\u001B[0m \u001B[38;5;66;03m# )\u001B[39;00m\n\u001B[1;32m     22\u001B[0m add_ports_m1 \u001B[38;5;241m=\u001B[39m gf\u001B[38;5;241m.\u001B[39mpartial(\n\u001B[1;32m     23\u001B[0m     gf\u001B[38;5;241m.\u001B[39madd_ports\u001B[38;5;241m.\u001B[39madd_ports_from_labels,\n\u001B[1;32m     24\u001B[0m     port_layer\u001B[38;5;241m=\u001B[39mLAYER\u001B[38;5;241m.\u001B[39mmet1drawing,\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     29\u001B[0m     guess_port_orientation\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m,\n\u001B[1;32m     30\u001B[0m )\n",
+      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/layers.py:8\u001B[0m\n\u001B[1;32m      3\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mpydantic\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m BaseModel\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mconfig\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m PATH\n\u001B[0;32m----> 8\u001B[0m \u001B[38;5;28;01mclass\u001B[39;00m \u001B[38;5;21;01mLayerMap\u001B[39;00m(BaseModel):\n\u001B[1;32m      9\u001B[0m     areaidanalog: Layer \u001B[38;5;241m=\u001B[39m (\u001B[38;5;241m81\u001B[39m, \u001B[38;5;241m79\u001B[39m)\n\u001B[1;32m     10\u001B[0m     areaidcore: Layer \u001B[38;5;241m=\u001B[39m (\u001B[38;5;241m81\u001B[39m, \u001B[38;5;241m2\u001B[39m)\n",
+      "File \u001B[0;32m~/.pyenv/versions/3.10.13/envs/gplugins_spice/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py:92\u001B[0m, in \u001B[0;36mModelMetaclass.__new__\u001B[0;34m(mcs, cls_name, bases, namespace, __pydantic_generic_metadata__, __pydantic_reset_parent_namespace__, _create_model_module, **kwargs)\u001B[0m\n\u001B[1;32m     90\u001B[0m config_wrapper \u001B[38;5;241m=\u001B[39m ConfigWrapper\u001B[38;5;241m.\u001B[39mfor_model(bases, namespace, kwargs)\n\u001B[1;32m     91\u001B[0m namespace[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel_config\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m config_wrapper\u001B[38;5;241m.\u001B[39mconfig_dict\n\u001B[0;32m---> 92\u001B[0m private_attributes \u001B[38;5;241m=\u001B[39m \u001B[43minspect_namespace\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m     93\u001B[0m \u001B[43m    \u001B[49m\u001B[43mnamespace\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconfig_wrapper\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mignored_types\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mclass_vars\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbase_field_names\u001B[49m\n\u001B[1;32m     94\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m     95\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m private_attributes:\n\u001B[1;32m     96\u001B[0m     original_model_post_init \u001B[38;5;241m=\u001B[39m get_model_post_init(namespace, bases)\n",
+      "File \u001B[0;32m~/.pyenv/versions/3.10.13/envs/gplugins_spice/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py:384\u001B[0m, in \u001B[0;36minspect_namespace\u001B[0;34m(namespace, ignored_types, base_class_vars, base_class_fields)\u001B[0m\n\u001B[1;32m    380\u001B[0m             \u001B[38;5;28;01mraise\u001B[39;00m PydanticUserError(\n\u001B[1;32m    381\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mField \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m requires a type annotation\u001B[39m\u001B[38;5;124m'\u001B[39m, code\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel-field-missing-annotation\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    382\u001B[0m             )\n\u001B[1;32m    383\u001B[0m         \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m--> 384\u001B[0m             \u001B[38;5;28;01mraise\u001B[39;00m PydanticUserError(\n\u001B[1;32m    385\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mA non-annotated attribute was detected: `\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m = \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvalue\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m`. All model fields require a \u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    386\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtype annotation; if `\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m` is not meant to be a field, you may be able to resolve this \u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    387\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124merror by annotating it as a `ClassVar` or updating `model_config[\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mignored_types\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m]`.\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m    388\u001B[0m                 code\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel-field-missing-annotation\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m    389\u001B[0m             )\n\u001B[1;32m    391\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m ann_name, ann_type \u001B[38;5;129;01min\u001B[39;00m raw_annotations\u001B[38;5;241m.\u001B[39mitems():\n\u001B[1;32m    392\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m (\n\u001B[1;32m    393\u001B[0m         is_valid_privateattr_name(ann_name)\n\u001B[1;32m    394\u001B[0m         \u001B[38;5;129;01mand\u001B[39;00m ann_name \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m private_attributes\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m    398\u001B[0m         \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;28mgetattr\u001B[39m(ann_type, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m__module__\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;28;01mNone\u001B[39;00m) \u001B[38;5;241m!=\u001B[39m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mfunctools\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    399\u001B[0m     ):\n",
+      "\u001B[0;31mPydanticUserError\u001B[0m: A non-annotated attribute was detected: `HACK_TODO_REMOVE = (2, 0)`. All model fields require a type annotation; if `HACK_TODO_REMOVE` is not meant to be a field, you may be able to resolve this error by annotating it as a `ClassVar` or updating `model_config['ignored_types']`.\n\nFor further information visit https://errors.pydantic.dev/2.6/u/model-field-missing-annotation"
+     ]
+    }
+   ],
    "source": [
     "import hdl21 as h\n",
     "import gdsfactory as gf\n",
@@ -229,7 +248,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "13",
+   "id": "1f8112a5-a12e-4771-abd3-7bdda2a4e511",
    "metadata": {},
    "source": [
     "### More Advanced Example - R2R DAC\n",
@@ -242,7 +261,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "14",
+   "id": "54253a7f-0376-49d6-b1bc-9fb28143a84b",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -462,7 +481,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "15",
+   "id": "75dff489-179e-4c7d-befb-fd4386c2155d",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -476,7 +495,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "16",
+   "id": "0a3d6454-899b-4969-aa92-fa4e9398dc9e",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -488,7 +507,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "17",
+   "id": "13",
    "metadata": {},
    "source": [
     "## (WIP, future integrations) Setting up the required tools: `xschem`, `volare` and the `sky130nm` PDKs\n",
@@ -507,7 +526,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "18",
+   "id": "14",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -517,7 +536,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "19",
+   "id": "15",
    "metadata": {},
    "source": [
     "Our example files are under the directory of `gplugins/notebooks/data`, let's extract our SPICE declaration:"
@@ -526,7 +545,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "20",
+   "id": "16",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -542,7 +561,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "21",
+   "id": "17",
    "metadata": {},
    "source": [
     "Let's list the files we're going to be reading into:"
@@ -551,7 +570,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "22",
+   "id": "18",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -560,7 +579,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "23",
+   "id": "19",
    "metadata": {},
    "source": [
     "Let's extract our raw spice netlist. An important aspect to understand is that unfortunately, every SPICE tool developed their own file format. So in this sense, netlist parsing function is implemented according to the type of spice toolset that has generated this netlist.\n",
@@ -574,7 +593,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "24",
+   "id": "20",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -585,7 +604,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "25",
+   "id": "21",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -595,7 +614,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "26",
+   "id": "22",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -605,7 +624,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "27",
+   "id": "23",
    "metadata": {},
    "source": [
     "So we can use our `netlist` parsing function to convert this to a compatible netlist for gdsfactory plugins into the extracted elements and the extracted connections:"
@@ -614,7 +633,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "28",
+   "id": "24",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -624,7 +643,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "29",
+   "id": "25",
    "metadata": {},
    "source": [
     "### Automated schematic-driven-layout"
@@ -632,7 +651,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "30",
+   "id": "26",
    "metadata": {},
    "source": [
     "We have now extracted our spice elements and our connectivity. Let's explore what we have there:"
@@ -640,7 +659,7 @@
   },
   {
    "cell_type": "raw",
-   "id": "31",
+   "id": "27",
    "metadata": {},
    "source": [
     "# Current TODOs\n",
@@ -652,7 +671,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "32",
+   "id": "28",
    "metadata": {},
    "outputs": [],
    "source": []
@@ -660,7 +679,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "33",
+   "id": "29",
    "metadata": {},
    "outputs": [],
    "source": []
diff --git a/pyproject.toml b/pyproject.toml
index 6c724d51..409f524c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -48,7 +48,7 @@ dev = [
   "hyperopt",
   "tbump",
   "towncrier",
-  "ray"
+  "ray",
 ]
 devsim = [
   "devsim",

From 8f79208e67d9d2518de49e0742df1fab0adf33cd Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Sat, 8 Jun 2024 18:09:34 +0000
Subject: [PATCH 6/7] [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
---
 ...ky130nm_inverter_schematic_to_layout.ipynb | 65 +++++++------------
 pyproject.toml                                |  2 +-
 2 files changed, 24 insertions(+), 43 deletions(-)

diff --git a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
index c49bb526..e78dca39 100644
--- a/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
+++ b/notebooks/22_sky130nm_inverter_schematic_to_layout.ipynb
@@ -42,29 +42,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "id": "4",
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "PydanticUserError",
-     "evalue": "A non-annotated attribute was detected: `HACK_TODO_REMOVE = (2, 0)`. All model fields require a type annotation; if `HACK_TODO_REMOVE` is not meant to be a field, you may be able to resolve this error by annotating it as a `ClassVar` or updating `model_config['ignored_types']`.\n\nFor further information visit https://errors.pydantic.dev/2.6/u/model-field-missing-annotation",
-     "output_type": "error",
-     "traceback": [
-      "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
-      "\u001B[0;31mPydanticUserError\u001B[0m                         Traceback (most recent call last)",
-      "Cell \u001B[0;32mIn[1], line 3\u001B[0m\n\u001B[1;32m      1\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mh\u001B[39;00m\n\u001B[1;32m      2\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mgf\u001B[39;00m\n\u001B[0;32m----> 3\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mgplugins\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mgph\u001B[39;00m\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130_hdl21\u001B[39;00m\n",
-      "File \u001B[0;32m~/phd/collaborate/gplugins/gplugins/hdl21/__init__.py:6\u001B[0m\n\u001B[1;32m      1\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mnetlist\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      2\u001B[0m     ParsedProtoVLSIR,\n\u001B[1;32m      3\u001B[0m     generate_raw_netlist_dict_from_module,\n\u001B[1;32m      4\u001B[0m     generate_raw_yaml_from_module,\n\u001B[1;32m      5\u001B[0m )\n\u001B[0;32m----> 6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01msky130\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      7\u001B[0m     filter_port,\n\u001B[1;32m      8\u001B[0m     find_most_relevant_gds,\n\u001B[1;32m      9\u001B[0m     hdl21_module_to_schematic_editor,\n\u001B[1;32m     10\u001B[0m )\n\u001B[1;32m     12\u001B[0m __all__ \u001B[38;5;241m=\u001B[39m [\n\u001B[1;32m     13\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mfilter_port\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m     14\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mfind_most_relevant_gds\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     18\u001B[0m     \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mParsedProtoVLSIR\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m     19\u001B[0m ]\n",
-      "File \u001B[0;32m~/phd/collaborate/gplugins/gplugins/hdl21/sky130.py:5\u001B[0m\n\u001B[1;32m      2\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mdifflib\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m get_close_matches\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mhdl21\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mh\u001B[39;00m\n\u001B[0;32m----> 5\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\n\u001B[1;32m      7\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mschematic_editor\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m SchematicEditor\n\u001B[1;32m      8\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mnetlist\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m (\n\u001B[1;32m      9\u001B[0m     _generate_raw_netlist_dict_from_proto_dict,\n\u001B[1;32m     10\u001B[0m     _parse_module_to_proto_dict,\n\u001B[1;32m     11\u001B[0m )\n",
-      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/__init__.py:8\u001B[0m\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mget_factories\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m get_cells\n\u001B[1;32m      6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mpdk\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Pdk\n\u001B[0;32m----> 8\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m components, pcells\n\u001B[1;32m      9\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mlayers\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m LAYER, LAYER_STACK, LAYER_VIEWS\n\u001B[1;32m     10\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mtech\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m cross_sections\n",
-      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/components.py:7\u001B[0m\n\u001B[1;32m      4\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mgdsfactory\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mcell\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m cell\n\u001B[1;32m      6\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mconfig\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m PATH\n\u001B[0;32m----> 7\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mlayers\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m LAYER\n\u001B[1;32m      9\u001B[0m \u001B[38;5;66;03m# add_ports_m1 = gf.partial(\u001B[39;00m\n\u001B[1;32m     10\u001B[0m \u001B[38;5;66;03m#     gf.add_ports.add_ports_from_markers_inside,\u001B[39;00m\n\u001B[1;32m     11\u001B[0m \u001B[38;5;66;03m#     pin_layer=LAYER.met1pin,\u001B[39;00m\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     19\u001B[0m \u001B[38;5;66;03m#     port_type=\"electrical\",\u001B[39;00m\n\u001B[1;32m     20\u001B[0m \u001B[38;5;66;03m# )\u001B[39;00m\n\u001B[1;32m     22\u001B[0m add_ports_m1 \u001B[38;5;241m=\u001B[39m gf\u001B[38;5;241m.\u001B[39mpartial(\n\u001B[1;32m     23\u001B[0m     gf\u001B[38;5;241m.\u001B[39madd_ports\u001B[38;5;241m.\u001B[39madd_ports_from_labels,\n\u001B[1;32m     24\u001B[0m     port_layer\u001B[38;5;241m=\u001B[39mLAYER\u001B[38;5;241m.\u001B[39mmet1drawing,\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m     29\u001B[0m     guess_port_orientation\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m,\n\u001B[1;32m     30\u001B[0m )\n",
-      "File \u001B[0;32m~/phd/collaborate/skywater130/sky130/layers.py:8\u001B[0m\n\u001B[1;32m      3\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mpydantic\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m BaseModel\n\u001B[1;32m      5\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01msky130\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mconfig\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m PATH\n\u001B[0;32m----> 8\u001B[0m \u001B[38;5;28;01mclass\u001B[39;00m \u001B[38;5;21;01mLayerMap\u001B[39;00m(BaseModel):\n\u001B[1;32m      9\u001B[0m     areaidanalog: Layer \u001B[38;5;241m=\u001B[39m (\u001B[38;5;241m81\u001B[39m, \u001B[38;5;241m79\u001B[39m)\n\u001B[1;32m     10\u001B[0m     areaidcore: Layer \u001B[38;5;241m=\u001B[39m (\u001B[38;5;241m81\u001B[39m, \u001B[38;5;241m2\u001B[39m)\n",
-      "File \u001B[0;32m~/.pyenv/versions/3.10.13/envs/gplugins_spice/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py:92\u001B[0m, in \u001B[0;36mModelMetaclass.__new__\u001B[0;34m(mcs, cls_name, bases, namespace, __pydantic_generic_metadata__, __pydantic_reset_parent_namespace__, _create_model_module, **kwargs)\u001B[0m\n\u001B[1;32m     90\u001B[0m config_wrapper \u001B[38;5;241m=\u001B[39m ConfigWrapper\u001B[38;5;241m.\u001B[39mfor_model(bases, namespace, kwargs)\n\u001B[1;32m     91\u001B[0m namespace[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel_config\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m config_wrapper\u001B[38;5;241m.\u001B[39mconfig_dict\n\u001B[0;32m---> 92\u001B[0m private_attributes \u001B[38;5;241m=\u001B[39m \u001B[43minspect_namespace\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m     93\u001B[0m \u001B[43m    \u001B[49m\u001B[43mnamespace\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mconfig_wrapper\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mignored_types\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mclass_vars\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbase_field_names\u001B[49m\n\u001B[1;32m     94\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m     95\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m private_attributes:\n\u001B[1;32m     96\u001B[0m     original_model_post_init \u001B[38;5;241m=\u001B[39m get_model_post_init(namespace, bases)\n",
-      "File \u001B[0;32m~/.pyenv/versions/3.10.13/envs/gplugins_spice/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py:384\u001B[0m, in \u001B[0;36minspect_namespace\u001B[0;34m(namespace, ignored_types, base_class_vars, base_class_fields)\u001B[0m\n\u001B[1;32m    380\u001B[0m             \u001B[38;5;28;01mraise\u001B[39;00m PydanticUserError(\n\u001B[1;32m    381\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mField \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m requires a type annotation\u001B[39m\u001B[38;5;124m'\u001B[39m, code\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel-field-missing-annotation\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    382\u001B[0m             )\n\u001B[1;32m    383\u001B[0m         \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m--> 384\u001B[0m             \u001B[38;5;28;01mraise\u001B[39;00m PydanticUserError(\n\u001B[1;32m    385\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mA non-annotated attribute was detected: `\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m = \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvalue\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[38;5;124m`. All model fields require a \u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    386\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtype annotation; if `\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvar_name\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m` is not meant to be a field, you may be able to resolve this \u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    387\u001B[0m                 \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124merror by annotating it as a `ClassVar` or updating `model_config[\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mignored_types\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m]`.\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m    388\u001B[0m                 code\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodel-field-missing-annotation\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m    389\u001B[0m             )\n\u001B[1;32m    391\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m ann_name, ann_type \u001B[38;5;129;01min\u001B[39;00m raw_annotations\u001B[38;5;241m.\u001B[39mitems():\n\u001B[1;32m    392\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m (\n\u001B[1;32m    393\u001B[0m         is_valid_privateattr_name(ann_name)\n\u001B[1;32m    394\u001B[0m         \u001B[38;5;129;01mand\u001B[39;00m ann_name \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m private_attributes\n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m    398\u001B[0m         \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;28mgetattr\u001B[39m(ann_type, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m__module__\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;28;01mNone\u001B[39;00m) \u001B[38;5;241m!=\u001B[39m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mfunctools\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m    399\u001B[0m     ):\n",
-      "\u001B[0;31mPydanticUserError\u001B[0m: A non-annotated attribute was detected: `HACK_TODO_REMOVE = (2, 0)`. All model fields require a type annotation; if `HACK_TODO_REMOVE` is not meant to be a field, you may be able to resolve this error by annotating it as a `ClassVar` or updating `model_config['ignored_types']`.\n\nFor further information visit https://errors.pydantic.dev/2.6/u/model-field-missing-annotation"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "import hdl21 as h\n",
     "import gdsfactory as gf\n",
@@ -248,7 +229,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "1f8112a5-a12e-4771-abd3-7bdda2a4e511",
+   "id": "13",
    "metadata": {},
    "source": [
     "### More Advanced Example - R2R DAC\n",
@@ -261,7 +242,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "54253a7f-0376-49d6-b1bc-9fb28143a84b",
+   "id": "14",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -481,7 +462,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "75dff489-179e-4c7d-befb-fd4386c2155d",
+   "id": "15",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -495,7 +476,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "0a3d6454-899b-4969-aa92-fa4e9398dc9e",
+   "id": "16",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -507,7 +488,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "13",
+   "id": "17",
    "metadata": {},
    "source": [
     "## (WIP, future integrations) Setting up the required tools: `xschem`, `volare` and the `sky130nm` PDKs\n",
@@ -526,7 +507,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "14",
+   "id": "18",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -536,7 +517,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "15",
+   "id": "19",
    "metadata": {},
    "source": [
     "Our example files are under the directory of `gplugins/notebooks/data`, let's extract our SPICE declaration:"
@@ -545,7 +526,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "16",
+   "id": "20",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -561,7 +542,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "17",
+   "id": "21",
    "metadata": {},
    "source": [
     "Let's list the files we're going to be reading into:"
@@ -570,7 +551,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "18",
+   "id": "22",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -579,7 +560,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "19",
+   "id": "23",
    "metadata": {},
    "source": [
     "Let's extract our raw spice netlist. An important aspect to understand is that unfortunately, every SPICE tool developed their own file format. So in this sense, netlist parsing function is implemented according to the type of spice toolset that has generated this netlist.\n",
@@ -593,7 +574,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "20",
+   "id": "24",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -604,7 +585,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "21",
+   "id": "25",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -614,7 +595,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "22",
+   "id": "26",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -624,7 +605,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "23",
+   "id": "27",
    "metadata": {},
    "source": [
     "So we can use our `netlist` parsing function to convert this to a compatible netlist for gdsfactory plugins into the extracted elements and the extracted connections:"
@@ -633,7 +614,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "24",
+   "id": "28",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -643,7 +624,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "25",
+   "id": "29",
    "metadata": {},
    "source": [
     "### Automated schematic-driven-layout"
@@ -651,7 +632,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "26",
+   "id": "30",
    "metadata": {},
    "source": [
     "We have now extracted our spice elements and our connectivity. Let's explore what we have there:"
@@ -659,7 +640,7 @@
   },
   {
    "cell_type": "raw",
-   "id": "27",
+   "id": "31",
    "metadata": {},
    "source": [
     "# Current TODOs\n",
@@ -671,7 +652,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "28",
+   "id": "32",
    "metadata": {},
    "outputs": [],
    "source": []
@@ -679,7 +660,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "29",
+   "id": "33",
    "metadata": {},
    "outputs": [],
    "source": []
diff --git a/pyproject.toml b/pyproject.toml
index 409f524c..6c724d51 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -48,7 +48,7 @@ dev = [
   "hyperopt",
   "tbump",
   "towncrier",
-  "ray",
+  "ray"
 ]
 devsim = [
   "devsim",

From ba5802b30ca206cbdcd1ce25e72c0db73731bd22 Mon Sep 17 00:00:00 2001
From: daquintero 
Date: Sat, 8 Jun 2024 20:13:10 +0200
Subject: [PATCH 7/7] :wrench: Updated actions to pass?

---
 pyproject.toml | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index 409f524c..fa573895 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -85,7 +85,8 @@ gmsh = [
 hdl21 = [
   "hdl21>=6.0.0,<7.0.0",
   "vlsir>=6.0.0",
-  "sky130-hdl21>=6.0.0"
+  "sky130-hdl21>=6.0.0",
+  "sky130 @ git+https://github.com/gdsfactory/skywater130.git@main"
 ]
 klayout = [
   "klayout",
@@ -110,9 +111,6 @@ schematic = [
   "bokeh",
   "natsort"
 ]
-sky130 = [
-  "sky130 @ git+https://github.com/daquintero/skywater130.git@latest_pdk"
-]
 tidy3d = [
   "tidy3d>=2.5.2,<2.7",
   "meshio",