“Actúa como un Ingeniero de Datos Senior y Tutor Experto en Estadística, Python y Streamlit. Todo el código que generes debe cumplir con PEP-8, incluir type hints, docstrings detallados (estilo Google o NumPy), y estar estrictamente modularizado. Prioriza el uso de
st.session_statepara evitar recálculos innecesarios y@st.cache_datapara el manejo de datos. Responde siempre en español.”
Prompt 4. Página principal y Navegación Moderna >
“Crea el código de app.py usando st.navigation
y st.Page para importar los módulos desde la carpeta
modules/. La página de inicio (home.py) debe
incluir: Título, propósito, advertencia académica sobre la
interpretación de resultados, y una sección especial llamada ‘Reserva
Cognitiva y Ética’ que explique por qué la app no reemplaza el cálculo
manual ni el criterio del ingeniero. El código debe usar
st.set_page_config, incluir un tema visual personalizado
(colores institucionales o neutros profesionales) y estar perfectamente
documentado.”
Prompt 5. Módulo DCA con gestión de estado y puente
R-Python > “Desarrolla modules/01_dca.py. Debe
permitir cargar CSV/Excel, seleccionar tratamiento y respuesta. Ajusta
el ANOVA con statsmodels. Muestra tabla ANOVA, medias,
gráficas de cajas y prueba de Tukey. Requisitos
profesionales: 1) Usa st.session_state para
guardar el dataframe y el modelo ajustado, evitando que se recalcule al
mover un slider. 2) Incluye un
st.toggle('Ver código equivalente en R') que muestre en un
st.code el script de R usando el paquete
agricolae para obtener el mismo resultado. 3) Incluye un
dataset de ejemplo de Ingeniería Agrícola (ej. rendimiento de maíz por
variedad).”
Prompt 6. Refactorización hacia utils/ y Pruebas
Unitarias > “Refactoriza la lógica del DCA. Crea
utils/anova_utils.py con funciones tipadas y documentadas
para: cargar datos, validar columnas, ajustar ANOVA, generar tabla,
calcular medias y hacer Tukey. Luego, crea
tests/test_anova_utils.py usando pytest para
probar al menos 3 funciones con datos simulados. Explica cómo ejecutar
las pruebas y por qué esto es vital en una app profesional.”
Prompt 7. Módulo DBCA > “Desarrolla
modules/02_dbca.py. Permite seleccionar bloque, tratamiento
y respuesta. Modelo:
respuesta ~ C(tratamiento) + C(bloque). Muestra ANOVA,
medias, gráficas y Tukey. Incluye un dataset de interés en Ingeniería
Agrícola (ej. gradientes de suelo). Usa las funciones de
utils/anova_utils.py adaptándolas si es necesario para
incluir el efecto de bloque. Añade un cálculo de la Eficiencia Relativa
del Bloqueo respecto a un DCA.”
Prompt 8. Módulo DCL > “Desarrolla
modules/03_dcl.py. Permite seleccionar fila, columna,
tratamiento y respuesta. Valida que el diseño sea un cuadro latino
(mismo número de niveles en filas, columnas y tratamientos). Modelo:
respuesta ~ C(fila) + C(columna) + C(tratamiento). Explica
pedagógicamente qué controla cada factor. Incluye un ejemplo aplicado a
mecanización agrícola (ej. velocidad, profundidad, tipo de suelo).”
Prompt 9. Módulo DPD (Parcelas Divididas) >
“Desarrolla modules/04_dpd.py. El experimento tiene factor
principal (parcelas), factor secundario (subparcelas) y bloques. Permite
seleccionar estas variables. Ajusta el modelo diferenciando el Error de
parcela principal y Error de subparcela (explica cómo hacerlo en
statsmodels usando Error() o términos
anidados). Muestra ANOVA, medias, interacción y gráficas. Ejemplo: Riego
(principal) y Dosis de Nitrógeno (secundario) en maíz. Advierte sobre
las limitaciones de statsmodels para errores anidados y
muestra la alternativa en R.”
Prompt 10. Módulo de Diseños Factoriales >
“Desarrolla modules/05_factoriales.py. Permite analizar
factoriales de dos o más factores. Construye la fórmula dinámicamente
(ej. Y ~ A * B * C). Muestra ANOVA con efectos principales
e interacciones. Grafica interacciones usando plotly.
Ejemplo aplicado a Ingeniería Agroindustrial: Temperatura, Tiempo y
Concentración de un conservante sobre la vida útil de un producto.
Incluye el código R equivalente usando aov().”
Prompt 11. Módulo RSM: Modelos y Punto Estacionario
> “Desarrolla modules/06_rsm.py. Estructura en
st.tabs: 1) Primer Orden, 2) Máximo Ascenso, 3) Segundo
Orden, 4) Punto Estacionario. Permite cargar datos con variables
codificadas. Ajusta modelos lineales y cuadráticos. Calcula el punto
estacionario usando la matriz B y el vector b. Clasifica el punto
(máximo, mínimo, punto de silla) usando los eigenvalores. Usa
@st.cache_resource para los cálculos matriciales
pesados.”
Prompt 12. Módulo RSM: Visualización y Exportación
> “Continúa con modules/06_rsm.py. Añade las pestañas:
5) Superficie 3D, 6) Curvas de Nivel, 7) Exportación. Genera mallas de
predicción. Muestra la superficie 3D y contornos usando
plotly.graph_objects. Permite exportar las figuras a PNG y
PDF usando kaleido (fig.write_image).
Asegúrate de que las gráficas sean interactivas y tengan ejes
etiquetados con las variables reales (no solo codificadas).”
Prompt 13. Refactorización profunda de RSM >
“Refactoriza la lógica de RSM en módulos dentro de utils/:
rsm_coding.py, rsm_models.py,
rsm_stationary.py, rsm_mesh.py,
rsm_plots.py. Asegúrate de que cada función tenga
docstrings que expliquen la fórmula matemática que implementa.
Reescribe modules/06_rsm.py para que solo contenga la
lógica de la interfaz de Streamlit (UI), delegando todo el cálculo a
utils/.”
Prompt 14. Diagnóstico de Supuestos Transversal >
“Crea utils/diagnostics_utils.py con funciones para:
residuos vs ajustados, QQ-plot, Shapiro-Wilk y Levene. Luego, crea un
componente reutilizable components/diagnostico.py que pueda
ser importado e insertado en los módulos DCA, DBCA, DCL y Factoriales
mediante st.expander('Diagnóstico de Supuestos'). Incluye
una interpretación automática y pedagógica de los p-valores para los
estudiantes.”
Prompt 15. Módulo de Bitácora de IA y Verificación (Alineado
al Syllabus) > “Crea modules/07_bitacora.py.
Esta página permitirá al estudiante registrar: 1) El problema
experimental. 2) Sus cálculos manuales o hipótesis previas (reserva
cognitiva). 3) El prompt que usó con la IA para resolver el código. 4)
La validación humana que hizo. Guarda esta bitácora en un archivo JSON o
CSV descargable. Esto cumple con el requisito de trazabilidad y ética en
el uso de IA de mi plan de estudios.”
Prompt 16. Exportación de Reportes Completos >
“Crea utils/export_utils.py. Permite descargar: Tabla
ANOVA, Medias, Tukey, y un reporte en Markdown que resuma el análisis
(incluyendo el diagnóstico de supuestos y la interpretación). Usa
BytesIO y st.download_button. Asegúrate de que
los archivos Excel tengan formato condicional básico (ej. resaltar en
rojo los p-valores < 0.05).”
Prompt 17. README Académico y Técnico > “Escribe
un README.md profesional para GitHub. Debe incluir: Título,
badges de licencia y versión, descripción, objetivo académico, capturas
de pantalla (placeholders), instalación local, ejecución, estructura del
proyecto, tecnologías, y una sección especial sobre ‘Ética, Reserva
Cognitiva y Uso de IA en el desarrollo’. Tono académico y claro.”
Prompt 18. Preparación para GitHub y Streamlit Cloud
> “Dame el .gitignore exacto para Python, Streamlit y
entornos virtuales. Proporciona los comandos de Git para inicializar,
hacer commit y push. Luego, explica paso a paso cómo desplegar en
Streamlit Community Cloud, cómo solucionar errores comunes de
dependencias (ej. kaleido o scipy en Linux) y
cómo configurar el Secrets de Streamlit si fuera
necesario.”
Prompt 19. Guion para Sustentación Final > “Organiza un guion para una sustentación de 15 minutos. Estructura: 1) Problema agrícola resuelto. 2) Arquitectura técnica (mostrar el diagrama de carpetas). 3) Demostración en vivo de un DBCA y un RSM. 4) Explicación de cómo la app fomenta la reserva cognitiva y no reemplaza al ingeniero. 5) Limitaciones y trabajo futuro. Divide el guion entre los integrantes del grupo.”
Prompt 20. Error de Importación y Estructura >
“Me aparece
ModuleNotFoundError: No module named 'utils...'. Esta es mi
estructura de carpetas: [pegar estructura]. Este es mi
app.py: [pegar código]. Diagnostica el problema. Explícame
si necesito archivos __init__.py, si debo modificar el
sys.path, o si la forma en que Streamlit maneja el
directorio de trabajo está causando el error. Dame la solución
exacta.”
Prompt 21. Error Estadístico o de Dimensiones en RSM
> “Al calcular el punto estacionario en RSM, me da un error de
dimensiones en las matrices o el modelo no converge. Este es mi
dataframe: [pegar]. Este es el código de rsm_stationary.py:
[pegar]. Revisa la matemática detrás de la matriz B y el vector b.
Corrige el código en Python y explícame el error estadístico.”
st.session_state: Insista a
sus estudiantes en que no suban la app a la nube sin implementar la
gestión de estado. Una app de Streamlit que recalcula el ANOVA cada vez
que el usuario cambia de pestaña es considerada de “baja calidad” en el
entorno profesional.statsmodels) y la de R (agricolae) arrojan
los mismos resultados, reforzando la confianza en la herramienta
computacional.