Jupyter // rstudio-server

Outils pour la recherche

à propos de

Matthieu Guionnet

Ingénieur d'études au CNRS

à propos de

LISBP

Metatoul

Get-Biopuces

>gi|373251181|ref|NG_001742.2| Mus musculus olfactory receptor GA_x5J8B7W2GLP-600-794 (LOC257854) pseudogène on chromosome 2
AGCCTGCCAAGCAAACTTCACTGGAGTGTGCGTAGCATGCTAGTAACTGCATCTGAATCTTTCAGCTGCT
TGTTGGGCCTCTCACAAGGCAGAGTGTCTTCATGGGACTTTGATATTTATTTTTGTACAACCTAAGAGGA
ACAAATCCTTTGACACTGACAAATTGGCTTCCATATTTTATACCTTAATCATCTCCATGTTGAATTCATT
GATCAACAGTTTAAGAAAAAAAGATGTAAAAATGCTTTTAGAAAGAGAGGCAAAGTTATGCACAATAACT
TCTCATGAAGTCACAGTTTGTTAAAAGTTGCCTTAGTTCACAATAAATAATTATGTATGCTCTATAATTT
CAGTGA

Histoires parallèles

R et python

  • logiciels libres
  • interprétés
  • multi-paradigmes
  • piles incluses
  • dépôts de bibliothèques
  • communautés actives (R Toulouse, pycon.fr)

Comment développer en R ?

avec un IDE facile à prendre en main

Comment développer en R sur un serveur ?

toujours avec un IDE facile à prendre en main

Photo by Marek Szturc on Unsplash

double licence

Photo by Charles 🇵🇭 on Unsplash

cp /etc/pam.d/login /etc/pam.d/rstudio

jupyter

  • ju(lia)pyt(on)e(R)
  • & Co
  • multiples interfaces
  • notebook ou journal.
  • application web
  • developing, documenting, and executing code, as well as communicating the results.

jupyterhub

nos cas d'utilisation

Générations de rapports

  • Rmarkdown
  • Modèles de document
  • Git
  • rstudio

présentation et supports de formation intégrés

  • rmarkdown
  • rstudio

Développement de pipelines d'analyses

  • développement dans un notebook
  • duplication du notebook ou suivi de versions
  • partage de notebook(s)
  • exécution dans un jupyter ou jupyterhub

présentation et supports de formation intégrés bis

  • jupyterhub
  • un notebook, plusieurs sorties

et à l'avenir ?

Photo by Anika Huizinga on Unsplash

De la visualisation interactive

In [14]:
import numpy as np

from bokeh.plotting import figure, show, output_notebook

output_notebook()
Loading BokehJS ...
In [ ]:
import pandas as pd

from bokeh.models import ColumnDataSource, LabelSet
from bokeh.plotting import figure, show, output_file
from bokeh.sampledata.periodic_table import elements

elements = elements.copy()
elements = elements[elements["atomic number"] <= 82]
elements = elements[~pd.isnull(elements["melting point"])]
mass = [float(x.strip("[]")) for x in elements["atomic mass"]]
elements["atomic mass"] = mass

palette = ["#053061", "#2166ac", "#4393c3", "#92c5de", "#d1e5f0",
           "#f7f7f7", "#fddbc7", "#f4a582", "#d6604d", "#b2182b", "#67001f"]

melting_points = elements["melting point"]
low = min(melting_points)
high = max(melting_points)
melting_point_inds = [int(10*(x-low)/(high-low)) for x in melting_points] #gives items in colors a value from 0-10
elements['melting_colors'] = [palette[i] for i in melting_point_inds]

TITLE = "Density vs Atomic Weight of Elements (colored by melting point)"
TOOLS = "hover,pan,wheel_zoom,box_zoom,reset,save"

p = figure(tools=TOOLS, toolbar_location="above", plot_width=1200, title=TITLE)
p.toolbar.logo = "grey"
p.background_fill_color = "#dddddd"
p.xaxis.axis_label = "atomic weight (amu)"
p.yaxis.axis_label = "density (g/cm^3)"
p.grid.grid_line_color = "white"
p.hover.tooltips = [
    ("name", "@name"),
    ("symbol:", "@symbol"),
    ("density", "@density"),
    ("atomic weight", "@{atomic mass}"),
    ("melting point", "@{melting point}")
]

source = ColumnDataSource(elements)

p.circle("atomic mass", "density", size=12, source=source,
         color='melting_colors', line_color="black", fill_alpha=0.8)

labels = LabelSet(x="atomic mass", y="density", text="symbol", y_offset=8,
                  text_font_size="8pt", text_color="#555555",
                  source=source, text_align='center')
p.add_layout(labels)

  • shiny
  • plot.ly
  • bokeh
  • webGL (vispy,...)

intégration améliorée

  • python dans RMarkdown
  • R dans jupyter
  • JupyterLab : une nouvelle interface typée IDE

suppression du serveur

Questions ?