Source code for reasitic

"""reASITIC — reverse-engineered Python implementation of ASITIC.

Top-level package re-exports the most-used symbols. Submodules:

* :mod:`reasitic.tech` — ``.tek`` parser and the Tech / Layer /
  Metal / Via dataclasses.
* :mod:`reasitic.geometry` — Point / Segment / Polygon / Shape and
  9 shape builders (square / polygon / wire / ring / via /
  transformer / 3D-transformer / symmetric-square / balun /
  capacitor).
* :mod:`reasitic.inductance` — Greenhouse partial-inductance
  summation, filament-level current crowding, eddy-current
  correction.
* :mod:`reasitic.resistance` — DC and Wheeler skin-effect AC
  resistance.
* :mod:`reasitic.quality` — metal-loss-only Q.
* :mod:`reasitic.network` — Y/Z/S conversions, Pi/Pi3/Pi4 models,
  Zin, SelfRes, ShuntR, transformer analysis, frequency sweep,
  Touchstone export.
* :mod:`reasitic.optimise` — OptSq, OptPoly, OptArea, OptSymSq,
  BatchOpt, parametric sweeps.
* :mod:`reasitic.substrate` — per-metal-layer parallel-plate shunt
  cap, Sommerfeld Green's function, FFT-grid Green's.
* :mod:`reasitic.exports` — CIF, Sonnet, Tek, SPICE.
* :mod:`reasitic.persistence` — JSON save/load.
* :mod:`reasitic.report` — multi-frequency design report.
* :mod:`reasitic.info` — MetArea, ListSegs, LRMAT.
* :mod:`reasitic.plot` — optional matplotlib helpers.
* :mod:`reasitic.validation` — driver for the legacy ASITIC binary.
* :mod:`reasitic.cli` — REPL CLI (44 commands).
"""

from reasitic._version import __version__
from reasitic.geometry import (
    Point,
    Polygon,
    Segment,
    Shape,
    balun,
    capacitor,
    emit_vias_at_layer_transitions,
    extend_last_segment_to_chip_edge,
    extend_terminal_segment,
    multi_metal_square,
    polygon_edge_vectors,
    polygon_spiral,
    ring,
    shapes_bounding_box,
    square_spiral,
    symmetric_polygon,
    symmetric_square,
    transformer,
    transformer_3d,
    via,
    wire,
)
from reasitic.inductance import (
    compute_mutual_inductance,
    compute_self_inductance,
    coupling_coefficient,
)
from reasitic.quality import metal_only_q
from reasitic.resistance import (
    compute_ac_resistance,
    compute_dc_resistance,
    three_class_resistance,
)
from reasitic.spiral_helpers import (
    segment_pair_distance_metric,
    spiral_max_n,
    spiral_radius_for_n,
    spiral_turn_position,
    wire_position_periodic_fold,
)
from reasitic.tech import (
    Tech,
    parse_tech,
    parse_tech_file,
    write_tech,
    write_tech_file,
)


[docs] def summary() -> str: """Return a one-line description of this reASITIC install. Useful from the REPL or scripts to confirm version, optional extras (matplotlib), and Python version. Returns the string; callers can ``print(summary())`` if needed. """ import sys parts = [f"reASITIC {__version__}"] parts.append(f"Python {sys.version_info.major}.{sys.version_info.minor}") try: import scipy parts.append(f"scipy {scipy.__version__}") except ImportError: parts.append("scipy missing") try: import matplotlib # noqa: F401 parts.append("matplotlib available") except ImportError: parts.append("matplotlib not installed (pip install reASITIC[plot])") return " | ".join(parts)
__all__ = [ "Point", "Polygon", "Segment", "Shape", "Tech", "__version__", "balun", "capacitor", "compute_ac_resistance", "compute_dc_resistance", "compute_mutual_inductance", "compute_self_inductance", "coupling_coefficient", "emit_vias_at_layer_transitions", "extend_last_segment_to_chip_edge", "extend_terminal_segment", "metal_only_q", "multi_metal_square", "parse_tech", "parse_tech_file", "polygon_edge_vectors", "polygon_spiral", "ring", "segment_pair_distance_metric", "shapes_bounding_box", "spiral_max_n", "spiral_radius_for_n", "spiral_turn_position", "square_spiral", "summary", "symmetric_polygon", "symmetric_square", "three_class_resistance", "transformer", "transformer_3d", "via", "wire", "wire_position_periodic_fold", "write_tech", "write_tech_file", ]