Skip to main content

Systems Identification Package for Python

Project description

Welcome to SIPPY

Systems Identification Package for PYthon (SIPPY)

The main objective of this code is to provide different identification methods to build linear models of dynamic systems, starting from input-output collected data. The models can be built as transfer functions or state-space models in discrete-time domain. The Python user has many options in terms of identification algorithms and in terms of settings to look for the best model. It is originally developed by Giuseppe Armenise at the Department of Civil and Industrial Engineering of University of Pisa under supervision of Prof. Gabriele Pannocchia. The identification code is distributed under the LGPL license, meaning the code can be used royalty-free even in commercial applications. The developed code is quite simple to use and, having default settings, it can be used by beginners but also by experts, having many adjustable settings that can be changed according to the particular case. Furthermore, there are some functions that the user can use, e.g. to test if the identified system follows the plant data. The linear model to be identified can be chosen between:

  • input-output structures: FIR, ARX, ARMAX, ARMA, ARARX, ARARMAX, OE, BJ, GEN;
  • state-space structures: N4SID, MOESP, CVA, PARSIM-P, PARSIM-S or PARSIM-K. All the proposed structures are available both in the SISO case, for which the information criteria are available, and in the MIMO case.

System dependencies

The code has been implemented in Python 3.10 and requires CasADi. The Slycot package is optional and can speed up validation. It is available at PyPI or alternatively as binaries.

Installation

To install from PyPI, run the following command:

pip install sippy_unipi

To install from the source code, run the following:

git clone https://github.com/CPCLAB-UNIPI/SIPPY.git
cd SIPPY
pip install -e .

We recommend using uv (https://docs.astral.sh/uv/) to install the package.

uv sync

Structure

SIPPY is distributed as package, with following notable items in the structure:

├── user_guide.pdf
│   └── Documentation for Identification_code usage.
├── sippy/
│   ├── __init__.py
│   │   └── Main entry point: contains the function to perform identifications.
│   ├── functionset.py
│   │   └── Core functions used by identification routines and other utilities (see user_guide for details).
│   ├── functionset_OPT.py
│   │   └── Nonlinear optimization routines used by some identification methods.
│   └── functionsetSIM.py
│       └── Additional functions for Subspace identification and state-space model utilities (see user_guide for details).
└── Examples/
    |   └── Examples of usage of the SIPPY package (available with installation from source)
    ├── Ex_ARMAX_MIMO.py
    │   └── Example: Identification_code usage for ARMAX systems (multi input-multi output).
    ├── Ex_ARX_MIMO.py
    │   └── Example: Identification_code usage for ARX systems (multi input-multi output).
    ├── Ex_ARMAX.py
    │   └── Example: Identification_code usage for ARMAX systems (single input-single output, with information criteria).
    ├── SS.py
    │   └── Example: Identification_code usage for State-space systems.
    ├── Ex_OPT_GEN-INOUT.py
    │   └── Example: Input-output structure identification using optimization methods.
    ├── Ex_RECURSIVE.py
    │   └── Example: Input-output structure identification using recursive methods.
    └── Ex_CST.py
        └── Example: Identification_code usage for a Continuous Stirred Tank system.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sippy_unipi-1.0.1.tar.gz (423.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sippy_unipi-1.0.1-py3-none-any.whl (43.9 kB view details)

Uploaded Python 3

File details

Details for the file sippy_unipi-1.0.1.tar.gz.

File metadata

  • Download URL: sippy_unipi-1.0.1.tar.gz
  • Upload date:
  • Size: 423.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for sippy_unipi-1.0.1.tar.gz
Algorithm Hash digest
SHA256 50d91ff37934291f36a3e2985064282b8f6b301dd61028a274947b614e124780
MD5 b820e35b7a7e4d162002d51878e8d051
BLAKE2b-256 349371f2fcdfe8f3a260b7fc2e39e40af2950ca6eb97e32a4e35bba74c3f77db

See more details on using hashes here.

File details

Details for the file sippy_unipi-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sippy_unipi-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a741ed02c21109cce62499978996777738bfb3e2814a7547d1c9fa7e59bd2a34
MD5 58459298cac483b24b49f3fbbf6f0d7d
BLAKE2b-256 2ba04aa427fdc91b5dc31546f08189c6bc5b34ec55baf1cffab102cdaf2c6bff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page