# 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](https://people.unipi.it/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](https://www.python.org/downloads/) and requires [CasADi](https://web.casadi.org/get/).
The Slycot package is optional and can speed up validation. It is available at [PyPI](https://pypi.python.org/pypi/slycot/0.2.0) or alternatively as [binaries](https://www.lfd.uci.edu/~gohlke/pythonlibs/).
## Installation
To install from PyPI, run the following command:
```bash
pip install sippy_unipi
```
To install from the source code, run the following:
```bash
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.
```bash
uv sync
```
## Structure
SIPPY is distributed as package, with following notable items in the structure:
```plaintext
├── 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.
```
Raw data
{
"_id": null,
"home_page": null,
"name": "sippy_unipi",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "control-systems, dynamical-systems, machine-learning, state-space, system-identification, time-series-analysis",
"author": "Giuseppe Armenise, Riccardo Bacci di Capaci, Marco Vaccari, Gabriele Pannocchia, Marek Wadinger",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/34/93/71f2fcdfe8f3a260b7fc2e39e40af2950ca6eb97e32a4e35bba74c3f77db/sippy_unipi-1.0.1.tar.gz",
"platform": null,
"description": "# Welcome to SIPPY\n\n## Systems Identification Package for PYthon (SIPPY)\n\nThe main objective of this code is to provide different identification methods\nto build linear models of dynamic systems, starting from input-output collected\ndata. The models can be built as transfer functions or state-space models in\ndiscrete-time domain. The Python user has many options in terms of identification\nalgorithms and in terms of settings to look for the best model.\nIt is originally developed by Giuseppe Armenise at the Department of Civil and Industrial Engineering of University of Pisa under supervision of [Prof. Gabriele Pannocchia](https://people.unipi.it/gabriele_pannocchia/). The identification code is distributed under the LGPL license, meaning the code can be used royalty-free even in commercial applications.\nThe developed code is quite simple to use and, having default settings, it can\nbe used by beginners but also by experts, having many adjustable settings that\ncan be changed according to the particular case. Furthermore, there are some\nfunctions that the user can use, e.g. to test if the identified system follows the\nplant data.\nThe linear model to be identified can be chosen between:\n\n* input-output structures: FIR, ARX, ARMAX, ARMA, ARARX, ARARMAX, OE, BJ, GEN;\n* state-space structures: N4SID, MOESP, CVA, PARSIM-P, PARSIM-S or PARSIM-K.\nAll the proposed structures are available both in the SISO case, for which the information criteria\nare available, and in the MIMO case.\n\n## System dependencies\n\nThe code has been implemented in [Python 3.10](https://www.python.org/downloads/) and requires [CasADi](https://web.casadi.org/get/).\nThe Slycot package is optional and can speed up validation. It is available at [PyPI](https://pypi.python.org/pypi/slycot/0.2.0) or alternatively as [binaries](https://www.lfd.uci.edu/~gohlke/pythonlibs/).\n\n## Installation\n\nTo install from PyPI, run the following command:\n\n```bash\npip install sippy_unipi\n```\n\nTo install from the source code, run the following:\n\n```bash\ngit clone https://github.com/CPCLAB-UNIPI/SIPPY.git\ncd SIPPY\npip install -e .\n```\n\nWe recommend using uv (<https://docs.astral.sh/uv/>) to install the package.\n\n```bash\nuv sync\n```\n\n## Structure\n\nSIPPY is distributed as package, with following notable items in the structure:\n\n```plaintext\n\u251c\u2500\u2500 user_guide.pdf\n\u2502 \u2514\u2500\u2500 Documentation for Identification_code usage.\n\u251c\u2500\u2500 sippy/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u2502 \u2514\u2500\u2500 Main entry point: contains the function to perform identifications.\n\u2502 \u251c\u2500\u2500 functionset.py\n\u2502 \u2502 \u2514\u2500\u2500 Core functions used by identification routines and other utilities (see user_guide for details).\n\u2502 \u251c\u2500\u2500 functionset_OPT.py\n\u2502 \u2502 \u2514\u2500\u2500 Nonlinear optimization routines used by some identification methods.\n\u2502 \u2514\u2500\u2500 functionsetSIM.py\n\u2502 \u2514\u2500\u2500 Additional functions for Subspace identification and state-space model utilities (see user_guide for details).\n\u2514\u2500\u2500 Examples/\n | \u2514\u2500\u2500 Examples of usage of the SIPPY package (available with installation from source)\n \u251c\u2500\u2500 Ex_ARMAX_MIMO.py\n \u2502 \u2514\u2500\u2500 Example: Identification_code usage for ARMAX systems (multi input-multi output).\n \u251c\u2500\u2500 Ex_ARX_MIMO.py\n \u2502 \u2514\u2500\u2500 Example: Identification_code usage for ARX systems (multi input-multi output).\n \u251c\u2500\u2500 Ex_ARMAX.py\n \u2502 \u2514\u2500\u2500 Example: Identification_code usage for ARMAX systems (single input-single output, with information criteria).\n \u251c\u2500\u2500 SS.py\n \u2502 \u2514\u2500\u2500 Example: Identification_code usage for State-space systems.\n \u251c\u2500\u2500 Ex_OPT_GEN-INOUT.py\n \u2502 \u2514\u2500\u2500 Example: Input-output structure identification using optimization methods.\n \u251c\u2500\u2500 Ex_RECURSIVE.py\n \u2502 \u2514\u2500\u2500 Example: Input-output structure identification using recursive methods.\n \u2514\u2500\u2500 Ex_CST.py\n \u2514\u2500\u2500 Example: Identification_code usage for a Continuous Stirred Tank system.\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Systems Identification Package for Python",
"version": "1.0.1",
"project_urls": {
"repository": "https://github.com/CPCLAB-UNIPI/SIPPY"
},
"split_keywords": [
"control-systems",
" dynamical-systems",
" machine-learning",
" state-space",
" system-identification",
" time-series-analysis"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2ba04aa427fdc91b5dc31546f08189c6bc5b34ec55baf1cffab102cdaf2c6bff",
"md5": "58459298cac483b24b49f3fbbf6f0d7d",
"sha256": "a741ed02c21109cce62499978996777738bfb3e2814a7547d1c9fa7e59bd2a34"
},
"downloads": -1,
"filename": "sippy_unipi-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "58459298cac483b24b49f3fbbf6f0d7d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 43898,
"upload_time": "2025-09-02T09:31:24",
"upload_time_iso_8601": "2025-09-02T09:31:24.511308Z",
"url": "https://files.pythonhosted.org/packages/2b/a0/4aa427fdc91b5dc31546f08189c6bc5b34ec55baf1cffab102cdaf2c6bff/sippy_unipi-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "349371f2fcdfe8f3a260b7fc2e39e40af2950ca6eb97e32a4e35bba74c3f77db",
"md5": "b820e35b7a7e4d162002d51878e8d051",
"sha256": "50d91ff37934291f36a3e2985064282b8f6b301dd61028a274947b614e124780"
},
"downloads": -1,
"filename": "sippy_unipi-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "b820e35b7a7e4d162002d51878e8d051",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 423330,
"upload_time": "2025-09-02T09:31:26",
"upload_time_iso_8601": "2025-09-02T09:31:26.091496Z",
"url": "https://files.pythonhosted.org/packages/34/93/71f2fcdfe8f3a260b7fc2e39e40af2950ca6eb97e32a4e35bba74c3f77db/sippy_unipi-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-02 09:31:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CPCLAB-UNIPI",
"github_project": "SIPPY",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"lcname": "sippy_unipi"
}