Notes on production

Writing this book has meant bringing together text, mathematics, and code, using a large array of open-source tools. It’s amazing what you can get your hands on these days, and I’m grateful to the contributors to the various projects for their creativity and generosity.

The book is written with a combination of “markdown” text and Jupyter notebooks to allow executable content. It was then assembled using Jupyter Book to drive the Sphinx documentation generator, and hosted on GitHub Pages.

Simulations are all written in Python 3 and expressed using the epydemic library for network simulation, which itself is built on top of the networkx library for representing and manipulating networks in Python.

The mathematics makes heavy use of the numpy. The diagrams are all generated using matplotlib together with seaborn to improve the graphical presentation, as well as some of the network visualisation functions built into networkx.

For the experiments where a lot of numbers are being crunched we use the epyc computational experiment management library and pandas to handle the resulting datasets. The large experiments use a compute cluster (“hogun”) with 11 machines each with 16Gb of memory and two 4-core Intel Xeon E3-1240@3.4MHz processors; all other experiments are performed on a 2017-vintage MacBook Pro with 16Gb of memory and a dual-core Intel i5@3.1GHz processor.

All text, code, and diagrams are available for download from the project’s GitHub repo.