Awesome
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
- 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.
- 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
- 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.
- Critical thinking about the limits of our ability to reproduce results years later.
- Case studies of reproducible workflows used for science research
- Open-science checklist for projects
- Targeted towards neuroimaging, but gives applicable advice for all of neuroscience.
- Aa policy discussion about creating incentives for reproducible science
- 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