Skip to content

CPCLAB-UNIPI/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 at the Department of Civil and Industrial Engineering of University of Pisa 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. Building project dependencies requires C compiler (euther CMake or Ninja). Pre-build wheels are currently not available (feel free to contribute).

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. Build the Docker image:
docker build -t sippy .
  1. 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.

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

📝 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.