Skip to content

Commit c16f385

Browse files
committed
osa_tool recommendations
1 parent 6ad2ce3 commit c16f385

348 files changed

Lines changed: 23557 additions & 3772 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/osa_mkdocs.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: MkDocs workflow
2+
on:
3+
push:
4+
branches: ["main", "master"]
5+
pull_request:
6+
branches: ["main", "master"]
7+
jobs:
8+
mkdocs_deployment:
9+
name: "[OSA] Deploying MkDocs"
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
steps:
14+
- name: "[OSA] Checking-out repository"
15+
uses: actions/checkout@v4
16+
- name: "[OSA] Installing Python"
17+
uses: actions/setup-python@v4
18+
with:
19+
python-version: "3.12"
20+
- name: "[OSA] Installing MkDocs dependencies"
21+
run: pip install mkdocs mkdocs-material mkdocstrings[python]
22+
- name: "[OSA] MkDocs documentation deploying"
23+
run: mkdocs gh-deploy --force --config-file osa_mkdocs.yml
24+
env:
25+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

README.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# EPDE
2+
3+
---
4+
5+
[![PyPi](https://badge.fury.io/py/epde.svg)](https://badge.fury.io/py/epde)
6+
[![Downloads](https://static.pepy.tech/badge/epde)](https://pepy.tech/project/epde)
7+
![License](https://img.shields.io/github/license/ITMO-NSS-team/EPDE?style=flat&logo=opensourceinitiative&logoColor=white&color=blue)
8+
[![OSA-improved](https://img.shields.io/badge/improved%20by-OSA-yellow)](https://github.com/aimclub/OSA)
9+
10+
Built with:
11+
12+
![numpy](https://img.shields.io/badge/NumPy-013243.svg?style={0}&logo=NumPy&logoColor=white)
13+
![pandas](https://img.shields.io/badge/pandas-150458.svg?style={0}&logo=pandas&logoColor=white)
14+
![pytest](https://img.shields.io/badge/Pytest-0A9EDC.svg?style={0}&logo=Pytest&logoColor=white)
15+
![scipy](https://img.shields.io/badge/SciPy-8CAAE6.svg?style={0}&logo=SciPy&logoColor=white)
16+
17+
---
18+
19+
[![Logo of EPDE framework](docs/epde_logo.png)](docs/epde_logo.png)
20+
21+
We use this repository as the main entry point for the EDPE framework.
22+
23+
We are of opinion that partial differential equations (PDE) discovery is more that the regression in the prescribed differential terms space. We propose the novel method of evolutionary equation discovery. Apart from the differential equations we have the algrbraic expressions discovery algorithm that is now uses same abstractions.
24+
25+
The project is maintained by the research team of the Natural Systems Simulation Lab, which is a part of the National Center for Cognitive Research of ITMO University.
26+
27+
---
28+
29+
## Overview
30+
31+
EPDE framework pioneers a novel evolutionary approach to discover governing equations, particularly partial differential equations, directly from data. It moves beyond traditional regression in predefined spaces, employing evolutionary algorithms to identify mathematical relationships within datasets. The core objective is to automate the discovery of these equations, enhancing surrogate modeling in natural sciences. EPDE features a multi-objective version for Pareto frontier analysis, a numerical differentiation scheme for noisy data, and a solver for visualizing the discovery process. By implementing evolutionary equation discovery, EPDE addresses real and synthetic data, contributing to data-driven differential equation-based model development as described in associated research articles.
32+
33+
The main features of the framework are as follows:
34+
35+
- We dont need to create prescribed library of terms - our 'building blocks' are single differential terms or simple functions
36+
- We have the multi-objective version that allows to obtain Pareto frontier of the equations, which helps the expert to choose one from several equation.
37+
- We use our own numerical differntiaion scheme, which allows to deal with high noise values
38+
- We have solver to visualize the differential equations discovery process to add more control (https://github.com/ITMO-NSS-team/torch_DE_solver)
39+
40+
---
41+
42+
## Table of Contents
43+
44+
- [Overview](#overview)
45+
- [Content](#content)
46+
- [Algorithms](#algorithms)
47+
- [Installation](#installation)
48+
- [Getting Started](#getting-started)
49+
- [Examples](#examples)
50+
- [Documentation](#documentation)
51+
- [License](#license)
52+
- [Citation](#citation)
53+
54+
---
55+
56+
## Content
57+
58+
The EPDE framework employs evolutionary algorithms to discover governing equations, particularly partial differential equations, from data. It eschews predefined term libraries, instead using fundamental differential terms and functions as building blocks. The framework integrates data input, preprocessing, symbolic regression, equation solving, and fitness evaluation. A key aspect is multi-objective optimization, generating a Pareto frontier of equations balancing accuracy and complexity. Numerical differentiation handles noisy data, and a solver aids visualization. The system iteratively refines equation structures through mutation, crossover, and sparse regression, identifying significant terms and weights. This approach facilitates data-driven equation derivation and surrogate model development, applicable to both synthetic and real-world data.
59+
60+
---
61+
62+
## Algorithms
63+
64+
The EPDE framework employs an evolutionary algorithm combined with sparse regression to discover partial differential equations from data. The evolutionary algorithm iteratively refines the equation structure through mutation and crossover operations. Sparse regression, specifically LASSO, is used to select significant terms and determine their weights within the equation. A numerical differentiation scheme handles noisy data. Multi-objective optimization allows for generating a Pareto frontier of potential equations, balancing accuracy and complexity. These algorithms facilitate the automated discovery of underlying equations from data, even in the presence of noise and high dimensionality, supporting surrogate modeling and data-driven equation derivation.
65+
66+
---
67+
68+
## Installation
69+
70+
**Prerequisites:** requires Python >=3.8
71+
72+
Common installation:
73+
74+
```sh
75+
pip install epde
76+
```
77+
78+
---
79+
80+
## Getting Started
81+
82+
To get started with EPDE, you can install the package using pip:
83+
84+
```
85+
pip install epde
86+
```
87+
88+
Then, explore the examples provided in the `examples` directory. For instance, the `ODE discovery.ipynb` notebook demonstrates how to discover ordinary differential equations using the EPDE framework. It covers topics such as:
89+
90+
- Generating synthetic data from known ODEs.
91+
- Setting up the `EpdeSearch` object with appropriate parameters.
92+
- Using trigonometric and grid tokens to enhance the search.
93+
- Visualizing and interpreting the discovered equations.
94+
95+
Also, there is an intro video about EPDE:
96+
97+
[![Introducing EPDE](https://res.cloudinary.com/richarddedekind/image/upload/v1623953761/EDPE_front_dsyl9h.png)](https://www.youtube.com/watch?v=BSXGCeuTcdc)
98+
99+
---
100+
101+
## Examples
102+
103+
Examples of how this should work and how it should be used are available [here](https://github.com/ITMO-NSS-team/EPDE/tree/main/examples).
104+
105+
---
106+
107+
## Documentation
108+
109+
A detailed EPDE description is available [here](https://github.com/ITMO-NSS-team/EPDE/tree/main/docs).
110+
111+
---
112+
113+
## License
114+
115+
This project is protected under the Other. For more details, refer to the [LICENSE](https://github.com/ITMO-NSS-team/EPDE/tree/main/LICENSE.txt) file.
116+
117+
---
118+
119+
## Citation
120+
121+
@article{maslyaev2021partial,
122+
title={Partial differential equations discovery with EPDE framework: application for real and synthetic data},
123+
author={Maslyaev, Mikhail and Hvatov, Alexander and Kalyuzhnaya, Anna V},
124+
journal={Journal of Computational Science},
125+
pages={101345},
126+
year={2021},
127+
publisher={Elsevier}
128+
}
129+
130+
@article{maslyaev2019discovery,
131+
title={Discovery of the data-driven differential equation-based models of continuous metocean process},
132+
author={Maslyaev, Mikhail and Hvatov, Alexander},
133+
journal={Procedia Computer Science},
134+
volume={156},
135+
pages={367--376},
136+
year={2019},
137+
publisher={Elsevier}
138+
}

0 commit comments

Comments
 (0)