Skip to content

conorheins/bayesian-mechanics-sdes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bayesian mechanics for stationary processes

Companion repository for Bayesian mechanics for stationary processes (2021) by Lancelot Da Costa, Karl Friston, Conor Heins, and Grigorios A. Pavliotis. [Paper]

Installation

To run the code in this repo, we recommend building a conda environment using the provided environment.yml file, which will install (most of) the required dependencies for you - see below:

conda env create -f environment.yml

Once you build the repository using the environment file, you can activate it using:

conda activate bayesmech_statproc

In our experience installing jax with pip works better than going through conda. Therefore, after building the conda environment, use pip to install jax and jaxlib using the following:

pip install --upgrade jax jaxlib

Requirements

The requirements to run the code in this package are self-contained as dependencies in the environment.yml file (besides jax, see above). The core functionality depends on Python 3.8^ and relies heavily on the following packages for stochastic integration, statistics, and visualization routines:

Running the code

Once you've created and activated your conda environment with conda activate bayesmech_statproc, you can run the code to create the paper's figures using the general format:

python3 src/<SCRIPT_NAME>.py [-optional args...]

For example, to run the code that generates the Bayesian mechanics figures derived from the 3-D Ornstein-Uhlenbeck process (Figure 6), run the following line from a terminal window or other command line interface:

python3 src/linear_diffusion_3d.py 

or

python3 src/linear_diffusion_3d.py  --seed <SOME_INTEGER> --[save/nosave]

The optional command line argument --seed or -s can be used to specify a particular, fixed key for initializing jax's PRNG or pseudo-random number generation, which ensures reproducible initial system parameterisations and stochastic sample paths. If you don't enter a --seed argument, a default initialization key (the same one used to generate the figures from the paper) will be used instead. Therfore even in the absence of a user-given --seed argument, the script will reproduce the same figures upon repeated runs.

If you want to save the figures as .pngs to disk (in the ./figures folder), you can specify either --save or --nosave as a final keyword argument to your line (default is --save), e.g.

python3 src/linear_diffusion_6d_actinf.py  --save

NOTE: There is an exception to this general format for reproducing Figure 2 of the paper (the synchronization map example vs. non-example). There one should simply run:

python3 src/Sync_map_example.py

or

python3 src/Sync_map_non_example.py

to generate the left and right panels (respectively) of Figure 2.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages