¿Cómo omitir (de manera intermitente) ciertas celdas cuando se ejecuta el cuaderno de IPython?

Por lo general, tengo que volver a ejecutar (la mayoría de las partes de) un cuaderno al volver a abrirlo, para poder acceder a las variables previamente definidas y seguir trabajando.

Sin embargo, a veces me gustaría omitir algunas de las celdas, que no tienen influencia en las celdas subsiguientes (por ejemplo, podrían comprender una twig de análisis que está terminada) y podría tomar mucho tiempo en ejecutarse. Estas celdas se pueden dispersar por todo el cuaderno, por lo que algo como “Ejecutar todo abajo” no ayudará mucho.

¿Hay una manera de lograr esto?

Lo ideal sería que esas celdas se etiquetaran con algunas banderas especiales, de modo que pudieran “Ejecutarse” manualmente, pero se omitirían cuando “Ejecutar todo”.

EDITAR

%%cache (extensión ipycache) como lo sugiere @Jakob resuelve el problema en cierta medida.

En realidad, ni siquiera necesito cargar ninguna variable (que puede ser grande pero innecesaria para las siguientes celdas) cuando se vuelve a ejecutar, solo la salida almacenada es importante como resultados de análisis.

Como %%cache folder/unique_identifier , coloque %%cache folder/unique_identifier al principio de la celda. El código se ejecutará solo una vez y no se cargarán variables cuando se vuelva a ejecutar a menos que elimine el archivo identificador único.

Desafortunadamente , todos los resultados de salida se pierden cuando se vuelven a ejecutar con %%cache

EDITAR II (14 de octubre de 2013)

La versión maestra de ipython + ipycache ahora encoge (y vuelve a mostrar) la salida del codecell también.

Para salidas de visualización enriquecidas que incluyen Latex, HTML (salida de Pandas DataFrame), recuerde usar el método display () de IPython, por ejemplo, display(Latex(r'$\alpha_1$'))

Actualmente, no hay tal característica incluida en el cuaderno de IPython. Sin embargo, hay algunas posibilidades para hacer tu vida más fácil, como:

  • use %store o tal vez mejor %%cache magic (extensión) para almacenar los resultados de estas celdas de manera intermitente, para que no tengan que volver a calcularse (consulte https://github.com/rossant/ipycache )

  • agregue un if==0: antes de las celdas que no desea ejecutar

  • convierta estas celdas en celdas sin procesar (¡pero perderá la salida ya almacenada!)

(vea la discusión en https://github.com/ipython/ipython/issues/2125 )

Jakob

Aunque esto no es exactamente lo que parece estar buscando, si desea omitir por completo la ejecución de una celda (donde no se cargan los resultados almacenados en caché), puede agregar el siguiente truco al comienzo de una celda (suponiendo que esté utilizando un sistema operativo basado en Unix):

 %%script false