exactodereduction.jl

Exact reduction of ODE models via linear transformations

https://github.com/x3042/exactodereduction.jl

Science Score: 31.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

differential-equations dimensionality-reduction julia ode ode-model
Last synced: 6 months ago · JSON representation ·

Repository

Exact reduction of ODE models via linear transformations

Basic Info
  • Host: GitHub
  • Owner: x3042
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 124 MB
Statistics
  • Stars: 13
  • Watchers: 3
  • Forks: 3
  • Open Issues: 4
  • Releases: 0
Topics
differential-equations dimensionality-reduction julia ode ode-model
Created over 5 years ago · Last pushed about 2 years ago
Metadata Files
Readme License Citation

README.md

ExactODEReduction

Runtests Dev

This repository contains a Julia implementation of algorithms for finding exact reductions of ODE systems via a linear change of variables.

Online documentation could be found at https://x3042.github.io/ExactODEReduction.jl.

Installation

To install ExactODEReduction.jl, run the following in Julia:

julia import Pkg Pkg.add(url="https://github.com/x3042/ExactODEReduction.jl")

For the usage examples, please see examples below in this file, or in the examples directory.

What is exact reduction?

Exact reduction of the system of differential equations is an exact variable substitution which preserves the invariants of the system. In this project we consider reductions obtained with linear transformations. We will explain it using a toy example. Consider the system

$$\begin{cases} \dot{x}1 = x1^2 + 2x1x2,\ \dot{x}2 = x2^2 + x3 + x4,\ \dot{x}3 = x2 + x4, \ \dot{x}4 = x1 + x3 \end{cases}$$

An example of an exact reduction in this case would be the following set of new variables

$$y1 = x1 + x2 \quad \text{ and } \quad y2 = x3 + x4$$

The important feature of variables $y1, y2$ is that their derivatives can be written in terms of $y1$ and $y2$ only:

$$\dot{y}1 = \dot{x}1 + \dot{x}2 = y1^2 + y_2$$

and

$$\dot{y}2 = \dot{x}3 + \dot{x}4 = y1 + y_2$$

Therefore, the original system can be reduced exactly to the following system:

$$\begin{cases} \dot{y}1 = y1^2 + y2,\ \dot{y}2 = y1 + y2 \end{cases}$$

What does this package do and how to use it?

We implement an algorithm that takes as input a system of ODEs with polynomial right-hand side and returns a list of possible linear transformations and corresponding systems.

We will demonstrate the usage on the example above. For more details on the package usage, including reading dynamical systems from *.ode files, please see the documentation.

  1. Import the package

julia using ExactODEReduction

  1. Construct the system (as in the example above)

julia odes = @ODEsystem( x1'(t) = x1^2 + 2x1*x2, x2'(t) = x2^2 + x3 + x4, x3'(t) = x2 + x4, x4'(t) = x1 + x3 )

  1. Call find_reductions providing the system

julia reductions = find_reductions(odes)

which returns the list of possible reductions. You will get the following result printed

```julia

A chain of 2 reductions of dimensions 2, 3

  1. Reduction of dimension 2. New system: y1'(t) = y1(t)^2 + y2(t) y2'(t) = y1(t) + y2(t) New variables: y1 = x1 + x2 y2 = x3 + x4 ==================================
  2. Reduction of dimension 3. New system: y1'(t) = y1(t)^2 + 2y1(t)y2(t) y2'(t) = y2(t)^2 + y3(t) y3'(t) = y1(t) + y2(t) + y3(t) New variables: y1 = x1 y2 = x2 y3 = x3 + x4 ```

Notice that the first reduction is the same as we have seen earlier. We can access it through the reductions object

julia red1 = reductions[1] ```julia new_system(red1)

Prints:

y1'(t) = y1(t)^2 + y2(t) y2'(t) = y1(t) + y2(t) ```

```julia new_vars(system)

Prints:

Dict{Nemo.fmpqmpoly, Nemo.fmpqmpoly} with 2 entries: y2 => x3 + x4 y1 => x1 + x2 ```

For more examples we refer to the documentation and the examples directory.

Owner

  • Login: x3042
  • Kind: user

Citation (CITATION.bib)

@article{DEMIN2024107816,
title = {Exact hierarchical reductions of dynamical models via linear transformations},
journal = {Communications in Nonlinear Science and Numerical Simulation},
volume = {131},
pages = {107816},
year = {2024},
issn = {1007-5704},
doi = {https://doi.org/10.1016/j.cnsns.2024.107816},
url = {https://www.sciencedirect.com/science/article/pii/S1007570424000029},
author = {Alexander Demin and Elizaveta Demitraki and Gleb Pogudin},
keywords = {Ordinary differential equations, Exact reduction, Lumping, Dimensionality reduction, Matrix algebras},
abstract = {Dynamical models described by ordinary differential equations (ODEs) are a fundamental tool in the sciences and engineering. Exact reduction aims at producing a lower-dimensional model in which each macro-variable can be directly related to the original variables, and it is thus a natural step towards the model’s formal analysis and mechanistic understanding. We present an algorithm which, given a polynomial ODE model, computes a longest possible chain of exact linear reductions of the model such that each reduction refines the previous one, thus giving a user control of the level of detail preserved by the reduction. This significantly generalizes over the existing approaches which compute only the reduction of the lowest dimension subject to an approach-specific constraint. The algorithm reduces finding exact linear reductions to a question about representations of finite-dimensional algebras. We provide an implementation of the algorithm, demonstrate its performance on a set of benchmarks, and illustrate the applicability via case studies. Our implementation is freely available at https://github.com/x3042/ExactODEReduction.jl.}
}

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 14
  • Total pull requests: 18
  • Average time to close issues: 7 months
  • Average time to close pull requests: about 5 hours
  • Total issue authors: 3
  • Total pull request authors: 2
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.39
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sumiya11 (9)
  • pogudingleb (4)
  • mleprovost (1)
Pull Request Authors
  • sumiya11 (11)
  • pogudingleb (9)
Top Labels
Issue Labels
enhancement (4) bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
juliahub.com: ExactODEReduction

Exact reduction of ODE models via linear transformations

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.9%
Average: 30.0%
Forks count: 33.3%
Stargazers count: 37.7%
Dependent packages count: 38.9%
Last synced: 6 months ago

Dependencies

.github/workflows/Build.yml actions
  • actions/checkout v1 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/setup-julia v1 composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Runtests.yml actions
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia latest composite