Reworking the repo structure
This PR proposes a major restructuring of the model repository, to move away from utopya-based models and instead offering a toolbox of neural network machinery, numerical solvers, and inference algorithms and are illustrated using various models. Each model folder should contain model-specific equations and solvers, a Jupyter notebook to illustrate usage and simple inference, and a utopya model to allow for ensemble training.
The goal is to allow users unfamiliar with either machine learning, Python, or in general with low coding ability to be able to easily experiment with ML-based parameter inference methodologies in Jupyter notebooks, and for the utopya models to be aimed at those with more advanced application requirements in mind.
Major changes
- Create a
model.pyfile for each model, which contains the differential equation RHS (for ODEs and SDEs), which can then be plugged into a numerical solver of choice - Moves the utopya models into a separate `ensemble training' folder for each model
- Create a demonstration Jupyter notebook for each model which serves as a step-by-step introduction to the model and the computational methodologies.
- Provide a number of example training datasets and configuration sets for different use cases
- Add a number of solvers for ODEs, SDEs, and PDEs, e.g. Runge-Kutta solvers.
- Add recurrent neural network architectures that are controllable from the configuration files: vanilla RNN, GRU, and LSTM
- Add the Neurotransmission model
- Add the Manifold Learning notebook
- Add the Laser experiment for a PDE system
- ...
To-Dos:
- [x] Add solver classes for ODEs
- [ ] Add SDE solvers, e.g. using this package -> introduces additional dependency!
- [x] Add vanilla RNN neural network class
- [ ] Add GRUs and LSTMS
- [ ] Allow controlling the neural network type from the config
- [ ] Add Jupyter notebook for each model
- [x] Move utopya models to separate 'ensemble_training' folders
- [ ] Adjust documentation
- [ ] Adjust and fix unit tests
- [ ] Merge SIR and SIRS models
- [ ] Drop Python 3.8 compatibility, since dantro does not support Python 3.8
@A-Bankowski