Una guía práctica que facilita la colaboración y la reproducibilidad con Jupytext, nbstripout y nbconvert.


En el trabajo de un científico de datos, la gestión eficaz de los portátiles Jupyter con sistemas de control de versiones es fundamental. Esto no es sólo para mantener un flujo de trabajo organizado, sino también para garantizar la repetibilidad y facilitar la colaboración entre los miembros del equipo. En esta guía, exploraremos tres herramientas principales: Jupytext, nbstripout y nbconvert, cada una con sus características únicas. Proporcionaré explicaciones detalladas, ejemplos prácticos y una visión (con suerte) equilibrada de sus ventajas y desventajas, ayudándole a determinar la mejor herramienta de control de versiones de portátiles para sus necesidades específicas.
Los cuadernos Jupyter, si bien son excelentes para el análisis y la visualización de datos exploratorios, presentan problemas en lo que respecta al control de versiones. Esto se debe principalmente a que estos cuadernos no son sólo archivos de texto sin formato, sino que en realidad están estructurados como documentos JSON. Este formato, si bien es apto para mantener una combinación compleja de código, texto y datos de salida, presenta muchos desafíos cuando se trata de la gestión de versiones en sistemas como Git. Para ilustrar este problema, creemos un cuaderno demo_notebook.py que genere un diagrama simple:
import matplotlib.pyplot as plt
import numpy as nptime = np.linspace(0, 10, 1000)
plt.plot(time, np.sin(np.pi*time**2))
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("signal with time-varying frequency")
Luego iniciamos un repositorio git en la carpeta que contiene el cuaderno y lo usamos. fold
para mirar el cuaderno.
cd my_folder
git init
fold -s -w100 demo_notebook.ipynb
A continuación se muestra el contenido del cuaderno en formato JSON (truncado para facilitar la lectura). Inmediatamente resulta que la estructura JSON contiene no solo código de entrada sino también metadatos y salida…