14 puntos por GN⁺ 2024-01-14 | 1 comentarios | Compartir por WhatsApp
  • Un notebook para experimentar rápidamente con datos y modelos
  • Ejecución por celdas, cálculo automático y actualizaciones
  • Siempre se puede volver a ejecutar sin estado oculto
  • Se guarda como archivo de Python, por lo que es amigable con Git
  • Permite convertir notebooks en pipelines o desplegarlos como apps web interactivas

Entorno de programación reactivo

  • marimo garantiza la consistencia entre el código del notebook, la salida y el estado del programa.
  • Al ejecutar una celda, marimo actualiza automáticamente las celdas que hacen referencia a esa variable, evitando errores por tener que volver a ejecutar celdas manualmente.
  • Al eliminar una celda, marimo quita esas variables de la memoria del programa, eliminando el estado oculto.
  • Los notebooks se ejecutan en un orden determinista basado en las referencias de variables, sin depender de la posición de las celdas en la página.
  • Al interactuar con elementos de UI como sliders, menús desplegables y transformadores de dataframes, las celdas que usan esos valores se vuelven a ejecutar automáticamente con los valores más recientes.
  • marimo analiza el código de forma estática y ejecuta solo las celdas necesarias, mejorando el rendimiento.
  • marimo incluye varias funciones prácticas como GitHub Copilot, formateo de código con Black, exportación a HTML, autocompletado rápido de código y una extensión para VS Code.

Inicio rápido

  • Instalación: instala marimo ejecutando pip install marimo o conda install -c conda-forge marimo en la terminal.
  • Crear un notebook: crea un notebook vacío con marimo editor y edita un notebook con un nombre específico usando marimo edit your_notebook.py.
  • Ejecutar la app: ejecuta marimo run your_notebook.py para correr el notebook como una app web. Esta app se despliega en la nube de marimo.
  • Ejecutar como script: ejecuta python your_notebook.py para correr un notebook de marimo como script.
  • Conversión automática de notebooks de Jupyter: usa la CLI para convertir automáticamente notebooks de Jupyter a notebooks de marimo.
  • Tutoriales: ejecuta marimo tutorial --help para listar todos los tutoriales.

Más información

  • marimo permite que incluso los principiantes empiecen fácilmente y ofrece diversas funciones para usuarios avanzados.
  • Por ejemplo, puedes ver la herramienta de visualización de embeddings (video) creada con marimo.
  • Puedes obtener más información a través de la documentación, la carpeta examples/ y la galería.

Inspiración

  • marimo reinventa los notebooks de Python como programas de Python reproducibles, interactivos y compartibles.
  • Con la convicción de que las herramientas que usamos moldean nuestra forma de pensar, espera ofrecer un mejor entorno de programación a la comunidad de Python.
  • Toma inspiración de muchos lugares y proyectos, como Pluto.jl, ObservableHQ y los ensayos de Bret Victor.
  • marimo forma parte de un movimiento más amplio de programación reactiva de flujo de datos, donde las ideas de programación funcional, declarativa y reactiva mejoran diversas herramientas como IPyflow, streamlit, TensorFlow, PyTorch, JAX y React.

Opinión de GN⁺

  • marimo es un innovador notebook reactivo de Python que busca superar las limitaciones de herramientas existentes como Jupyter Notebook, permitiendo experimentar con datos y modelos, tener confianza en la exactitud del notebook y convertirlo en un pipeline o en una app web interactiva lista para producción.
  • Esta herramienta pone énfasis en la consistencia y reproducibilidad del código, y mejora la experiencia de programación al simplificar la interacción con elementos de interfaz de usuario.
  • marimo facilita la colaboración y el intercambio en áreas como ciencia de datos, investigación y educación, y ofrece una plataforma que fomenta la interacción entre usuarios y el intercambio de conocimiento mediante la construcción de comunidad.

