Metadata-Version: 2.1
Name: aphin
Version: 0.1.3
Summary: Autoencoder-based port-Hamiltonian Identification Networks (ApHIN) is a Python package for structure-preserving model order reduction and system identification of port-Hamiltonian systems.
Author-email: Jonas Kneifl <jonas.kneifl@itm.uni-stuttgart.com>, Johannes Rettberg <johannes.rettberg@itm.uni-stuttgart.com>, Julius Herb <julius.herb@mib.uni-stuttgart.com>
Project-URL: Homepage, https://github.com/Institute-Eng-and-Comp-Mechanics-UStgt/ApHIN
Project-URL: Issues, https://github.com/Institute-Eng-and-Comp-Mechanics-UStgt/ApHIN/issues
Keywords: structure-preserving model order reduction,system identification,surrogate modeling,reduced order models,port-Hamiltonian systems
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: matplotlib >=3.7
Requires-Dist: numpy >=1.21.4
Requires-Dist: scikit-learn >=1.2
Requires-Dist: scikit-optimize >=0.10
Requires-Dist: scipy >=1.10
Requires-Dist: tensorflow >=2.15
Requires-Dist: tensorflow-probability >=0.24
Requires-Dist: tensorflow-model-optimization >=0.7
Requires-Dist: tf-keras >=2.16
Requires-Dist: PyYAML >=6
Requires-Dist: pandas >=1.3.4
Requires-Dist: natsort >=8.4.0
Requires-Dist: tqdm >=4.66.2
Requires-Dist: pymor >=2023.2.0
Requires-Dist: visualizer-3d >=0.3
Provides-Extra: gui
Requires-Dist: visualizer-3d ; extra == 'gui'
Provides-Extra: interfaces

<!-- PROJECT SHIELDS -->
[![arXiv][arxiv-shield]][arxiv-url]
[![DOI][doi-shield]][doi-url]
[![Documentation Status][docs-shield]][docs-url]
[![MIT License][license-shield]][license-url]

# ApHIN - Autoencoder-based port-Hamiltonian Identification Networks
A data-driven framework for the identification of latent port-Hamiltonian systems [1].

![ApHIN](https://github.com/user-attachments/assets/0764f063-ced4-4b8e-af84-a7772c7d5c30)

## Abstract
Conventional physics-based modeling techniques involve high effort, e.g.~time and expert knowledge, while data-driven methods often lack interpretability, structure, and sometimes reliability. To mitigate this, we present a data-driven system identification framework that derives models in the port-Hamiltonian (pH) formulation. 
This formulation is suitable for multi-physical systems while guaranteeing the useful system theoretical properties of passivity and stability. 

Our framework combines linear and nonlinear reduction with structured, physics-motivated system identification. 
In this process, high-dimensional state data obtained from possibly nonlinear systems serves as the input for an autoencoder, which then performs two tasks: (i) nonlinearly transforming and (ii) reducing this data onto a low-dimensional manifold. In the resulting latent space, a pH system is identified by considering the unknown matrix entries as weights of a neural network. The matrices strongly satisfy the pH matrix properties through Cholesky factorizations. In a joint optimization process over the loss term, the pH matrices are adjusted to match the dynamics observed by the data, while defining a linear pH system in the latent space per construction.
The learned, low-dimensional pH system can describe even nonlinear systems and is rapidly computable due to its small size.

The method is exemplified by a parametric mass-spring-damper and a nonlinear pendulum example as well as the high-dimensional model of a disc brake with linear thermoelastic behavior.

## Installation

You can either clone the repository and install the package locally or install it directly from PyPI.

### PyPI

```bash
pip install aphin
```

### Local
Clone this repository and install it to your local environment as package using pip:

```bash
git clone https://
cd ApHIN
```
Then you can activate the environment in which you want to install the package, and use pip to perform the installation.
```bash
pip install -e .
```

> :warning: **Please note that you need pip version 24.0 to install the repository in editable mode. Either upgrade pip to the latest version or install it without the ```-e``` argument**

## References

[1] Johannes Rettberg, Jonas Kneifl, Julius Herb, Patrick Buchfink, Jörg Fehr, and Bernard Haasdonk. Data-driven identification of latent port-Hamiltonian systems. Arxiv, 2024.

[2] Volker Mehrmann and Benjamin Unger. Control of port-hamiltonian differential-algebraic
systems and applications, 2022.

[3] Kathleen Champion, Bethany Lusch, J. Nathan Kutz, and Steven L. Brunton. Data-driven
discovery of coordinates and governing equations. Proceedings of the National Academy of
Sciences, 116(45):22445–22451, 2019.

## Features
This repository implements neural networks that identify linear port-Hamiltonian systems from (potentially high-dimensional) data[1].
* Autoencoders (AEs) for dimensionality reduction
* pH layer to identify system matrices that fullfill the definition of a linear pH system
* pHIN: identify a (parametric) low-dimensional port-Hamiltonian system directly
* ApHIN: identify a (parametric) low-dimensional latent port-Hamiltonian system based on coordinate representations found using an autoencoder
* Examples for the identification of linear pH systems from data
  * One-dimensional mass-spring-damper chain
  * Pendulum
  * discbrake model

[license-shield]: https://img.shields.io/github/license/Institute-Eng-and-Comp-Mechanics-UStgt/ApHIN.svg
[license-url]: https://github.com/Institute-Eng-and-Comp-Mechanics-UStgt/ApHIN/blob/main/LICENSE
[doi-shield]: https://zenodo.org/badge/DOI/
[doi-url]: https://doi.org/
[arxiv-shield]: https://img.shields.io/badge/arXiv-
[arxiv-url]: https://doi.org/
[docs-url]: https://
[docs-shield]: https://img.shields.io/badge/docs-online-blue.svg
