Welcome to SIPPY¶
Systems Identification Package for PYthon (SIPPY)¶
SIPPY is a library for linear model identification of dynamic systems. It aims to be the most user-friendly and comprehensive library for system identification in Python.
Originally developed by Giuseppe Armenise under supervision of Prof. Gabriele Pannocchia.
⚡️ Quickstart¶
To identify system as Auto-Regressive with eXogenous Inputs model (ARX) using Linear Least Squares (LLS) on example data, simply run:
from sippy_unipi import system_identification
from sippy_unipi.datasets import load_sample_siso
Y, U = load_sample_siso()
Id_ARX = system_identification(
Y,
U,
"ARX",
*([4], [[3]], [2], [[11]]),
id_mode="LLS",
)
Get your hand on the algorithms using following Jupyter notebooks and play around with open-spource example data:
- ARX systems (multi input-multi output case)
- ARMAX systems (single input-single output case)
- ARMAX systems (multi input-multi output case)
- Input-output structures (using optimization methods)
- Input-output structures (using recursive methods)
- State space system (multi input-multi output case)
- Continuous Stirred Tank Reactor
🛠 Installation¶
Intended to work with Python 3.10 and above.
Simply run:
pip install sippy_unipi
To install from source, use poetry:
poetry install
Alternatively, you can use Docker to set up the environment. Follow these steps:
-
Clone the repository:
git clone https://github.com/CPCLAB-UNIPI/SIPPY.git cd SIPPY
-
Build the Docker image:
docker build -t sippy .
-
Run the Docker container:
docker run -it --rm sippy
🔮 Features¶
SIPPY provides implementations of the following:
Input-Output Models¶
- FIR
- ARX
- ARMAX
- ARMA
- ARARX
- ARARMAX
- OE
- BJ
- GEN
State-Space Models¶
- N4SID
- MOESP
- CVA
- PARSIM_P
- PARSIM_S
- PARSIM_K
👐 Contributing¶
Feel free to contribute in any way you like, we're always open to new ideas and approaches.
- Feel welcome to open an issue if you think you've spotted a bug or a performance issue.
🤝 Affiliations¶
- University of Pisa, Department of Civil and Industrial Engineering (DICI), Chemical Process Control Laboratory (CPCLab)
- Slovak University of Technology in Bratislava, Department of Information Engineering and Process Control (DIEPC)
💬 Citation¶
If the service or the algorithm has been useful to you and you would like to cite it in an scientific publication, please refer to the paper:
@inproceedings{Armenise2018,
title = {An Open-Source System Identification Package for Multivariable Processes},
author = {Armenise, Giuseppe and Vaccari, Marco and {Bacci di Capaci}, Riccardo and Pannocchia, Gabriele},
booktitle = {2018 UKACC 12th International Conference on Control (CONTROL)},
pages = {152--157},
year = {2018},
organization = {IEEE}
}
📝 License¶
This algorithm is free and open-source software licensed under the LGPL. license, meaning the code can be used royalty-free even in commercial applications.