title: Tools and techniques for computational reproducibility.
abstract: When reporting research findings, scientists document the steps they followed so that others can verify and build upon the research. When those steps have been described in sufficient detail that others can retrace the steps and obtain similar results, the research is said to be reproducible. Computers play a vital role in many research disciplines and present both opportunities and challenges for reproducibility. Computers can be programmed to execute analysis tasks, and those programs can be repeated and shared with others. The deterministic nature of most computer programs means that the same analysis tasks, applied to the same data, will often produce the same outputs. However, in practice, computational findings often cannot be reproduced because of complexities in how software is packaged, installed, and executed-and because of limitations associated with how scientists document analysis steps. Many tools and techniques are available to help overcome these challenges; here we describe seven such strategies. With a broad scientific audience in mind, we describe the strengths and limitations of each approach, as well as the circumstances under which each might be applied. No single strategy is sufficient for every scenario; thus we emphasize that it is often useful to combine approaches.
authors.affiliation: Department of Biology, Brigham Young University, Provo, UT, 84602, USA. stephen_piccolo@byu.edu.
authors.forename: Stephen R
authors.initials: SR
authors.lastname: Piccolo
authors.affiliation: Department of Computer Science, Brigham Young University, Provo, UT, USA.
authors.forename: Michael B
authors.initials: MB
authors.lastname: Frampton
mesh_terms: D019295:Computational Biology / Q000379:methods*; D015203:Reproducibility of Results; D012107:Research Design; D012984:Software
keywords: Computational reproducibility; Literate programming; Practice of science; Software containers; Software frameworks; Virtualization