ABSTRACT

For complex programs, usability and reproducibility can be improved by reading configuration options from files in addition to using command-line options. Up to four layers of configuration may be used: a system-wide configuration file for general settings; a user-specific configuration file for personal preferences; a job-specific file with settings for a particular run; and command-line options to change things that commonly change. This is sometimes called overlay configuration because each level overrides the ones above it. Often, a pre-existing standard such as the YAML or INI syntax is used to write configuration files. Saving and sharing these configuration files makes it easy for researchers to run programs with the same settings, which reduces the risk of errors and increases reproducibility.