Python bindings for SLICOT (Subroutine Library In COntrol Theory) - numerical routines for control systems analysis and design. This is a low-level API primarily targeting AI agents and higher-level libraries.
Note: This package was previously published as
slicoton PyPI. Install withpip install ctrlsys.
pip install ctrlsys- 600+ routines for control systems
- State-space methods: Riccati, Lyapunov, pole placement
- Model reduction: Balance & Truncate, Hankel-norm
- System identification: MOESP, N4SID
- NumPy integration: Column-major arrays
While you can use this library directly, it's recommended to access it through AI coding agents that understand control theory conventions and SLICOT's API patterns.
For agent skills (Claude Code, Cursor, etc.), see control-skills.
import numpy as np
import ctrlsys
# Controllability analysis
A = np.array([[1, 2], [3, 4]], order='F')
B = np.array([[1], [0]], order='F')
a_out, b_out, ncont, z, tau, info = ctrlsys.ab01md('I', A, B.flatten(), 0.0)
print(f"Controllable dimension: {ncont}")SLICOT uses Fortran conventions:
A = np.array([[1, 2], [3, 4]], order='F') # Required!I don't accept direct contributions. Issues and PRs are welcome for illustration, but won't be merged directly. An AI agent reviews submissions and independently decides whether/how to address them. Bug reports appreciated.
This project (C11 translation and Python bindings) is BSD-3-Clause. See LICENSE.
The original SLICOT library is copyright © 1996-2025 The SLICOT Team, maintained by NICONET e.V., and licensed under BSD-3-Clause. See LICENSE-SLICOT.