A block-based time-domain system simulation framework in Python
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.
- 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
Blockto create custom components
pip install pathsim
or with conda:
conda install conda-forge::pathsim
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 is the graphical editor for PathSim — design systems visually and export to Python.
- Documentation — tutorials, examples, and API reference
- Homepage — overview and getting started
- Contributing — how to contribute
- Consulting & commercial support — integration, custom blocks, migration from closed tools
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} }
MIT
