Giter Site home page Giter Site logo

kenghooi-teoh / scratch-the-dura Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brainhack101/scratch-the-dura

0.0 0.0 0.0 7.41 MB

Begin to learn how to leverage Git, Docker, Jupyter, and various neuroinformatics tools for performing exciting science!

License: Apache License 2.0

Dockerfile 0.06% Jupyter Notebook 99.94%

scratch-the-dura's Introduction

Scratch The Dura of Brain Hacking

Begin to learn how to leverage Git, Docker, Jupyter, and various neuroinformatics tools for performing exciting science!

This repository accompanies the lecture slides, Brainhack 101 given at OHBM 2017.

The Desiderata

A valuable feature of science, in particular computationally-driven science, is reproducibility. When performing or reproducing analyses there are several key features that can make this reproducibility particularly effective. Some of these are:

  • the ability for anyone to download/access all tools and data used
  • the ability for anyone to install or use the tools and data on their own
  • interactive demonstrations showing how to use tools and interact with data
  • the ability to test the robustness of findings/claims

Leveraging several popular open-source or accessible tools, all of these requirements can be easily met, providing a solid base upon which we can develop, test, extend, or distribute scientific findings.

The Resources

We propose one possible model for achieving all of these requirements - note that there are alternatives to each of these tools that may be better for specific circumstances or applications, and the selected were chosen simply based upon popularity and general usefulness.

To share data and code, we use Github*. To ensure anybody can install and use our tool, we use Docker. To provide interactive demonstrations, we use Jupyter Notebooks to showcase our Python code. To enable testing the robustness of our claims, we integrate analyses with Jupyter Widgets.

*Note: Github is generally not the best place to store data, but in this particular example we use it since this tutorial focuses primarily on tools, and the data files being stored are small. In practice, storing data through either a public data repository (such as NITRC, LONI, LORIS, OpenfMRI, etc.) or on the Cloud are better solutions.

The Structure

For those of us who are visual learners, we can study the figure below to understand how each of these pieces fits together.

Using a containerized environment such as Docker, we can develop code locally and interact through a web interface via Jupyter. Inside our environment we can leverage or study any number of tools, such as a few of the neuroimaging tools shown. As we make progress, we save our work, and push the changes up to Github to serve as both our "cloud copy" and to communicate our progress to the public. Any other user can pull down our repository from Github, launch the container, and perform the same analyses we've shared.

The Plan

As there are several pieces of this which are separable from one another, we will tackle each piece independently. We will begin by uncovering (some of) the secrets of Github. We will then learn how to leverage Docker for packaging and deploying code portably. Putting our new skills to the test, we can setup our own Jupyter server. Lastly, we'll showcase some tools and demonstrate how to integrate Widgets into analyses for sharing interactive science.

scratch-the-dura's People

Contributors

gkiar avatar nair-r avatar

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.