PyWire is a GUI-first circuit simulation app built on top of PySpice for people who want the flexibility of SPICE netlists without living only in the terminal.
Paste a netlist into the editor or open a .cir file, run a transient simulation, pick the nodes you want to plot, and inspect the results directly in the GUI. PyWire brings together waveform plotting, metadata, logs, and signal analysis in one practical desktop workflow.
A lot of circuit tools either feel too heavy, too opaque, or too CLI-only for quick experimentation.
PyWire was built to make netlist-driven simulation feel usable:
- paste a SPICE netlist directly into the editor
- open existing
.cirfiles from disk - run transient simulations from the GUI
- choose which nodes to plot
- inspect waveform plots in the same app window
- review logs, metadata, RMS, FFT, THD, and harmonics without leaving the GUI
- clear the plot and move on to the next circuit quickly
The goal is simple: keep the power of PySpice and the SPICE netlist workflow, but wrap it in a desktop interface that is easier to explore and more pleasant to use.
PyWire currently focuses on transient simulation workflows.
- GUI wrapper around PySpice
- SPICE netlist input through:
- built-in editor
- file picker for
.cirfiles
- transient simulation execution
- node selection for plotting
- integrated waveform viewer
- editable transient settings such as:
- time step
- end time
- temperature
- nominal temperature
- sidecar metadata display
- analysis panel for readable post-processing output
- log panel for diagnostics and run visibility
- history panel for recent plots
- plot reset / clear workflow for rapid iteration
- RMS / FFT / THD / harmonic readouts from the GUI
- quality-of-life GUI options such as themes and UI scaling
PyWire was designed so a user can move through a simulation quickly:
- Paste a netlist into the editor or select a
.cirfile. - Parse or list available nodes.
- Choose the nodes to plot.
- Adjust transient parameters if needed.
- Run the simulation.
- Inspect the plot on the right side of the GUI.
- Review logs, metadata, and analysis tabs.
- Clear the plot and run the next circuit.
That makes it convenient for trying multiple circuits without constantly bouncing between a code editor, a terminal, and a separate plotting tool.
PyWire works well with simple educational and exploratory netlists.
* Full Bridge Rectifier Circuit
Vinput 1 0 SIN(0 8.5 60)
D1 1 2 Dmodel
D2 0 3 Dmodel
D3 3 4 Dmodel
D4 4 2 Dmodel
Rload 2 0 1k
.model Dmodel D
.tran 1ms 100ms
.end
This kind of netlist is useful for checking:
- input and output waveforms
- rectification behavior across nodes
- how different node voltages evolve during the transient window
* Series RLC with Sine Source
* Observe: v(3) = capacitor voltage
V1 1 0 SIN(0 5 1000)
R1 1 2 10
L1 2 3 10m
C1 3 0 1u
.tran 5u 20m
.end
This is a nice example for:
- observing capacitor voltage over time
- comparing input and internal node behavior
- exploring transient and steady-state response in a simple RLC chain
These kinds of examples highlight the practical value of the app: load a netlist, pick nodes, run it, and immediately see the result.
PyWire is not trying to replace the raw SPICE workflow. It is trying to make it easier to use.
-
Editor or file workflow
You can either paste a netlist into the GUI or point the app at an existing.cirfile. -
Node-driven plotting
Instead of being locked into a fixed output, you choose which nodes matter for the current run. -
Integrated plot viewing
The waveform plot appears directly inside the GUI, so the result feels immediate. -
Built-in diagnostics
Logs, metadata, and analysis are available in adjacent tabs instead of being scattered across multiple tools. -
Fast iteration
Clear the plot, tweak the netlist or simulation settings, and run again. -
CLI parity mindset
The GUI tries to expose the same practical controls that were already implemented through CLI flags.
PyWire includes optional analysis helpers for waveform inspection.
The GUI can compute and display:
- RMS
- FFT-based harmonic information
- THD
- harmonic tables
- configurable fundamental frequency
- configurable number of harmonics
- configurable tail-cycle window
That makes the app useful not only for basic waveform visualization, but also for quick signal-quality inspection.
This project currently emphasizes:
- SPICE netlist usability
- transient simulations
- waveform plotting
- node-based signal inspection
- lightweight analysis from the GUI
It is especially useful for:
- learning
- quick experiments
- exploratory circuit checks
- educational demos
- validating simple SPICE examples visually
PyWire came from a simple idea:
Explore the good stuff PySpice already offers, then expose it through a GUI that is practical enough to use every day.
The app is intentionally centered around netlists. That keeps workflows scriptable and reproducible, while the GUI adds convenience instead of hiding the underlying circuit definition.
PyWire is currently in an early stage, but it is already usable for practical transient-analysis workflows.
The current version demonstrates the intended direction clearly:
- GUI-based netlist simulation
- practical node selection
- embedded plotting
- built-in diagnostics
- built-in analysis readouts
- rapid iteration across multiple circuits
PyWire may be useful for:
- engineers who already work with SPICE netlists
- students learning circuit behavior
- hobbyists who want a lightweight simulation GUI
- people who prefer a visual desktop workflow over terminal-only interaction
- users who want PySpice functionality in a more approachable interface
Natural directions for the project include:
- broader analysis support
- richer plotting options
- more simulation modes
- expanded post-processing tools
- additional workflow polish for larger circuit sets
PyWire is a practical desktop front end for PySpice that turns netlist-based transient simulation into a cleaner, faster, and more visual workflow.