El notebook de IPython

Por Juan Luis Cano

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

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 🙂

Comentarios