# -*- mode: org -*- #+TITLE: Jupyter #+AUTHOR: Arnaud Legrand #+DATE: June, 2018 #+STARTUP: overview indent #+OPTIONS: num:nil toc:t #+PROPERTY: header-args :eval never-export * Additional Jupyter resources or tricks ** Tips and tricks The following [[https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/][webpage]] lists several Jupyter tricks (in particular, it illustrates many =Ipython magic= commands) that should improve your efficiency (note that this blog post is about two years old so some of the tricks may have been integrated in the default behavior of jupyter now). ** Running R and Python in the same notebook The best solution to this is to install rpy2. On my machine, I have installed the =python3-rpy2= debian package with =apt-get install=. E.g., #+begin_src shell :results output :exports both sudo apt-get install python3-rpy2 python3-tzlocal #+end_src An other (not really recommanded) alternative consists in going through the python package manager with #+begin_src python :results output :exports both pip3 install rpy2 #+end_src Then you'll be able to use both languages in the same notebook by: 1. Loading =rpy2=: #+begin_src python :results output :exports both %load_ext rpy2.ipython #+end_src 2. Using the =%R= Ipython magic: #+begin_src python :results output :exports both %R summary(cars) #+end_src Python objects can then even be passed to R as follows (assuming =df= is a pandas dataframe): #+begin_src python :results output :exports both %%R -i df plot(df) #+end_src ** Exporting a notebook Obviously, you can convert to html or pdf using the using the =File > Download as > HTML= (or =PDF=) menu option. This can also be done from the command line with the following command: #+begin_src sh :results output :exports both ipython3 nbconvert --to pdf Untitled.ipynb #+end_src If you want to use a specific style, then the nbconvert exporter should be customised. This is discussed and demoed [[http://markus-beuckelmann.de/blog/customizing-nbconvert-pdf.html][here]]. We encourage you to simply read the [[https://nbconvert.readthedocs.io/en/latest/][doc of nbconvert]]. Instead of going directly through LaTeX and playing too much with the nbconvert exporter, an other option consists in exporting to Markdown and playing with [[https://pandoc.org/][pandoc]]. Both approaches work, it's rather a matter of taste. * Installing Jupyter on your own machine ** Installing jupyter Here is what you should install: #+begin_src shell :results output :exports both sudo apt-get install jupyter-notebook python3-pip python3-matplotlib python3-numpy #+end_src On my machine, I got the version 5.4.1: #+begin_src shell :results output :exports both jupyter-notebook --version #+end_src #+RESULTS: : 5.4.1 The ipython notebook can then be run with the following command: #+begin_src shell :results output :exports both jupyter-notebook #+end_src ** Using R If you want to use the R kernel in jupyter, follow [[https://github.com/IRkernel/IRkernel#installation][these instructions]]. Alternatively, you can install =rpy2= (see the [[*Running R and Python in the same notebook][Running R and Python in the same notebook]] section). #+begin_src shell :results output :exports both sudo apt-get python3-rpy2 #+end_src ** Exporting your notebooks with latex Here is what I had to install on my recent debian machine to make sure the notebook export via latex works: #+begin_src shell :results output :exports both sudo apt-get install wkhtmltopdf sudo apt-get install texlive-xetex #+end_src ** Interacting with gitlab Here is our [[https://github.com/brospars/nb-git][jupyter extension that allows to git push/pull from the notebooks]]: #+begin_src shell :results output :exports both jupyter nbextension install https://raw.githubusercontent.com/brospars/nb-git/master/nb-git.js jupyter nbextension enable nb-git #+end_src ** Interesting extensions to improve notebook readability Here are two interesting extensions that can improve readability: - [[https://stackoverflow.com/questions/33159518/collapse-cell-in-jupyter-notebook][Code folding]] #+begin_src shell :results output :exports both pip3 install jupyter_contrib_nbextensions # jupyter contrib nbextension install --user # not done yet #+end_src - [[https://github.com/kirbs-/hide_code][Hiding code]] #+begin_src sh :results output :exports both sudo pip3 install hide_code sudo jupyter-nbextension install --py hide_code jupyter-nbextension enable --py hide_code jupyter-serverextension enable --py hide_code #+end_src * Installing JupyterHub :Benoit: #+BEGIN_QUOTE Benoit may give a few hints on this. #+END_QUOTE