Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
pathsim/pathsim: A Python native dynamical system simulation framework in the block diagram paradigm.

pathsim/pathsim: A Python native dynamical system simulation framework in the block diagram paradigm.

23 hours ago

PathSim Logo

A block-based time-domain system simulation framework in Python

DOI PySimHub PyPI Conda License Release Downloads Coverage

Homepage • Documentation • PathView Editor • Sponsor


PathSim lets you model and simulate complex dynamical systems using an intuitive block diagram approach. Connect sources, integrators, functions, and scopes to build continuous-time, discrete-time, or hybrid systems.

Minimal dependencies: just numpy, scipy, and matplotlib.

Features

  • Hot-swappable — modify blocks and solvers during simulation
  • Stiff solvers — implicit methods (BDF, ESDIRK) for challenging systems
  • Event handling — zero-crossing detection for hybrid systems
  • Hierarchical — nest subsystems for modular designs
  • Extensible — subclass Block to create custom components

Install

pip install pathsim

or with conda:

conda install conda-forge::pathsim

Quick Example

from pathsim import Simulation, Connection
from pathsim.blocks import Integrator, Amplifier, Adder, Scope

Damped harmonic oscillator: x'' + 0.5x' + 2x = 0

int_v = Integrator(5) # velocity, v0=5 int_x = Integrator(2) # position, x0=2 amp_c = Amplifier(-0.5) # damping amp_k = Amplifier(-2) # spring add = Adder() scp = Scope()

sim = Simulation( blocks=[int_v, int_x, amp_c, amp_k, add, scp], connections=[ Connection(int_v, int_x, amp_c), Connection(int_x, amp_k, scp), Connection(amp_c, add), Connection(amp_k, add[1]), Connection(add, int_v), ], dt=0.05 )

sim.run(30) scp.plot()

PathView

PathView is the graphical editor for PathSim — design systems visually and export to Python.

Learn More

Citation

If you use PathSim in research, please cite:

@article{Rother2025,
  author = {Rother, Milan},
  title = {PathSim - A System Simulation Framework},
  journal = {Journal of Open Source Software},
  year = {2025},
  volume = {10},
  number = {109},
  pages = {8158},
  doi = {10.21105/joss.08158}
}

License

MIT

Chat with me