Skip to content

pablomarcel/pywire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

PyWire

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.


Why PyWire?

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 .cir files 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.


What the app does

PyWire currently focuses on transient simulation workflows.

Core capabilities

  • GUI wrapper around PySpice
  • SPICE netlist input through:
    • built-in editor
    • file picker for .cir files
  • 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

GUI workflow

PyWire was designed so a user can move through a simulation quickly:

  1. Paste a netlist into the editor or select a .cir file.
  2. Parse or list available nodes.
  3. Choose the nodes to plot.
  4. Adjust transient parameters if needed.
  5. Run the simulation.
  6. Inspect the plot on the right side of the GUI.
  7. Review logs, metadata, and analysis tabs.
  8. 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.


Example netlists

PyWire works well with simple educational and exploratory netlists.

Full bridge rectifier

* 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

* 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.


What makes PyWire useful

PyWire is not trying to replace the raw SPICE workflow. It is trying to make it easier to use.

Practical usability wins

  • Editor or file workflow
    You can either paste a netlist into the GUI or point the app at an existing .cir file.

  • 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.


Analysis features

PyWire includes optional analysis helpers for waveform inspection.

RMS / FFT readouts

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.


Current scope

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

Project philosophy

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.


Status

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

Suggested audience

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

Future potential

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

In one sentence

PyWire is a practical desktop front end for PySpice that turns netlist-based transient simulation into a cleaner, faster, and more visual workflow.

About

PyWire is a GUI-first circuit simulation app built on top of PySpice. It loads or edits SPICE netlists, runs transient simulations, plots selected node voltages, and surfaces metadata, logs, RMS, FFT, and harmonic readouts in a practical desktop workflow.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages