Un entrono de computación interactiva atractivo
Un entrono de literate programming en python
Un entrono para investigación reproducible
Una forma de generar tutoriales y material de autoaprendizaje amigables
Primera versión en diciembre 2011 como un método de libretas para Ipython.
Inició como una versión para python de las libretas de Mathematica
La arquitectura desarrollada permitió su uso más allá de python
En 2014 se separan como proyecto independiente bajo el nombre de Jupyter
Se basa en el concepto de celdas
Las celdas pueden ser de código o texto
Las celdas de texto se realiza en Markdown
Markdown con sabor de Github
Incluye MathJax
Las celdas de código se ejecutan en el orden solicitado en forma asíncrona
El sistema guarda memoria de lo ejecutado
Aplicación cliente-servidor
El cliente interactúa a través de un navegador
El servidor se compone de Kernel y dashboard
El Kernel ejecuta el codigo de las celdas
El dashboard se encarga de la visualización y las celdas de texto.
Python instalado (de preferencia Anaconda)
Al menos un kernel instalado (i.e. Ipython)
Python, R y/o Julia como nativos y con soporte oficial
Empezamos por cargar algunas librerías básicas
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (20,8)
plt.style.use('ggplot')
x = np.linspace(-np.pi, np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
mientras no se reinicie el kernel
plt.plot(x, y1, label='sen(x)')
plt.plot(x, y2, label='cos(x)')
plt.title('Funciones de ejemplo')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.legend()
plt.show()
¿Qué puedo agregar en las celdas de texto?
¿Qué puedo agregar en la celdas de código (aparte de código, por supuesto)?
¿Cómo puedo cambiar el Kernel para usar otro lenguaje de programación?
Lo más fácil es:
![texto](imagenes/jupyter.png)
Pero muchas veces es más conveniente
<img src="imagenes/jupyter.png" width="70">
| Col 1 | Col 2 | Col 3 |
| ------------- |:-------------:| ------:|
| Esta | Esta | \$1600 |
| columna | se encuentra | \$12 |
| a la derecha | centrada | \$1 |
Markdown | bien | feo
---|---|---
*No se ve muy bien* | ~el código~ | **pero genera un cuadro decente**
1 | 2 | 3
Col 1 | Col 2 | Col 3 |
---|---|---|
Esta | Esta | \$1600 |
columna | se encuentra | \$12 |
a la derecha | centrada | \$1 |
Markdown | bien | feo |
---|---|---|
No se ve muy bien | ~el código~ | pero genera un cuadro decente |
1 | 2 | 3 |
Podemos escribr cosas tanto en linea como $\forall x \in X, \quad \exists y \leq \epsilon$ que es muy práctico para calculo 1. Igualmente, se pueden escribir cosas como $\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$ que es útil en trigonometría. O tambien podemos escribir
$$
\frac{n!}{k!(n-k)!} = \binom{n}{k},
$$
$$
P\left(A=2\middle|\frac{A^2}{B}>4\right) = \int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x
$$
Podemos escribr cosas tanto en linea como $\forall x \in X, \quad \exists y \leq \epsilon$ que es muy práctico para calculo 1. Igualmente se pueden escribir cosas como $\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$ que es útil en trigonometría. O tambien podemos escribir $$ \frac{n!}{k!(n-k)!} = \binom{n}{k}, $$
$$ P\left(A=2\middle|\frac{A^2}{B}>4\right) = \int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x $$```python
def fibo(n):
def fibo_r(x, y, acc):
return y if acc < 2 else fibo_r(y, x + y, acc - 1)
return fibo_r(1, 1, n)
`` `
lo que queda como
def fibo(n):
def fibo_r(x, y, acc):
return y if acc < 2 else fibo_r(y, x + y, acc - 1)
return fibo_r(1, 1, n)
Comandos mágicos de Jupyter
Código ejecutado por el Kernel
Jupyter tiene una serie de comandos mágicos,
Todos empiezan con '%'.
Todos son específicos a Python
Para probar, ejecuta en una casilla lo siguiente
%quickref
%lsmagic
%lsmagic
Available line magics: %alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode Available cell magics: %%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile Automagic is ON, % prefix IS NOT needed for line magics.
def fibo(n):
def fibo_r(x, y, acc):
return y if acc < 2 else fibo_r(y, x + y, acc - 1)
return fibo_r(1, 1, n)
display(fibo(4))
display(fibo(20))
%timeit fibo(20)
# ¿Y que pasa si ejecutas %prun fibo(200)?
5
10946
4.34 µs ± 96.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
# Comandos mágicos que mandan llamar al shell
!which python
%ls
%pwd
/Users/juliowaissman/anaconda/bin/python LICENSE jupyter_basico.ipynb README.md jupyter_basico.slides.html imagenes/ publish.sh* index.html reveal.js/
'/Users/juliowaissman/Documents/cursos/Capacitacion/jupyter-intro'
from IPython.display import YouTubeVideo
# a talk about IPython at Sage Days at U. Washington, Seattle.
# Video credit: William Stein.
YouTubeVideo('1j_HxD4iLn8')
Depende de lo que quieras hacer.
Se puede hacer uso intensivo del autocompletado
Igualmente, se tiene la documentación de todas las funciones
Prácticamente todo lo que se hace en python funciona en Jupyter, sin embargo, se usa principalmente con:
Dos opciones:
Colab. Libre, pero de Google (se usa desde drive)
Binder. Libre pero en etapa Beta y algo tardado (se usa desde github). No siepre funciona con las bibliotecas que se consideran de base.
El nombre viene de Julia, python y R.
Instalar R, y desde R en la terminal:
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon',
'pbdZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()
Instalar Julia, y luego ejecutar dentro del repl de Julia
Pkg.add("IJulia")
Necesito tener instalado Jupyter a través de la distribución Anaconda
Usar el interprete (basado en python) Xeus-cling
Para instalar, desde la consola:
$ conda create -n cling
$ source activate cling
$ conda install xeus-cling notebook -c QuantStack -c conda-forge
$ source deactivate
Para probar
$ source activate cling
$ jupyter notebook
Habilitar la edición de diapositivas en el menú (View -> Cell Toolbar -> Slideshow)
Seleccionar el tipo de diapositiva:
Slide
Transparencia a la derecha
Subslide
Transparencia hacia abajo
Fragment
Para completar la transparencia paso a paso
-
Para continuar con la transparencia