Signalflowgrapher
This Python tool allows you to draw signal-flow graphs, calculate transfer functions (SymPy code is generated for further use in Jupyter notebooks), do graph manipulations (e.g., node elimination and graph transposition), and save a graph as TikZ for use in LaTeX documentation.
Install / Use
/learn @hanspi42/SignalflowgrapherREADME
SignalFlowGrapher
<img width="1220" height="860" alt="SFGrapher" src="https://github.com/user-attachments/assets/9186c224-5ff4-4209-8240-3a01c367d51d" />Version 2.0.0
This version does not have installers yet. Please follow the steps in the section Getting started.
Please report all issues you find to hanspeter.schmid@fhnw.ch or create an issue on github, https://github.com/hanspi42/signalflowgrapher/issues
Getting started
Clone or download from https://github.com/hanspi42/signalflowgrapher, e.g. using git clone https://github.com/hanspi42/signalflowgrapher.
Install Dependencies
To install the dependencies, you can use either Miniforge or Python environments.
With Miniforge
- If you do not have it yet, download Miniforge from https://conda-forge.org/download/ and install it.
- Open a miniforge prompt.
cdto the top directory of this repository.- Build a python environment with
conda env create --file=requirements/sfg.yml. - Activate the evironment with
conda activate sfg. cd src/main/python.- Start the signalflowgrapher with
python main.py.
With Python evironments
- Get the latest version of Python from https://www.python.org/
- Open the repository’s root directory in a terminal
- Create virtual environment using the command
python -m venv signalflowgrapher - On Windows run
signalflowgrapher\Scripts\activate.batorsignalflowgrapher\Scripts\Activate.ps1 - On Unix or MacOS run
source signalflowgrapher/bin/activate - Run
pip install -r requirements/base.txt
Run application from terminal
- Use
python .\src\main\python\main.pyto start the application
User manual and tips
Manual
There is none yet, but to familiarize yourself with signal-flow graphs, you can
- watch the signalflowgrapher intro video on https://tube.switch.ch/videos/609c0510
- Watch "Signal-Flow Graphs in 12 short lessons" on https://tube.switch.ch/channels/d206c96c?order=episodes
- Read our papers, https://link.springer.com/article/10.1007%2Fs10470-018-1131-7 and http://rdcu.be/naw5 .
Tips
- You can get nice SVG versions of the graphs by exporting TikZ, converting it to pdf with pdflatex, and then run https://github.com/dawbarton/pdf2svg
For Developers
Developer documentation
See more details in Developer documentation for V2.0.
Run unit tests and format tests
- Go to the
signalflowgrapher\src\main\pythondirectory in a terminal or an anaconda terminal - Run
python -m unittest - Run
flake8 -v
License
This package is distributed under the Artistic License 2.0, which you find in the file LICENSE and on the internet on https://opensource.org/licenses/Artistic-2.0.
Authors of Version 0.2
The first version checed in was the result of a bachelor thesis at the University of Applied Sciences and Arts Northwestern Switzerland, https://www.fhnw.ch/en/. Students: Simon Näf and Nicolai Wassermann. Advisors: Dominik Gruntz and Hanspeter Schmid. Contact author: hanspeter.schmid@fhnw.ch
Credits
Implemention of Johnson's algorithm: https://github.com/qpwo/python-simple-cycles
Related Skills
node-connect
337.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
337.1kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
