El notebook de IPython

Introducción

Ya hablamos en su momento de IPython, un intérprete de Python con multitud de características avanzadas que lo hacían indispensable para ejecutar sesiones interactivas. Hoy vamos a continuar con lo que habíamos dejado a medias, y vamos a dedicar un artículo al notebook de IPython, una herramienta que está verdaderamente revolucionando la manera en que se utiliza Python en ámbitos científicos y conferencias sobre el lenguaje, como se ha demostrado en la reciente PyData NYC 2012 que se ha celebrado en Nueva York (recuerda que en Pybonacci hemos seleccionado un resumen de charlas de la PyData NYC 2012).


https://twitter.com/dfm/status/262245974334918656


Aquí incluimos un vídeo que hemos grabado para mostrar las características fundamentales de IPython, porque ya se sabe que un vídeo vale más que mil imágenes 😉 No olvides suscribirte a nuestro canal en YouTube para futuras creaciones.

El notebook de IPython

El notebook de IPython es una interfaz web para IPython, inspirada en los notebooks de Mathematica y Sage. Como puedes leer en esta retrospectiva histórica escrita por Fernando Pérez, la idea de crear una interfaz de este tipo ya existía desde los inicios del proyecto IPython, allá por 2001, y después de muchos años, varios intentos fallidos y habiendo aprendido de la experiencia del propio notebook de Sage, que surgió antes pero estaba mucho menos pulido, fue finalmente presentado en la conferencia EuroSciPy 2011.

En la última versión de IPython se corrigieron algunos errores y se mejoró la parte de la interfaz y actualmente, como hemos señalado arriba, está atrayendo la atención de multitud de usuarios y medios de comunicación. También hay artículos sobre cómo utilizarlo para escribir entradas en Blogger o Octopress.

Notebook de IPython corriendo a pantalla completa. Notebook correspondiente al artículo de Pybonacci sobre transformadas discretas de Fourier en Python.


El notebook de IPython utiliza el servidor web Tornado y utiliza ØMQ para la comunicación entre procesos y websockets para la interacción con el navegador, con lo que se crea una conexión asíncrona y se consigue una buena velocidad de respuesta. En la parte de la interfaz utiliza MathJax para las fórmulas matemáticas y el editor CodeMirror.

Características

Estas son algunas de las características del notebook de IPython:

  • Lista de notebooks.
  • Interfaz para el procesamiento en paralelo (esta característica no necesita el notebook).
  • Edición y movimiento de celdas, inserción y eliminación arbitraria.
  • Gráficos y figuras integrados con el modo --pylab inline (esta característica tampoco necesita el notebook, puede usarse también en la interfaz Qt).
  • Autocompletado de código.
  • Celdas con encabezados, puro HTML o Markdown.
  • Posibilidad de utilizar R, Octave, Cython…
  • Enlaces a la documentación del notebook, IPython, Python, NumPy, Scipy, SymPy y matplotlib.
  • Ayuda integrada.
  • Exportación a archivo .ipynb, basado en JSON, para compartir notebooks.
  • Atajos de teclado

Para mí, los atajos de teclado son uno de los mayores aciertos de este notebook. Aquí incluimos algunos de los más utilizados, la tabla completa se puede ver con el comando Ctrl-m h:

Comando Acción
Shift-Enter Ejecutar celda
Ctrl-s Guardar notebook
Ctrl-m x Cortar celda
Ctrl-m c Copiar celda
Ctrl-m v Pegar celda
Ctrl-m d Eliminar celda
Ctrl-m a Insertar celda encima
Ctrl-m b Insertar celda debajo
Ctrl-m m Celda Markdown
Ctrl-m 1-6 Celda con encabezados HTML niveles 1 a 6
Ctrl-m h Mostrar atajos de teclado

Compartir

