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"
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
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
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Topics
Metadata Files
README.md
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
- Repositories: 1
- Profile: https://github.com/artpelling
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
- 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 *
- 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