The scripts in this repository calculate the delay buffer generators, and their associated thermal dissipation, from a given specification of the process's epsilon machine.
delay_buffer_generators.py defines the class HMMProcess
and some example processes. HMMProcess reflects a Hidden
Markov Model of a process. It should be constructed by
supplying a tensor description of its epsilon-machine
transitions (for details, see comments in delay_buffer_generators.py,
or the examples in make_delay_chains.py).
HMMProcess has several member functions, the most important being
delay_by_one(), which creates a new model producing
the same process, but with an additional delay of one step.
generative_dissipation() calculates the unavoidable
thermal dissipation (in units of kT) when the model is used
to generate the pattern.
The class also has a __str__ overload, such that
"print(model)" outputs a human-readable description
of the model's memory and transition structure.
Finally, make_delay_chain(process, length), takes a HMMProcess
"process" and number indicating the maximum delay buffer length. It
then returns an array, where index i indicates the generative
dissipation associated with a delay of i (index 0 indicates the
epsilon-machine dissipation).
make_delay_chains.py calculates the dissipation for the
Even Process, the Perturbed Coin, the Restricted
Golden Mean, and the Nemo Process, when produced by a generator
that delays the output by between 0 and 15 steps.
plot_delay_chains.py synthesizes the data produced by
make_delay_chains.py into a chart using matplotlib.
If you use this script or a derivative thereof in academic research, I kindly ask that you consider citing the paper for which this script was originally developed:
A. J. P. Garner, Chaos 31, 063131 (2021); https://doi.org/10.1063/5.0044741