https://github.com/artpelling/adaptive-era

Adaptive Randomized Eigensystem Realization Algorithm - Code for Numerical Experiments in "Adaptive Reduced Order Modelling of Discrete-Time Systems with Input-Output Dead Time"

https://github.com/artpelling/adaptive-era

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords

adaptive algorithm eigensystem eigensystem-realization-algorithm era python randomized realization
Last synced: 5 months ago · JSON representation

Repository

Adaptive Randomized Eigensystem Realization Algorithm - Code for Numerical Experiments in "Adaptive Reduced Order Modelling of Discrete-Time Systems with Input-Output Dead Time"

Basic Info
  • Host: GitHub
  • Owner: artpelling
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 32.2 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Topics
adaptive algorithm eigensystem eigensystem-realization-algorithm era python randomized realization
Created 10 months ago · Last pushed 9 months ago
Metadata Files
Readme License

README.md

DOI Python Version from PEP 621 TOML

Code for Numerical Experiments in "Adaptive Reduced Order Modelling of Discrete-Time Systems with Input-Output Dead Time"

This repository contains code for numerical experiments reported in

Art J. R. Pelling, Ennes Sarradj Adaptive Reduced Order Modelling of Discrete-Time Systems with Input-Output Dead Time, arXiv preprint, 2025

Installation

To run the benchmarks from the paper, Python 3.12, git and a virtual environment is needed for which micromamba (a drop in replacement for conda) is used here. In principle, the benchmarks could also be run with other tools like virtualenv or uv. We select micromamba, because it makes it easier to build NumPy from source.

All dependencies are listed in pyproject.toml.

To install the era_dts package, create and activate a virtual environment: shell micromamba create -n era python=3.12 micromamba activate era

Clone the repository and install the package with: shell git clone https://github.com/artpelling/adaptive-era.git && cd adaptive-era

Compiling NumPy with ILP64 support (optional)

In order to construct the larger models, we need to allocate arrays with more than 231-1 elements. Therefore, we need to build NumPy against the ILP64 interface, using 64-bit instead of 32-bit integers for indexing. The install instructions in this subsection are somewhat specific to our machine, also consult the NumPy docs for more.

Clone the NumPy repo: shell git clone https://github.com/numpy/numpy.git && cd numpy git submodule update --init

Checkout the latest release branch (2.2.4 in our case): shell git checkout v2.2.4

Install build dependencies: shell micromamba install gcc gxx clang mkl-devel -c conda-forge

Note that we install mkl-devel from the defaults channel in order to also install the .pc files. It might be necessary to point pkg-config to their location with: shell export PKG_CONFIG_PATH=~/.local/share/mamba/envs/era/lib/pkgconfig The path to the virtual environment can of course differ. It can be easily found with micromamba env list.

Now compile NumPy with: shell pip install . -Csetup-args=-Dallow-noblas=false -Csetup-args=-Dcpu-baseline="native" -Csetup-args=-Dmkl-threading=gomp -Csetup-args=-Duse-ilp64=true

and exit the directory shell cd ..

Install the package

Now, (whether we have successfully compiled NumPy with ILP64 interface or not), we can install the package with: shell pip install .

Running the Experiments

The individual benchmarks from the paper can be run with the run-benchmark entry point, e.g.: shell run-benchmark -dte DTS MIRD -s SHORT3

Consult shell run-benchmark -h for options such as the dead time splitting algorithm and output directory and consult

shell run-benchmark MIRD -h run-benchmark MIRACLE -h for a list of available scenarios.

The script will download the necessary data from the benchmark datasets and store them in the raw directory using the pooch package. The data validated against an md5 hash to ensure reproducibility, post-processed and written to the processed directory. Subsequent calls to run-benchmark will use the processed data, if available.

Recreating the figures

All benchmarks needed for the figures in the paper can be recreated handily with targets defined in the Makefile, e.g.: shell make all

After running the benchmarks, the results can be converted to a PGF-compatible .txt file (assuming the results are exported to the default models directory) with: shell txt4pgf

Author

Art J. R. Pelling:

  • affiliation: Technische Universität Berlin
  • email: a.pelling@tu-berlin.de
  • ORCiD: 0000-0003-3228-6069

License

The code is published under the MIT LICENSE.

Owner

  • Name: Art Pelling
  • Login: artpelling
  • Kind: user
  • Location: Berlin, Germany
  • Company: TU Berlin

GitHub Events

Total
  • Release event: 1
  • Public event: 1
  • Push event: 7
  • Create event: 1
Last Year
  • Release event: 1
  • Public event: 1
  • Push event: 7
  • Create event: 1

Dependencies

pyproject.toml pypi
  • h5py >=3.12.1
  • numba ==0.61.2
  • numpy ==2.2.4
  • pooch ==1.8.2
  • pymor @git+https://github.com/pymor/pymor.git@614767f23438e3be8c2e0530d764f345c9b3cdab
  • rocket-fft ==0.2.5
  • scipy >=1.14.1
  • tbb ==2022.1.0
  • tqdm *
uv.lock pypi
  • certifi 2025.1.31
  • charset-normalizer 3.4.1
  • click 8.1.8
  • colorama 0.4.6
  • contourpy 1.3.2
  • cycler 0.12.1
  • diskcache 5.6.3
  • era-dts 0.1
  • fonttools 4.57.0
  • h5py 3.13.0
  • idna 3.10
  • kiwisolver 1.4.8
  • llvmlite 0.44.0
  • markdown-it-py 3.0.0
  • matplotlib 3.10.1
  • mdurl 0.1.2
  • numba 0.61.2
  • numpy 2.2.4
  • packaging 24.2
  • pillow 11.2.1
  • platformdirs 4.3.7
  • pooch 1.8.2
  • pygments 2.19.1
  • pymor 2025.1.0.dev0
  • pyparsing 3.2.3
  • python-dateutil 2.9.0.post0
  • qtpy 2.4.3
  • requests 2.32.3
  • rich 14.0.0
  • rocket-fft 0.2.5
  • scipy 1.15.2
  • shellingham 1.5.4
  • six 1.17.0
  • tbb 2022.1.0
  • tcmlib 1.3.0
  • threadpoolctl 3.6.0
  • tqdm 4.67.1
  • typer 0.15.2
  • typing-extensions 4.13.2
  • urllib3 2.4.0