Manual Jupyter Spanish
User Manual:
Open the PDF directly: View PDF .
Page Count: 38
Download | |
Open PDF In Browser | View PDF |
Universidad Complutense de Madrid MANUAL DE USO DE JUPYTER NOTEBOOK PARA APLICACIONES DOCENTES Autores: Eduardo Cabrera Granado Elena Dı́az Garcı́a Índice general Introducción 1 Jupyter Notebook 3 Python 11 Gestión de cursos 21 Propuestas Docentes 27 Conclusiones 31 Referencias 33 Introducción El proyecto de código abierto Jupyter pretende generar una plataforma computacional que permita utilizar diferentes lenguajes (su nombre proviene de unir los 3 lenguajes quizás más populares en cálculo cientı́fico: Julia, Python y R). El pilar en el que se sustenta es la interfaz web Jupyter Notebook, que aglutina la ejecución de código, inclusión de texto junto a ecuaciones en LaTeX (vı́a MathJax), video, y todo lo que se pueda visualizar con un navegador. Su funcionalidad, por otro lado, puede ser extendida gracias a herramientas como nbconvert , encargada de gestionar la conversión a formatos como LaTeX, PDF o presentaciones web basadas en Reveal.js, o ipywidgets que proporciona widgets interactivos dentro del documento. Su desarrollo ha sido patrocinado por compañı́as como Micro- soft o Google ası́ como impulsado por el proyecto de infraestructura europea Horizonte 2020 denominado OpenDreamKit. Su uso en entornos docentes ha crecido en popularidad debido a su gran flexibilidad, fácil acceso a través del navegador y las posibilidades añadidas de separar el propio documento del núcleo de cálculo en el lenguaje escogido. Esta arquitectura permite abandonar la instalación local. El profesor puede hacer uso de un servidor externo (o su propio ordenador) para proporcionar a los estudiantes lecciones, presentaciones, o tareas interactivas. Esta caracterı́stica permite eliminar una de las grandes barreras de acceso que se presentan al incluir un nuevo tipo de documento o programa, como es su instalación en el equipo personal del estudiante. Utilizando este tipo de documentos se pueden generar lecciones o material de apoyo al estudio individual ricos en contenido, ası́ como material de trabajo colaborativo que incluya elementos de cálculo numérico. Dado que resulta inevitable que un estudiante del área de ciencias necesite trabajar con algún tipo de programa de cálculo a 2 Introducción lo largo de su carrera universitaria ası́ como en su futuro laboral, la inclusión de este tipo de elementos permite al alumno comenzar a familiarizarse con ellos, adquiriendo por tanto una competencia transversal de gran valor para su formación. Además, proporciona otro nivel más de profundización en los contenidos de la asignatura, que podrá ser explorado por aquellos estudiantes con una mayor motivación, aunque no se requiera para el desarrollo normal del curso. A lo largo del presente manual veremos las caracterı́sticas generales de la interfaz Jupyter Notebook, su instalación y uso para proporcionar lecciones y ejercicios útiles en estudios cientı́ficos. A su vez, se describirán varias opciones para proporcionar un servidor de este tipo de documentos accesible por los estudiantes a través del ordenador, ası́ como añadidos especı́ficos para docencia como es la gestión de un curso ı́ntegramente realizado en Jupyter Notebooks. Jupyter Notebook Jupyter Notebook es una interfaz web de código abierto que permite la inclusión de texto, vı́deo, audio, imágenes ası́ como la ejecución de código a través del navegador en múltiples lenguajes. Esta ejecución se realiza mediante la comunicación con un núcleo (Kernel) de cálculo. Aunque en principio, el equipo de desarrollo de Jupyter Notebook incluye por defecto únicamente el núcleo de cálculo Python, el carácter abierto del proyecto ha permitido aumentar el número de núcleos disponibles [1], incluyendo, por ejemplo Octave, Julia, R, Haskell, Ruby, C/C++, Fortran, Java, SageMath, Scala, o también Matlab y Mathematica. Esta interfaz, agnóstica del lenguaje (de ahı́ su nombre al unir 3 de los lenguajes de programación de código abierto más utilizados en el ámbito cientı́fico: Ju-lia, Py-thon y R), puede suponer por tanto una estandarización para mostrar el contenido de cursos cientı́ficos, sin encontrarse limitado a la adopción de un único lenguaje. Esta versatilidad ha permitido una adopción creciente tanto en el ámbito docente como investigador. En este último campo, la inclusión de Jupyter Notebooks con cálculos, datos y figuras adicionales a artı́culos aparecen cada vez más en las revistas cientı́ficas. Por ejemplo, los datos y cálculos facilitados en este formato por el equipo de LIGO, dedicado al descubrimiento de las ondas gravitacionales. En lo referente a su uso docente cabe destacar el curso AeroPython de la Universidad George Washington e impartido por la profesora Lorena Barba enteramente utilizando Jupyter Notebooks. 4 Jupyter Notebook Orı́genes Jupyter Notebook nace como una evolución de la interfaz Ipython Notebook, básicamente con las mismas funcionalidades pero añadiendo la posibilidad de ejecutar código en múltiples lenguajes. Por otro lado, la interfaz web, común tanto a Jupyter Notebook como a Ipython Notebook, supone el desarrollo en software libre de un “cuaderno computacional” al mismo estilo que los cuadernos empleados en el programa Mathematica o en Maple y cuyo primer intento fue realizado por William Stein para el programa de cálculo Sage (Sage Notebooks). Para este desarrollo, llevado a cabo por Fernando Pérez y Robert Kern, en la Universidad de Berkeley (California, EEUU), se basaron en principio en el lenguaje de programación Python, dada su gran versatilidad, amplia adopción por la comunidad cientı́fica y su carácter libre. Aunque en un principio el desarrollo no se centró en una interfaz web, sino en proporcionar un intérprete de comandos interactivo para el lenguaje Python (denominado IPython), a partir de 2010 el trabajo del equipo de desarrollo de IPython permite la aparición de la interfaz Jupyter Notebook. Desde entonces, el desarrollo de estos “cuadernos computacionales”, ası́ como su uso, no ha parado de crecer. Por ejemplo, la plataforma de desarrollo de proyectos libres más importante actualmente, GitHub, permite la visualización de Jupyter Notebooks directamente en su página web, alojando más de un millón de este tipo de documentos, de libre acceso, en sus servidores. Descripción de la interfaz Al ejecutar Jupyter Notebook en el ordenador, aparecerá, en nuestro navegador una primera página denominada Jupyter Dashboard. En ella podremos ver la lista de archivos disponibles en la carpeta en donde hayamos ejecutado nuestro programa. Además, en caso de tener instalados añadidos (extensiones) a nuestro Jupyter Notebook, como por ejemplo el gestor de cursos y corrección automática Nbgrader, también nos aparecerá en esta página de acceso. Otro elemento importante es el botón, en la esquina superior derecha, para subir archivos al servidor. En caso de 5 ejecutarse Jupyter Notebook localmente, este botón no presenta una gran funcionalidad, pero sı́ para el caso en que accedamos a estos documentos desde otro ordenador y a través del navegador. Para generar un primer Jupyter Notebook, pincharemos en New y elegiremos el núcleo de cálculo entre aquellos que tengamos instalados. Por defecto únicamente tendremos Python. Un ejemplo de un documento tipo Jupyter Notebook puede visualizarse en la Figura 1. Figura 1. Ejemplo de un documento Jupyter Notebook. En la parte superior del documento disponemos de los distintos menús para controlar tanto la edición, como para descargar el documento en varios formatos (por ejemplo, PDF) ası́ como insertar o borrar partes del documento. También incluye la elección y el control del núcleo de cálculo (pudiendo pararlo si ası́ se desea) y un botón de ayuda que cubre gran parte de las caracterı́sticas de Jupyter Notebook. El documento en sı́ se divide en distintas celdas, el comportamiento de las cuales puede seleccionarse entre distintas opciones: tı́tulo (de diversos tamaños), texto (plano o enriquecido utilizando el lenguaje Markdown) o código. Aparte de estas opciones, las librerı́as especı́ficas permiten importar imágenes o vı́deos, incluir enlaces a recursos web o incluso incrustar una página web completa dentro del documento. Para insertar texto con formato, la opción elegida por Jupyter Notebook es utilizar el lenguaje Markdown. De este modo, por ejemplo, se pueden incluir listas, texto en negrita o cursiva, tablas o imágenes. La cantidad de tutoriales en la red sobre este lenguaje es inmenso por lo que nos centraremos en indicar cómo se utiliza 6 Jupyter Notebook para las opciones de formato más utilizadas: • Texto en negrita/cursiva: El texto en negrita se indica entre dos pares de asteriscos. De este modo **palabra** aparecerá como palabra. Por otro lado, el texto en cursiva se indica entre dos asteriscos simples, es decir *palabra* aparecerá como palabra. • Listas: Las listas en Markdown se realizan indicando un asterisco o un número seguido de un punto si se desean listas numeradas. Markdown organiza automáticamente los items asignándoles el número correcto. • Inclusión de imágenes: La sintaxis para incluir imágenes en Markdown es ![nombre alternativo](dirección de la imagen) en donde el nombre alternativo aparecerá en caso de que no se pueda cargar la imágen y la dirección puede referirse a una imagen local o un enlace en Internet. • Inclusión de código HTML: El lenguaje Markdown es un subconjunto del lenguaje HTML y en donde se necesite un mayor control del formato, se puede incluir directamente en HTML. • Enlaces: Las celdas de texto pueden contener enlaces, tanto a otras partes del documento, como a páginas en internet u otros archivos locales. Su sintaxis es [texto](dirección del enlace). • Fórmulas matemáticas: Gracias al uso de MathJax, se puede incluir código en LaTeX para mostrar todo tipo de fórmulas y expresiones matemáticas. Las fórmulas dentro de una lı́nea de texto se escriben entre sı́mbolos de dolar ($...$) mientras que las expresiones separadas del texto utilizan sı́mbolos de dolar dobles ($$...$$). Estas posibilidades permiten utilizar las celdas de texto de manera versátil documentando el código de otras celdas o, por ejemplo, explicando detalladamente algún concepto teórico, del que después se puede presentar un ejercicio. La creación de una nueva celda provoca la aparición automática de una celda de código. El lenguaje que se utiliza viene determinado por la elección del núcleo 7 para todo el documento. Actualmente, mezclar dos lenguajes de programación en el mismo documento no está soportado. Instalación Uno de los requisitos que el sistema donde se instale Jupyter Notebook ha de poseer es disponer de Python. Aunque los documentos permiten la ejecución en otros lenguajes de programación, algunas de las funciones de Jupyter Notebook están implementadas en este lenguaje. Dada su enorme popularidad en el ámbito cientı́fico, suites de cálculo cientı́fico ofreciendo gran cantidad de módulos de Python han aparecido en los últimos años. Dentro de ellas, quizás la más conocida es Anaconda, de la empresa Continuum Analytics. Este pack de módulos de Python dispone a su vez de un gestor de paquetes y ha facilitado enormemente la instalación y gestión de librerı́as de Python relacionadas con aplicaciones cientı́ficas. Uno de los módulos por defecto que Anaconda instala es Jupyter Notebook por lo que la instalación recomendada, independientemente del sistema operativo, es instalar dicha distribución de Python cientı́fico. Para ello, la página de descarga de Anaconda [2] permite obtener gratuitamente este producto. Siguiendo los pasos de instalación, podemos tener disponible Jupyter Notebook, el cual podemos ejecutar escribiendo jupyter notebook en una consola. Plataformas online para su uso sin instalación Aunque la instalación de Jupyter Notebook se ha simplificado enormemente en los últimos años, una de las caracterı́sticas esenciales en su uso docente es la separación de esta interfaz del núcleo de cálculo, lo cual hace que el estudiante pueda consultar, mediante un navegador, los documentos interactivos en este formato que se ejecutan en otro ordenador, bien sea el del profesor o un servidor facilitado por un servicio en la nube. A continuación se enumeran algunas de estas alternativas. Nos centraremos en aquellas que no se restrinjan a mostrar una versión estática del documento, sino que permitan la ejecución de código en ellos. Ejemplos del primer caso, podrı́an ser 8 Jupyter Notebook GitHub [3] o NbViewer [4]. 1. CoCalc: Este entorno de computación online [5] proporciona varias herramientas únicas destinadas a un uso docente: permite la edición colaborativa de documentos Jupyter Notebook, lo que multiplica las posibilidades para realizar trabajos en grupo y dispone de un gestor de cursos y tareas, lo que simplifica la tarea del profesor para proporcionar tanto material de apoyo, como para calificar tareas y distribuir una retroalimentación a los estudiantes. Además, es gratuito y por tanto los estudiantes siguen manteniendo su cuenta al finalizar el curso, lo que permite el acceso a las simulaciones y explicaciones que pueden resultar de utilidad en otras asignaturas de cursos posteriores. También dispone de paquetes de cursos de pago en donde se ofrece acceso a servidores más estables que en las cuentas gratuitas y más recursos computacionales. 2. Gryd: Este servicio [6] ofrece cuentas gratuitas para estudiantes ası́ como un paquete académico para la gestión de cursos utilizando nbgrader, aunque su precio no se encuentra publicado actualmente. 3. Google Colab: Aunque actualmente su acceso se encuentra restringido [7] Google Colab proporciona un servidor de Jupyter Notebooks donde se incluye la opción de editar colaborativamente un mismo documento, al estilo de Google Documents. Esta funcionalidad lo hace especialmente atractivo como servicio destinado a trabajos en grupo durante el desarrollo de un curso universitario. 4. MyBinder: Este servicio [8] permite la creación de un servidor temporal para ejecutar los documentos Jupyter Notebooks alojados en un repositorio en GitHub. Es completamente gratuito. 5. JupyterHub: Más que un servicio online, JupyterHub es una de herramienta más dentro del ecosistema Jupyter, enfocado a proporcionar un servidor multiusuario para poder ser utilizado en clase o por un equipo de investigación, por ejemplo. Sobre esta herramienta dedicamos un capı́tulo aparte en este mismo manual por lo que su discusión se pospone a ese punto. 9 Exportar a otros formatos Aunque los documentos generados por Jupyter Notebook son fácilmente accesibles a través de un navegador, en ocasiones es necesario o útil disponer de otros formatos, por ejemplo, utilizar un archivo Python ejecutable. Con el fin de facilitar la conversión de los notebooks, Jupyter dispone desde la versión 1.0 (versión actual a dı́a de hoy) de la herramienta nbconvert, que permite exportar los documentos hechos en Jupyter Notebook a otros formatos. Concretamente, la herramienta incluida en la instalación de Jupyter Notebook denominada nbconvert proporciona la conversión a documentos estáticos (es decir, las celdas no pueden ejecutarse), en formato HTML, LaTeX, Markdown, reStructuredText, script de Python ejecutable y, finalmente, en formato presentación. El uso de esta herramienta requiere la instalación de un nuevo paquete denominado Pandoc, que puede instalarse a través del gestor de paquetes de las distintas distribuciones Linux o bien, a través de su página web [9]. El funcionamiento de esta herramienta puede realizarse mediante una terminal o consola, o bien directamente desde el documento, a través del menú File ->Download as..., aunque para explotar todas sus capacidades indicamos a continuación la sintaxis para su uso en una terminal. Esta es, $ jupyter nbconvert --to FORMAT notebook.ipynb donde FORMAT es el formato que se desea obtener. Por ejemplo, si queremos convertir nuestro documento a un archivo en LaTeX, escribirı́amos: $ jupyter nbconvert --to latex notebook.ipynb Una vez generado el archivo .tex podemos convertirlo a pdf mediante, por ejemplo, pdflatex o cualquier editor de LaTeX. Si queremos realizar realizar la conversión a formato pdf directamente, podemos añadirlo a la anterior instrucción, quedando, $ jupyter nbconvert --to latex notebook.ipynb --post PDF 10 Jupyter Notebook También es posible modificar las plantillas de nuestro archivo LaTeX generado a formato libro por ejemplo añadiendo --template book. Es necesario hacer notar que el formato presentación no genera un archivo PowerPoint o similar, sino una presentación Reveal.js en HTML, que requiere para su visualización que el ordenador muestre la presentación en el navegador. Este requisito se cumple si añadimos a la lı́nea anterior la opción --post serve. Este tipo de presentaciones, aunque más difı́ciles de mostrar por la necesidad de que el ordenador actúe como servidor de esa página en HTML, dan un mayor número de opciones que las presentaciones tradicionales y son más sencillas de compartir a través de diferentes sistemas operativos y plataformas. Para más información, se pueden consultar los siguientes enlaces [10, 11]. Recursos en la red La cantidad de recursos en la red dedicada a Jupyter Notebooks no para de crecer y de modificarse con el tiempo. Es por ello que la siguiente lista ha de tomarse como una muestra, para nada completa, y válida únicamente en las fechas en las que se ha generado este documento. Sin embargo, y dada la importancia de los sitios web a los que se refieren los siguientes enlaces, es esperable que, aunque nuevos sitios de referencia puedan surgir, los resaltados a continuación puedan seguir siendo recursos útiles en el futuro. 1. Documentación de Jupyter Notebook [12] 2. Subforo en Reddit dedicado a Jupyter Notebooks [13] 3. Galerı́a con una selección de Jupyter Notebooks [14] 4. Página de desarrollo de CoCalc [15] Dado que el lenguaje principal de los documentos mostrados en el Anexo ha sido Python, a continuación se muestran algunas de sus caracterı́sticas, especialmente comparando con otros programas de cálculo como Matlab, también ampliamente utilizado en los estudios universitarios de carácter cientı́fico. Python Among the different alternatives for open source software devoted to computational programming, Python has become one of the most used options. Thus, learning this programming language can be very beneficial for students in their future careers. Moreover, there is a vast amount of scientific modules that are easily imported, matching the capabilities of Python to those of commercial software. The most relevant libraries in the scientific environment are: • SciPy: it groups together many relevant functions for numerical calculations. • NumPy: it provides specific functions for vector and matrix calculations. • SymPy: it encompasses all necessary functions for symbolic calculations. • Matplotlib: it contains tools for 2D and 3D plots (similar to those in MATLAB). • Mayavi: specific library for 3D plots. • Pandas: specific library for data management and analysis. Apart from these, there are numerous libraries designes for specific needs, such as image processing (openCV), machine learning (scikit-learn) and many more. Most common commands We will now enumerate the most common commands in Python to perform scientific operations in Jupyter Notebook using Pythona as the computational kernel. a Notice that we will consider Python 3 as the computational kernel. There are not many diffe- rences with Python 2, except for some syntax subtleties, an example of which corresponds to the 12 Python • Library management – Import all functions within a library: taking the NumPy library as an example, we would have to write in our document from numpy import * There are functions appearing in two different libraries which act differently. Hence, it is sometimes useful to import a library with a distinctive prefix. Moreover, specially when writing Python scripts, it is good practice to include this prefix for a future reading of the script and to fix possibly appearing bugs. It is common to choose the prefix np for the NumPy library. This is accomplished by import numpy as np – Import a specific function: sometimes we just want to import a function from a library, instead of the whole library. As an example, let us consider importing the cosine function from the NumPy library. In this case, we would write from numpy import cos – Advice for educational applications: in general, for scientific subjects, the easiest thing to do would be to use the PyLab environment. Once executed, this environment automatically imports the most used functions and allows to write code in a very similar way to MATLAB. Moreover, in order for the plots to appear in the notebook instead of in a different tab, it is necessary to include the inline command. Both aspects are taken care of by writing at the beginning of the file %pylab inline b print command. b Another alternative would be to write the following three lines at the beginning of any document: from numpy import * from matplotlib.pyplot import * %matplotlib inline 13 • Commands for numerical calculations: – Help: we can retrieve more information from a specific function by typing help(function) or function? – Printing on screen: in order to display text or the value of a variable, x, when executing a cell, we would write print(’Variable x has the value’) print(x) – Inserting an image: this is done by importing the function Image. Its syntax isc from IPython.display import Image Image(filename=”TestFigure”) As an alternative, an image can also be included directly in a Markdown cell by using Markdown’s syntax, or even with HTML for further customization options, such as changing the size or position of the image in a cell. In order to include an image in a Markdown cell we would type the following: ![Alternative Text](files/Test Figure) Alternative Text in the previous command refers to a text that would be shown in case the image could not be loaded. The text in parenthesis corresponds to the directory of the image, which can also be a webpage. If we want to include an image that is in the same directory as the notebook is, we have to include the directory after files/. – Embed a webpage: Jupyter Notebook allows to embed a webpage within the notebook, indicating the width and height of the frame containing it. In order to do so, we must include the HTML function. An example would be: from IPython.display import HTML c In this case, the image is considered to be in the same directory as the notebook is, but it is also possible to insert an image from the Internet. 14 Python HTML(’
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 38 Creator : TeX output 2018.06.27:1354 Producer : dvipdfmx (20160307) Create Date : 2018:06:27 13:55:06+02:00EXIF Metadata provided by EXIF.tools