Si bien el propio notebook de IPython es una herramienta extraordinaria, lo realmente valioso de ella es la posibilidad de compartir fácilmente notebooks con todo el mundo. La gente de IPython ha creado el Visor de notebooks de IPython nbviewer, con la que puedes visualizar cualquier notebook de IPython con tal de escribir la URL. Incluso si subes el archivo .ipynb al servicio Gist de GitHub, ¡no tienes más que incluir la ID del gist! El siguiente enlace lleva a la versión en notebook de nuestra entrada sobre transformadas discretas de Fourier:
http://nbviewer.ipython.org/3804365/

Enlaces

Para terminar me gustaría agradecer a Joe di Castro, a quien admiro personalmente, todas las dudas que me contesta individualmente, y en concreto este tweet:
https://twitter.com/python_majibu/status/258640137020403713
Un saludo y gracias por leer 🙂

18 pensamientos sobre “El notebook de IPython”

  1. Que interesante… voy a dar un paseo y leer un poco más sobre estas características…
    Yo, antes, siempre usaba bpython, pero en python3 tengo unas diferencias, no me informé si bug o mi instalación… así que además de la anterior, tengo otra escusa para cambiarme a ipython: “notebook” 😉
    Saludos

  2. IPython está genial, y los notebooks son fantásticos para código+”algo más”.
    De hecho, usando el conversor (nbconvert, https://github.com/ipython/nbconvert) yo he llegado a escribir directamente pequeños trabajos en el notebook, exportarlos a latex, retocar a mano un par de cosas de la cabecera (por ejemplo que usara babel spanish…) y fin. Ah, y regenerar las imágenes en .pdf porque los .png que genera el modo inline son excesivamente pequeños para mí.
    ¡Además, el notebook se puede usar desde emacs! Incluyendo el modo inline, documentación, autocompletado… http://tkf.github.com/emacs-ipython-notebook/

  3. Pingback: Un 2012 de Python científico « Pybonacci

  4. Pingback: Meme Python de Año Nuevo 2012 « Pybonacci

  5. Reblogged this on Rctorr's Blog and commented:
    Muy interesante artículo por parte de Pybonacci, aunque no hago muy a menudo programación científica no está demás compartirlo por si le es de utilidad a alguien!
    Salu2+

    1. ¡Eso está hecho Fernando! 😀 Hay textos más fáciles de cambiar porque son marcas superpuestas con el editor de YouTube, pero para que esté completamente en inglés puedo volverlo a grabar y así aprovecho y corrijo algún fallo. Si quieres que incluya alguna cosa más solo dímelo, de otro modo antes de una semana te envío el nuevo vídeo.

      1. Gracias! Realmente no quiero abusar de tu tiempo, así que en principio tal y como está nos serviría mucho, simplemente re-editado para que las ayudas sean en inglés. Lo único que se me ocurre es que en la parte de autocompletado sería bueno indicar en el texto que se activa con la tecla TAB.
        Ahora, sí tenés ganas de re-grabar el video completo, si te parece yo pregunto en la lista nuestra (http://mail.scipy.org/mailman/listinfo/ipython-dev, espero que estés suscrito) a ver si hay algunas otras sugerencias y te podemos dar más ideas.
        Pero realmente me encanta que es breve y cubre todo lo básico, no nos interesa tener algo muy largo sino algo así corto pero informativo.
        Gracias de nuevo!

        1. En ese caso si te parece cambio las ayudas a inglés, y dejamos la regrabación para cuando acabéis de integrar python-tutor, d3.js y todas esas cosas que quedarán muy impactantes 😛
          No estoy suscrito aún a la lista pero lo voy a hacer. Te enlazo el vídeo cuando lo tenga listo.
          ¡Gracias a ti, un saludo!

  6. Pingback: Enlaces semana #30 | Dev attitude

  7. Pingback: Enlaces semana #31 | Dev attitude

  8. Pingback: ¿Python en la nube? Cloud computing de forma sencilla | CAChemECAChemE

  9. Pingback: Descubre Python en 30 minutos - Podcast #1 - CAChemE

  10. Buenos dias, disculpe como puedo importar una imagen o como hago para colocar una foto o imagen en Notebook

Los comentarios están cerrados.