Tools

Last updated on 2026-10-07 | Edit this page

Tools

Here are the tools we like. We will only discuss some of them in the tutorial.

make
We use GNU make to specify the whole sequence of operations from raw data to a pdf document. Makefiles record all parameter settings such as seeds for random number generators. We use make to separate source code from derived data.
Python
In 2001, we started using python because the code is easy to read. Since then it has become popular, and in some fields a standard. To separate stages of processing we write temporary pickle files. In particular we segregate all plotting into scripts that use matplotlib.
Git
We use git in our work generally. Today, we will ask you to use git branches to keep exercises using various tools separate.
yapf
(Yet Another Python Formatter) is an open-source code formatter that we use to automatically coerce code to follow Google’s Python style.
mypy
Mypy is an optional static type checker for Python.
pylint
Analyzes and scores python code against a user defined style guide, pylintrc.
sphinx
Sphinx is a documentation generator or a tool that translates a set of plain text source files into various output formats. We use the autodoc extension that can import the modules we are documenting, and pull in documentation from docstrings in a semi-automatic way.
pytest
The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries.
pdb
pdb is Python’s built-in interactive source code debugger.
cProfile
cProfile is Python’s built-in, recommended tool for deterministic profiling. We use it to find where long running programs are spending the most time.
Cython
Cython is an optimizing static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python easy enough to be plausible.
cython.parallel
Cython supports native parallelism through the cython.parallel module. It currently supports OpenMP. We use it ease critical bottlenecks.
sed
Sed is a command line stream editor that we use to extract documentation from makefiles in response to “make help”.
LaTeX
By using make to govern typesetting, we can ensure that reported computational results are products of the most recent version of our source code
Nix
Nix is a package manager and build system that parses reproducible build instructions specified in the Nix Expression Language. Nix stores results of builds in unique addresses specified by a hash of the complete dependency trees. By working in environments specified by such builds, we control the dependency tree and ensure reproducibility.