Skip to content

MarekWadinger/SIPPY

 
 

Repository files navigation

Welcome to SIPPY

Supported versions PyPI Package latest release PyPI Package download count (per month) Quality and Tests pre-commit codecov

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:

🛠 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:

  1. Clone the repository:

    git clone https://github.com/CPCLAB-UNIPI/SIPPY.git
    cd SIPPY
  2. Build the Docker image:

    docker build -t sippy .
  3. 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.

Packages

No packages published

Languages

  • Python 98.4%
  • Dockerfile 1.2%
  • Makefile 0.4%