Reproducibility and dissemination

Faical Yannick P. Congo

faical.congo@nist.gov

Thursday, October 26, 2017

Computational Methods Talks - NIST

http://bit.ly/2ivhPtG 

what it takes and what is out there ?

Buckle up for this Journey

BUT BEFORE...

LET'S START WITH SOME FACTS

reproducibility?

dissemination?

tools, web?

container technology

literate programming

web services

why is this important?

IN...

3 Scenarios

Things change fast in the open source world

I have to

cope with obsolescence

and new paradigms

better data structures

SOPHISTICATED computational methods

more optimization techniques

How do i keep up with all this while doing research?

Rapid prototyping

Research environment timeline is dynamic

week

day

month

year

semerter

update lib1

system update

software patch

hardware swap

system upgrade

...

How do i keep my previous research working?

during a study timeline, the environment will change for different reasons!

flexible packaging/change agnostic layer

using existing publications materials

publication

extract these

reconstruct

execute

corroborate

research involves others using your study in theirs and you doing the same!

How can i improve my publication content so that others can come to the same conclusions easily?

STRAIGHTFORWARD documentation/automatic reconstruction

How do we approach reproducibility now?

there are two main ways

what are they?

literate programming

containerization

YES: They are two very different things!

tell a human being what the computer should do

tell the computer what to do

wrap the code with guided explanation (science)

wrap the code with automation (reconstruction)

make the scientist understand enough to deal with the changes

make the automation POWERFUL enough so the scientist do not feel the changes.

literate programming

containarization

YES: you are probably already using at least an older paradigm

each time that you place a code block after a scientific explanation.

each time that you run another operating system on top of your default one: Windows on mac/ linux on mac/linux on windows/windows on linux

each time that you place a result or a graph after a code block.

each time that you open a terminal on your computer or login to your account on a cluster.

publications

virtual machines/session

So what is literate programming?

According to DONAlD knuth Most of our problems in computer science with research comes from the fact that we CONVENTIONALLY try to tell the computer what to do.

YET!

According to HIM It is more sustainable not to put all our trust in the computer but instead focus more in trying to tell to a human being what we want the computer to do.

thus

literate programming is an adequate mixture of code and a guided explanation of what we intent to do with it.

And

data/results visualization in addition now

what is the state of the art in terms of tools for literate programming?

there are mainly two approaches

executable papers

NOTEBOOKS

what is an executable paper?

it is a paper in which all results are actually outputs of executed code provided in the paper.

when accessed from an executable paper server, all the results can be re-executed by the user.

what is a notebook?

it is a digital interactive web page that can ingest text, data and code.

in addition to just ingesting them, it allows various formatting features for text.

it support various programming language thus can run the code.

it all provides some visualization features 

executable papers tools

introduction and demo in three perspectives

a high level perspective

an admin perspective

a user perspective

high

https://worksheets.codalab.org/

admin

https://github.com/codalab/codalab-worksheets/wiki/Server-Setup

user

https://github.com/codalab/codalab-worksheets/wiki/Executable-Papers

high

credit: Anita de Waard, Vice President, Research Data Collaborations at Elsevier

admin

user

high

credit: Anita de Waard, Vice President, Research Data Collaborations at Elsevier

user

admin

high

credit: Anita de Waard, Vice President, Research Data Collaborations at Elsevier

admin

user

high

credit: Anita de Waard, Vice President, Research Data Collaborations at Elsevier

admin

https://www.vistrails.org/usersguide/v2.2/html/vistrails_server.html

user

https://www.vistrails.org/usersguide/v2.2/html/latex.html

Notebooks tools

introduction and demo in three perspectives

a high level perspective

an admin perspective

a user perspective

high

http://jupyter.org/

admin

Available on:

github

dockerhub

apt-get install npm nodejs-legacy
npm install -g configurable-http-proxy
pip3 install jupyterhub
pip3 install --upgrade notebook
jupyterhub
Got to: https://localhost:8000
docker pull jupyter/jupyterhub
docker run -d jupyterhub jupyterhub
Go to: http://localhost:8000

user

http://nbviewer.jupyter.org/github/ipython/ipython/blob/4.0.x/examples/Notebook/Index.ipynb

high

http://zeppelin.apache.org/

admin

https://zeppelin.apache.org/docs/0.7.3/install/install.html

user

high

http://beakernotebook.com/

admin

http://beakernotebook.com/getting-started

user

http://beakernotebook.com/videos

18:00

high

https://nteract.io/

admin

https://nteract.io/desktop

user

high

http://www.joelotter.com/kajero/

admin

https://github.com/JoelOtter/kajero

user

http://www.joelotter.com/kajero/blank

what is the state of the art in terms of tools for containerization?

there are mainly two focus

container systems

hpc frameworks

what is a container system?

a container is sandbox that isolate application+data from each other.

communication and sharing is highly restricted.

within a container, an application has all its dependencies and required configurations (environment) to run properly.

what is an hpc framework?

an hpc framework is a system that automates and simplifies tasks orchestration.

schedulers such as slurm, grid engine, moab and condor are hpc frameworks.

we are talking here about hpc frameworks specialized in dealing with containers.

these two are very complimentary

creation of containers specifications

run containers

building and management of containers

orchestrate containers executions

containers images storage

SOPHISTICATED scalability and availability

containers systems

hpc frameworks

container systems/runtimes

introduction and demo in three perspectives

a high level perspective

an admin perspective

a user perspective

high

https://www.docker.com/

admin

https://www.docker.com/get-docker

user

https://docs.docker.com/get-started/part2/#define-a-container-with-a-dockerfile

high

https://coreos.com/rkt/

admin

https://github.com/rkt/rkt/blob/master/Documentation/distributions.md

user

https://coreos.com/rkt/docs/latest/getting-started-guide.html

high

https://linuxcontainers.org/

admin

https://linuxcontainers.org/lxc/getting-started/

user

high

https://www.opencontainers.org/

https://github.com/opencontainers/runc

admin

https://github.com/opencontainers/runc

user

hpc frameworks

introduction and demo in three perspectives

a high level perspective

a user perspective

high

https://github.com/docker/swarm

admin

https://docs.docker.com/swarm/plan-for-production/#swarm-manager-ha

high

https://kubernetes.io/

admin

https://kubernetes.io/docs/concepts/cluster-administration/cluster-administration-overview/

high

https://mesos.apache.org/

admin

https://mesos.apache.org/documentation/latest/architecture/

high

https://www.openstack.org/software/

admin

https://docs.openstack.org/developer/devstack/

web services you should know about

they provide open source solutions TO DISSEMINATE:

literate programming

containarization

nbviewer

we do not need to have one!

https://nbviewer.jupyter.org/

gitlab

we have one at nist!

https://gitlab.nist.gov

Github

we have usnistgov!

https://github.com/usnistgov

dockerhub

it is open access and free!

https://hub.docker.com/explore/

Copy of reproducible dissemination

By Daniel Wheeler

Copy of reproducible dissemination

  • 523