This repository contains the code from my work on the Fluctuation-Dissipation theorem during my internship at Lawrence Berkeley National Laboratory (LBNL) in 2022, under the supervision of William D. Collins.
Throughout this project, we studied a tool for evaluating the response to a perturbation of dynamical systems
by using the fluctuation-dissipation theorem (FDT). Such approach could for instance be very useful
to assess the climate response to an increase in
Below is a our results on the increase in the relative error of the estimator while increasing the number of dimensions of the linear dynamical models considered.
One can read my internship report for insights about the statistical procedure and the way the code is designed : https://github.com/amaurylancelin/npFDT/blob/ecc158f3fa3e604118237fc41d356d2d0f4362dd/report.pdf
We provide the structure of our project in which you can find usable scripts but also exploration notebooks with comments. This code is flexible and made in order to study the response to a constant perturbation of any dynamical systems. The main file is npFDT.py.
├── README.md
├── requirements.txt
├── src
├── utils.py: some utility functions.
├── npFDT.py: our implementation of the npFDT estimation procredure.
├── models.py: functions used to define dynamical models.
├── output:
├── plots
├── test_LM.ipynb: a notebook in order to briefly test our procedure on randomly generated linear models.
├── reproduce_CH2011_fig1: a notebook in order to reproduce the first figure of CH2011 with the simplest implementation possible. Not related to npFDT.py.
├── report.pdf: the final report of my intership. The reader will find there useful information about the statistical procedure and the way the code is designed.
In order to have the good environnement to run this code you need to the following instructions.
- Install anaconda
brew install --cask anaconda
- Create an virtual environnement (optional)
conda create --name <env_name>
conda activate <env_name>
- Install all the needed dependencies
conda install --file requirements.txt
- Create an virtual environnement (optional)
python -m venv <env_name>
source <env_name>/bin/activate
- Install all the needed dependencies
pip install -r requirements.txt