Giter Club home page Giter Club logo

edeno / better-science-code Goto Github PK

View Code? Open in Web Editor NEW
31.0 7.0 8.0 6.12 MB

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. View presentation at: https://edeno.github.io/Better-Science-Code

License: MIT License

Shell 0.07% HTML 15.85% CSS 41.27% JavaScript 38.29% Python 1.80% MATLAB 2.72%
science reproducible-science advice data-analysis data-management neuroscience

better-science-code's Introduction

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

better-science-code's People

Contributors

edeno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

better-science-code's Issues

Suggestions

Slide 25: Maybe mention that seeing the whole function on screen helps with keeping it in your head.

Containers are worth mentioning for reproducibility, since they freeze dependencies at the time of creation. It highlights that reproducibility is not just about your code and data, but the environment it runs in. Don't have immediate links, but Googling "containers for scientific computing" looks reasonable. And the Singularity folks have talked a lot about the scientific use case.

Add section on coding in notebooks versus code editors

Coding in notebooks is useful for prototyping, but you don't get the same benefits as from code editors (linting, hints, etc). Additionally, the notebook cells can run out of order making for less reproducible code. Code can start in a notebook but should be moved to files as functions as soon as possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.