Un profesional dedicado a optimizar simulaciones científicas describe un caso ilustrativo de las carencias en formación de software que arrastran muchos grupos de investigación. En su colaboración con un equipo de astrofísica de CUNY, un estudiante de doctorado había invertido meses en una herramienta para procesar la salida de una simulación que genera entre 200 GB y decenas de terabytes de datos, principalmente para reconstruir un árbol de fusiones de agujeros negros a partir de decenas de miles de archivos .txt. La ejecución duraba cerca de una hora, pero el código, basado en diccionarios anidados que simulaban manualmente un árbol binario con etiquetas como "root", "A" o "A2", era prácticamente imposible de optimizar en su forma original.
El autor convenció al equipo de convertir el cuaderno Jupyter en un script, instalar snakeviz y generar un perfil de ejecución con el generador de perfiles integrado en cPython. Al ver la visualización, los investigadores reaccionaron con sorpresa al comprobar dónde se concentraba el tiempo, sobre todo en la lectura repetida de archivos y en el recorrido de pequeños dataframes en memoria. Lo llamativo es que ya habían visto snakeviz en reuniones previas, pero asumían que era una herramienta a medida del autor y no algo al alcance de cualquiera con una instalación de pip.
A partir de la experiencia, el autor reivindica la necesidad de un programa formativo equivalente a "The Missing Semester of Your CS Education", dirigido específicamente a científicos que usan Python y herramientas de ciencia de datos como base de todo su trabajo, con contenidos sobre profilers, depuradores, el modelo de memoria de Python, idoneidad de las estructuras de datos y los casos en los que un dataframe no es la mejor opción. Menciona además la iniciativa Software Carpentry como recurso ya disponible para mejorar las habilidades de programación de los científicos.
