A reproduction of the paper The Coffee Automaton - Quantifying the Rise and Fall of Complexity in Closed Systems.
This codebase started from the given code in the paper and was updated to python 3 with few changes to improve experiment speed. Moreover some additional feature were added such as a fluid-like automaton, different smoothing functions, and different initial states.
![]() |
![]() |
![]() |
---|---|---|
Fine | Coarse | Adjusted coarse |
![]() |
![]() |
![]() |
---|---|---|
Fine | Coarse | Adjusted coarse |
Reproduced figures:
Note that in our codebase and for the sake of accuracy and generalisation, we replaced "complexity" by the "coarse_3" size and "entropy" by the "fine" size.
Instead of starting with a half coffee / half milk initial state we called updown. You can now initialize a circle of milk in the center and coffee all around, called the circular initial state.
Updown | Circular |
---|---|
![]() |
![]() |
![]() |
![]() |
- Generalisation of the coarse-graining function to
$k\in N^*, k>2$ categories. In the paper, they take 3 for the initial coarse-graining and 7 for the adujsted coarse-graining. - Differences [0.5 if f(x) == x else x] for each coarse-graining.
- Differences Mask [f(x) == x] for each coarse-graining.
Fine | Coarse_3 | Coarse_7 | Coarse_11 | Diff_3 | Diff_7 | Diff_11 | Mask_3 | Mask_7 | Mask_11 |
---|---|---|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Interacting | Non-Interacting | Fluid |
---|---|---|
![]() |
![]() |
![]() |
pip install git+https://github.com/MathisFederico/coffeematon.git
git clone https://github.com/MathisFederico/coffeematon.git
Then inside the worspace:
pip install -e .
Launch an experiment
python -m coffeematon --help
Plot a graph from a csv results file
python -m coffeematon.plot_results --help
Generate a gif from bitmaps
python -m coffeematon.generate_gifs --help