experience with Python (useful) and Javascript programming (essential). It may be useful to be willing to learn about functional programming (but this is not essential).
No
Prerequisites: experience with Python (useful) and Javascript
programming (essential). It may be useful to be willing to learn about
functional programming (but this is not essential).
Jupyter notebooks [1] are examples of literate programming [2] where
code and outputs from the code as well as documentation are in the same
application. Jupyter allows the user to run code in the Python, R and
Julia environments.
There is a great deal of excitement in the Scientific community that
these notebooks are a fundamental step forward in improving
reproducibility of workflows. In addition to this Binder [3] provides
resources to run notebook on a cloud.
Finally it is possible to build extensions to Jupyter, written in
Javascript [4].
This project involves developing a possible number of different extensions for
these notebooks.
These individual projects include
- Developing a token system where parts of a notebook are not revealed to the user until an answer to a question is correctly answered.
- Developing a ‘reproducibility mode’ where cells once run cannot be edited but can be copied and modified in another cell further down the notebook.
- Providing a mechanism to annotate a notebook within the actual markdown (using Dublin Core Metadata standards and Schema.org).
- A ‘publication mode’ where a notebook can be pushed to a git repository.
- A ‘citation mode’ where the relevant github repository for a notebook can be uploaded to Zenodo.org which provides a Digital Object Identifier (DOI) which can then be automatically called from within the notebook.
- An interface to enter information about the reproducibility of a notebook.
[1] H. Shen, ‘Interactive notebooks: Sharing the code’, Nat. News,
vol. 515, no. 7525, p. 151, Nov. 2014.
[2] D. E. Knuth, ‘Literate Programming’, Comput. J., vol. 27, no. 2,
pp. 97–111, Jan. 1984.
[3] Binder. https://mybinder.org/.
[4] Extensions — JupyterLab 0.35.6 documentation.
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html.
[5] WDL Index.
https://software.broadinstitute.org/wdl/documentation/.