1 comentarios

 
GN⁺ 2024-01-14
Comentarios en Hacker News
  • Como usuario de notebooks de Jupyter y Observable, sentía la falta de reactividad entre celdas en Observable, y creo que esto resuelve muy bien ese problema. Me gusta que el formato de archivo de Marimo sea Python, y también me agrada la licencia Apache 2. Me impresionó descubrir la función de GitHub Copilot.

    • Como usuario de Jupyter y Observable, muestra una reacción positiva hacia Marimo por resolver bien el problema de la reactividad entre celdas, y valora mucho que el formato de archivo sea Python, además de la licencia Apache 2 y la función de GitHub Copilot.
  • Al trabajar con colaboradores que usan Jupyter Notebook, la configuración del entorno y el estado oculto de Jupyter eran un problema. Este proyecto intenta resolver el segundo, pero sacrifica flexibilidad. Si se prioriza la reproducibilidad, puede ser un compromiso aceptable. requirements.txt es la solución estándar para otro problema, pero es incómodo de usar.

    • Señala los problemas de configuración del entorno y del estado oculto en Jupyter Notebook, y menciona que este proyecto intenta resolver lo segundo, aunque podría perder flexibilidad. Considera engorroso usar requirements.txt y espera una mejor solución.
  • Por fin me alegra que alguien esté haciendo esto. Hay una extensión para Vscode, pero es una lástima que abra una vista completa en el navegador en lugar de usar la interfaz de notebooks existente de Vscode. Comparte sus ideas sobre la gestión de paquetes y el despliegue de código en producción.

    • Expresa tanto expectativas como decepción respecto a la extensión de Vscode, y enfatiza la importancia de la gestión de paquetes y del despliegue de código. También manifiesta su intención de contribuir al proyecto.
  • Tengo algunas preguntas sobre la plataforma: quisiera una explicación sobre los widgets interactivos y la dependencia e interacción con el ecosistema de Jupyter.

    • Tiene curiosidad sobre el soporte de widgets interactivos de la plataforma y su relación con el ecosistema de Jupyter, y expresa interés en portar sus propios widgets a la plataforma.
  • Creo que la extensión Jupytext está subestimada. Resuelve los problemas de interacción de Jupyter con git y las malas prácticas de programación que dificultan escribir archivos de biblioteca. Espero que las actualizaciones reactivas del nuevo proyecto sean útiles para principiantes o para proyectos complejos.

    • Destaca la utilidad de la extensión Jupytext y espera que las actualizaciones reactivas del nuevo proyecto ayuden a principiantes en programación o a proyectos complejos.
  • La lista de dependencias es corta y, aparte de tornado, no arrastra muchas dependencias adicionales pesadas. Parece un proyecto muy útil y genial.

    • Evalúa que la lista de dependencias del proyecto es concisa y que, salvo tornado, no supone una gran carga. Elogia la utilidad y lo atractivo del proyecto.
  • Marimo me parece excelente. Me pregunto si se está considerando agregar soporte para mermaid.js en markdown.

    • Muestra una reacción positiva hacia Marimo y pregunta por la posibilidad de añadir soporte para mermaid.js en markdown.
  • Soy fan de Akshay y Myles, los creadores de Marimo, y espero que aparezca un competidor para Jupyter, porque eso tendrá un buen impacto en el ecosistema de herramientas científicas.

    • Apoya a Marimo y a sus creadores, y espera que esta competencia traiga cambios positivos al ecosistema de herramientas científicas.
  • Creo que Quarto resuelve muchos de los problemas de Jupyter mencionados en este hilo. Incluso en los NIH recomiendan usar Quarto y ofrecen capacitación.

    • Menciona que Quarto puede resolver varios de los problemas de Jupyter y comparte que en los NIH recomiendan su uso y ofrecen capacitación al respecto.
  • Definir la misma variable varias veces es un error. La razón es obvia. Pero si solo se usa en la celda donde aparece por primera vez, debería ser posible reutilizar el nombre de la variable.

    • Señala que redefinir variables es un error, pero opina que debería permitirse reutilizar un nombre de variable bajo ciertas condiciones.