sábado, 31 de marzo de 2018

Primeros pasos con JupyterLab


Introducción


El proyecto Jupyter tiene su origen en la aplicación web Ipython Notebook que permite registrar las sesiones de trabajo con Python en cuadernos electrónicos, que pueden incluir otros contenidos además del código fuente.

En el año 2014 se anunció un proyecto separado de Ipython para facilitar el desarrollo de Notebook y de otras herramientas para crear y compartir con facilidad este tipo de cuadernos. El proyecto ha evolucionado en el actual JupyterLab con un nuevo interfaz de usuario; estando en desarrollo su primera versión pero con betas disponibles para su instalación y disfrute.

Un cuaderno de trabajo está formado por un conjunto de celdas que pueden contener código fuente, textos explicativos, ecuaciones, gráficos, controles interactivos (widgets) y otros elementos. El código de una celda se puede ejecutar y el resultado que se obtiene se muestra a continuación de la celda como una parte del cuaderno, facilitando al usuario tanto el cambio de los datos como el análisis de la información resultante en tiempo real.

En la presente entrada mostraremos cómo se instala JupyterLab y los fundamentos para trabajar con los cuadernos.


Los cuadernos (Notebooks) y la aplicación JupyterLab


Los cuadernos de JupyterLab gracias a su formato flexible se pueden modificar con facilidad para evaluar sobre la marcha nuevos resultados. Asimismo, resulta sencillo producir nuevas versiones de un mismo cuaderno, convertirlo a otros formatos y compartirlo con otras personas, favoreciendo esta característica el trabajo colaborativo.

JupyterLab es una aplicación web con una arquitectura cliente-servidor que permite editar y ejecutar los cuadernos y otros tipos de archivos utilizando un navegador de Internet. La aplicación se puede ejecutar en cualquier equipo, incluso sin conexión a Internet. JupyterLab es compatible con las últimas versiones de Firefox, Chrome y Safari.

El término Jupyter es un acrónimo que identifica a los lenguajes de programación Julia, Python y R que fueron los primeros en ser aceptados por la aplicación en sus comienzos. Hoy día afortunadamente se pueden usar más lenguajes de programación.


Instalar JupyterLab


Para instalar JupyterLab con el instalador Pip:

$ pip3 install jupyterlab

Existen también varias distribuciones Python como Anaconda, WinPython o Python Anywhere que incluyen IPython, Jupyter Lab y/o Jupyter Notebook y otros módulos de uso bastante extendido.

Para más información relacionada con la instalación de JupyterLab:

Antes de iniciar la aplicación Jupyterlab crearemos una carpeta llamada "Cuadernos" para los ejemplos de esta guía, accediendo a la línea de comandos y ejecutando:

$ mkdir Cuadernos
$ cd Cuadernos


Iniciar la aplicación Jupyterlab


Continuamos con la creación de un sencillo cuaderno para ir conociendo la aplicación. Para iniciar la aplicación Jupyterlab ejecutar:

$ jupyter lab



A continuación, veremos que en la consola se ejecuta un servidor web y que la aplicación JupyterLab se abre en el navegador Internet predeterminado en la dirección http://localhost:8888, quedando disponible para su uso:



JypiterLab consta de una barra con el menú típico de opciones en la parte superior. Debajo de este menú la ventana se divide en dos grandes áreas:

  • En el área de la izquierda: en "Files" se pueden gestionar los archivos y carpetas de la aplicación; en "Running" hacer un seguimiento de las sesiones y si es necesario detener núcleos (kernels), en "Commands" encontrar y ejecutar cualquier comando de JupyterLab y en "Tabs" seleccionar un área de trabajo entre las disponibles.
  • En el área de la derecha llamada "Launcher" se muestran, por defecto, varios accesos directos para editar cuadernos, iniciar sesiones en las distintas consolas y editar de textos.

Las áreas son dimensionables y la de la derecha puede extenderse o no a la anchura del navegador presionando la tecla [Control+B] o con la opción "Show Left Area" del menú "View".


Crear un cuaderno


Para crear un cuaderno hacer clic sobre el acceso directo "Notebooks Python 3" en el área "Launcher" o seleccionar la opción "New Notebook" del menú "File".

A continuación, aparecerá en el área de la derecha una nueva pestaña con el nombre del cuaderno "Untitled", una barra de herramientas y una celda vacía esperando a que se introduzca algún contenido.

