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

 
 
 

Contributors

Languages

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