Retador: Arturo Sánchez | Institución: inait SA | Hackers:
Un pipeline CI/CD para análisis de datos abiertos de ATLAS (CERN), integrando Python, Quarto y dependencias modernas para reproducibilidad y ciencia transparente.
Con cada git push a main, se ejecuta todo el proceso: configuración, análisis físico, compilación del sitio y publicación automática.
Puedes explorar el informe actualizado y los gráficos interactivos aquí:
Ver el Sitio Web Publicado
| Característica | Herramientas/Frameworks | Propósito |
|---|---|---|
| Análisis Físico | Python, uproot, awkward, hist, Plotly | Lectura, exploración y visualización física |
| Sitio Web | Quarto | Documentación reproducible y visual |
| Dependencias | uv, pyproject.toml | Entornos reproducibles y modernos |
| Automatización CI/CD | GitHub Actions | Orquestación y despliegue |
.
├── .github/
│ └── workflows/
│ ├── publish-site.yml # CI/CD: Flujo para construir y desplegar el sitio Quarto.
│ └── workflow-plotly-higgs-analysis.yml # CI/CD: Flujo para ejecutar el script de análisis.
├── data_analysis/ # Contiene scripts y datos del análisis.
│ ├── data.csv # Fuente de datos para el análisis.
│ ├── plotly_higgs_analysis.py # Script principal de Python para generar gráficos Plotly.
│ └── plots/ # Directorio de plots intermedios.
├── robot-physicist-website/ # Archivos fuente para la construcción del sitio web Quarto.
│ ├── .gitignore
│ ├── .python-version
│ ├── _quarto.yml # Configuración global de Quarto.
│ ├── about.qmd # Fuente de la página "Acerca de".
│ ├── index.qmd # Fuente de la página principal.
│ ├── main.py # Script principal (utilidad o punto de entrada).
│ ├── pyproject.toml # Configuración y dependencias de Python.
│ ├── uv.lock # Archivo de bloqueo de dependencias.
│ ├── styles.css
│ └── logo.png
├── atlas-dataset-A/ # Resultados y documentación del análisis del Dataset A.
│ ├── histogramas/ # Contiene histogramas (.png, .root).
│ ├── plots/ # Contiene gráficos interactivos HTML generados (plotly_higgs_data_A...).
│ └── index.qmd # Documento Quarto para el análisis del Dataset A.
├── atlas-dataset-B/ # Análisis específico para el Dataset B.
├── atlas-dataset-C/ # Análisis específico para el Dataset C.
├── atlas-dataset-D/ # Análisis específico para el Dataset D.
├── LICENSE
└── README.md
Toda la integración y despliegue continuo está contenida en un solo workflow .github/workflows/publish-site.yml, que ejecuta todos los pasos necesarios de análisis y publicación del sitio web automáticamente o bajo demanda:
- Automático:
Cada vez que se hacepusha la ramamain, el pipeline se ejecuta sin intervención del usuario. - Manual, desde interfaz:
Puedes forzar la ejecución del pipeline y el despliegue usando el botón “Run workflow” en la pestaña Actions → "Quarto Publish (Físico Robot CI/CD)", sin editar ni ver el código del workflow.
No necesitas modificar ningún archivo de GitHub Actions.
Sólo haz cambios en tu código o documentación; la automatización CI/CD se encarga del resto.
Si haces un fork, podrás lanzar el proceso tú mismo desde la pestaña Actions en tu repositorio. Los permisos requeridos son los de cualquier flujo GitHub Pages estándar.
- Python 3.9 o superior
- Quarto
- uv (opcional, pero recomendado para manejo de dependencias reproducible)
git clone https://github.com/Analisis-de-Gatos/robot-physicist.git
cd robot-physicist
cd robot-physicist-website
uv pip install -r pyproject.toml # O utiliza pip install -r requirements.txt si solo tienes ese archivo
quarto preview
Haz un fork del repositorio, crea tu propia rama y abre un Pull Request (PR).
- Crea una carpeta para tu dataset/análisis (por ejemplo,
atlas-dataset-E). - Añade los scripts y datos en la carpeta correspondiente de
data_analysissi se requieren nuevos análisis. - Agrega un archivo
index.qmden la carpeta específica, documentando objetivos y métodos. - Si tu análisis es interactivo, implementa bloques marimo dentro del
.qmd. - Si introduces módulos, scripts o dependencias nuevos, actualiza el
pyproject.tomly el README correspondiente.
Puedes contribuirlos en el workspace de análisis o la web (robot-physicist-website/) y documentar su uso.
Sugerencia: Lee los comentarios y/o README de cada carpeta antes de contribuir, para mantener buenas prácticas y coherencia en el repositorio.
- CERN Open Data: Datasets de 13 TeV del experimento ATLAS [https://opendata.cern.ch/record/12360].
- Quarto: https://quarto.org/
- Plotly: https://plotly.com/python/
- uv (gestión de dependencias): https://github.com/astral-sh/uv
Este proyecto —incluyendo el video de YouTube y todos los materiales audiovisuales— está protegido por:
- MIT 2025 para el código fuente: uso libre, modificación y redistribución permitidas.
- CC BY 4.0 para materiales audiovisuales y multimedia: puedes compartir y adaptar para cualquier propósito, dando crédito a los autores.
Más información:
🔗 MIT
🔗 CC BY 4.0
✨ ¡La ciencia abierta es para todos!