Para empezar cambiaremos el nombre del cuaderno por "Fibonacci" seleccionando la opción "Rename Notebook" del menú "File" o con la opción "Rename" del menú contextual que aparece al presionar con el botón derecho del ratón sobre el nombre del archivo en el área de la izquierda. Después, escribir el nuevo nombre y aceptar el cambio con la tecla [Enter]. La aplicación le agrega la extensión .ipynb que es la que se utiliza para los cuadernos.

Para escribir texto en la primera celda seleccionar "Markdown" en la lista de selección de la barra de herramientas donde aparece la palabra "Code". Después, hacer clic en la celda y escribir el siguiente texto:

## La sucesión de Fibonacci

La sucesión de **Fibonacci** comienza con los números 0 y 1, y a partir de estos, cada término es la suma de los dos anteriores. El siguiente código Python muestra los números de la serie (hasta 100):

Después hacer clic sobre el botón "+" ("Insert A Cell Bellow") o presionar [Alt+Enter] para insertar una nueva celda después de la actual y escribir en ella el siguiente código Python:

def fib(n):
    a, b = 0,1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()
    
fib(100)

Cuando hayas finalizado se puede ejecutar el contenido de ambas celdas de una vez eligiendo la opción "Run All Cells" en el menú "Run". El texto descriptivo mejorará su apariencia gracias a los caracteres de formato de Markdown que se incluyen en él y el resultado de ejecutar el código Python se mostrará debajo del mismo: 0 1 1 2 3 5 8 13 21 34 55 89.



Para guardar hacer clic en el icono de guardar "Save the Notebook..." o seleccionar la opción equivalente en el menú "File", o bien, presionar la combinación de teclas [Control+S]. Cuando exista algún contenido pendiente de guardar aparecerá en la pestaña un círculo a la derecha del nombre del cuaderno, que cambiará a "X" cuando todo esté guardado.

Para exportar el cuaderno en HTML, Markdown, PDF, etc. elegir el formato en la opción "Export Notebook As..." del menú "File".

Para cerrar el cuaderno seleccionar "Close Notebook" en el menú "File" y ya hemos terminado nuestro primer cuaderno.


Modificar un cuaderno


Cuando sea necesario abrir el cuaderno hacer doble clic sobre su nombre o seleccionar la opción "Open" del menú contextual. En ambos casos primero se abrirá el cuaderno y con posterioridad se ejecutarán todas las celdas. Después, para editar el contenido de alguna celda: hacer doble clic sobre una celda con texto o clic sobre una celda con código y reescribir su contenido.

Por ejemplo, para obtener los números de Fibonnaci que existen hasta el número 234 hacer doble clic sobre el número "100" de la función fib() en la última línea de la celda del código Python para seleccionar el número y escribir 234 para sustituir dicho valor.

Para editar cualquier línea de código lo normal es hacer clic a la altura de la línea y del carácter a modificar. Para volver a ejecutar la celda actual presionar [Control+Enter]. Como se puede apreciar con Jupyterlab es fácil modificar cuadernos para comprobar nuevos resultados. Para concluir, volvemos a reponer el valor "100" en la función para dejar el código como estaba antes, deshaciendo el último cambio con [Control+Z].

En el menú "Edit" se encuentran todas las opciones para operar con celdas. Básicamente, una o más celdas se pueden seleccionar o no, cortar, copiar, pegar y mover. Con la opción "Split Cell" se puede dividir una celda en dos. La división se efectuará por la posición que ocupe el cursor. También, dos o más celdas seleccionadas se pueden agrupar en una con la opción "Merge Selected Cells".

Para borrar las salidas que se situán en el espacio contiguo a una celda y que resultan de ejecutar código fuente Python seleccionar las opciones "Clear Output" o "Clear All Outputs" en el menú "Edit".

También, en la barra de herramientas del cuaderno hay botones con las opciones de edición de más uso.

Por último, comentar que existen varias opciones para ejecutar el contenido de las celdas en el menú "Run". Para ejecutar celdas individuales o todas la celdas; para ejecutar una celda e insertar una nueva a continuación y para ejecutar las celdas anteriores o posteriores a una celda determinada.


Cerrar el cuaderno y la aplicación JupyterLab


Para cerrar el cuaderno y finalizar la sesión de trabajo seleccionar "Close and Shutdown Notebook" en el menú "File" y cerrar la pestaña del navegador.

Para detener el servidor web acceder a la consola donde se inició JupyterLab y presionar [Control+C]. Después, responder al siguiente mensaje: "Shutdown this notebook server (y/[n])?" presionando la tecla [y].

En el próximo capítulo mostraremos cómo insertar nuevos elementos de distinto tipo en un cuaderno JupyterLab.



Ir al índice del tutorial de JupyterLab