Better-Science-Code
A presentation on best coding/data management practices based on my own experiences of scientific computing and data analysis and heavily borrowing from the recommendations of many others (This is not meant to be a unique work, more like an annotated compilation of advice.).
Resources
Writing better code
Wilson, G., Bryan, J., Cranston, K., Kitzes, J., Nederbragt, L., and Teal, T.K. (2016). Good Enough Practices in Scientific Computing. arXiv Preprint arXiv:1609.00037.
- Solid practical advice for writing good code and managing data.
Initial steps toward reproducible research - Karl Broman
- Another good guide for writing code and managing data. More focused on R.
10 Tips for Writing Cleaner & Better Code
- A short list of tips for those that don't have much time.
Version control
Git for humans - Alice Bartlett
- Great introduction to the basics of
git
without getting too "into the weeds". Clearly explains the usefulness of commits and branching.
Github Desktop
- My preferred interface for beginning users of
git
. Uses a graphical interface rather than the command line.
The curious coder’s guide to git
- A longer guide using the
git
command line interface
Introduction to Git & the Command Line
- A step-by-step guide to
git
and the command line
Software Carpentry's Guide to Git
- Another command line tutorial to using
git
Git Introduction - Chris Markiewicz
- More advanced
git
tutorial that covers how to contribute to open source projects
How to document your code
Numpy/Scipy Style Guide
- My recommended style for documenting scientific code for both Matlab and Python.
Best practices for file naming
- A couple of helpful tips in naming file. Most are fairly obvious but easy to forget.
Open science
Toward standard practices for sharing computer code and programs in neuroscience
- Recommendations on what to share for open science.
How I learned to stop worrying and love the coming archivability crisis in scientific software - C. Titus Brown
- Critical thinking about the limits of our ability to reproduce results years later.
Kitzes, J., Turek, D., & Deniz, F. (Eds.). (2017). The Practice of Reproducible Research: Case Studies and Lessons from the Data-Intensive Sciences. Oakland, CA: University of California Press.
- Case studies of reproducible workflows used for science research
An onboarding guide to research in my lab - trying to articulate clear standards for new projects - Michael C. Frank
- Open-science checklist for projects
Poldrack, R.A., Baker, C.I., Durnez, J., Gorgolewski, K.J., Matthews, P.M., Munafò, M.R., Nichols, T.E., Poline, J.-B., Vul, E., and Yarkoni, T. (2017). Scanning the horizon: towards transparent and reproducible neuroimaging research. Nature Reviews Neuroscience 18, 115–126.
- Targeted towards neuroimaging, but gives applicable advice for all of neuroscience.
Munafò, M.R., Nosek, B.A., Bishop, D.V.M., Button, K.S., Chambers, C.D., Percie du Sert, N., Simonsohn, U., Wagenmakers, E.-J., Ware, J.J., and Ioannidis, J.P.A. (2017). A manifesto for reproducible science. Nature Human Behaviour 1, 21.
- Aa policy discussion about creating incentives for reproducible science
Millman, K.J., and Pérez, F. (2014). Developing open-source scientific practice. Implementing Reproducible Research 149.
- The introduction makes a strong case for reproducible research. Mostly focused on Python tools.
Examples of well-written code
ELFI - Engine for Likelihood-Free Inference
Requirements