Guía_1_1_Sympy_Agrícola: lista de prompts para que Copilot genere una app multipágina en Streamlit con SymPy para Ingeniería Agrícola. No incluye código, solo prompts listos para pegar en Copilot dentro de GitHub Codespaces.
App multipágina en Streamlit + SymPy (Codespaces + Copilot)
Crear una aplicación con carpeta pages/ y tres páginas
orientadas a riego y hidráulica agrícola, resolviendo simbólicamente con
SymPy y visualizando resultados en
Streamlit.
Pide a Copilot que mantenga esta estructura al crear archivos:
.
├─ app.py
├─ pages/
│ ├─ 1_ Hidráulica_de_tuberías.py
│ ├─ 2_ Canal_trapezoidal_Manning.py
│ └─ 3_ Programación_de_riego_y_infiltración.py
├─ utils/
│ └─ symbolic_helpers.py
├─ data/
│ └─ ejemplos.csv
├─ requirements.txt
├─ README.md
└─ .streamlit/
└─ config.toml
Nota operativa en Codespaces: usa el chat de Copilot. Cuando aparezca sugerencia con botones verdes, selecciona Permitir o Mantener según corresponda para que cree y ejecute acciones.
“Crea
requirements.txtcon: streamlit, sympy, numpy, pandas, plotly. Crea.streamlit/config.tomlcon un tema claro legible. Verifica que el intérprete de Python del Codespace use un entorno virtual.venv. Instala dependencias y confirma instalación. No generes código fuente aún, solo los archivos de configuración.”
app.py“Genera
app.pypara una app Streamlit multipágina. Debe:
- Mostrar título ‘Ingeniería Agrícola — Riego e Hidráulica con SymPy’.
- Describir el objetivo del proyecto y las tres páginas.
- Incluir enlaces a documentación breve y a los datasets de ejemplo en
data/.- Mostrar una sección ‘Cómo usar’ con pasos: ingresar datos → resolver simbólicamente → visualizar → exportar resultados.
- Incluir comprobación de versiones de
sympyystreamliten unst.sidebar.”
utils/symbolic_helpers.py“Crea
utils/symbolic_helpers.pycon funciones reutilizables:
symbols_safe()para declarar símbolos de SymPy con latex friendly names.solve_equation(eq, var)envolviendosympy.solvecon manejo de soluciones reales positivas.lambdify_safe(expr, vars)para evaluar y graficar con NumPy.sensitivity_table(expr, var, center, pct_range, steps)que devuelva unDataFramecon análisis de sensibilidad.- Validaciones numéricas (no negativos, rangos físicos). Incluye docstrings claros y no uses prints; devuelve objetos o lanza excepciones controladas.”
Cálculo de diámetro o pérdida de carga en líneas presurizadas (Darcy–Weisbach / Hazen–Williams).
“Crea
pages/1_ Hidráulica_de_tuberías.pyque:
- Permita elegir método: Darcy–Weisbach o Hazen–Williams.
- Entradas: caudal Q, longitud L, rugosidad absoluta ε (o C de Hazen–Williams), viscosidad cinemática ν, pérdida de carga hf o diámetro D según el caso, gravedad g.
- Mode 1: resolver simbólicamente D dado {Q, L, ε, ν, hf}. Usa ecuaciones: continuidad, velocidad, Reynolds, factor de fricción f (emplea aproximación explícita de Swamee–Jain para tener forma cerrada simbólica), y Darcy–Weisbach.
- Mode 2: resolver hf dado {Q, L, ε, ν, D}.
- Mostrar: expresión simbólica simplificada, evaluación numérica, unidades comentadas, y gráfico de sensibilidad de hf vs Q y D vs Q.
- Exportar resultados: botón para descargar
.csvcon entradas, solución y tabla de sensibilidad.- Usa helpers de
utils/yplotlypara gráficos. Añade warnings si Re < 2000 o > 1e6.”
Diseño hidráulico y sección económicamente óptima.
“Crea
pages/2_ Canal_trapezoidal_Manning.pyque:
- Entradas: caudal Q, pendiente S, coeficiente de rugosidad n, talud lateral z (H:V).
- Decisiones: ancho de fondo b y tirante y.
- Ecuaciones simbólicas: área A(b,y,z), perímetro mojado P(b,y,z), radio hidráulico R=A/P, velocidad V=(1/n)R(2/3)S(1/2), y caudal Q=A·V.
- Resolver simbólicamente (o semi-simbólicamente) para {b, y} que satisfagan Q objetivo y, adicionalmente, minimicen P (criterio de sección económica). Usa
sympy.solvey condiciones de optimalidad con derivadas parciales.- Mostrar: soluciones candidatas, validación física (b>0, y>0), y gráficos A(y), P(y) alrededor de la solución.
- Widgets con barras para S, n y z para análisis de sensibilidad, tabla exportable.
- Incluir recomendación de alturas libres como nota (texto).”
Modelos Kostiakov/Horton y lámina neta.
“Crea
pages/3_ Programación_de_riego_y_infiltración.pyque:
- Permita elegir modelo de infiltración: Kostiakov (I = k·t^a) o Horton (f(t)=f_c+(f_0−f_c)e^{−kt}).
- Entradas: lámina neta requerida Ln, eficiencia de aplicación Ea, parámetros del modelo (k, a) o (f0, fc, k), ancho de surco o parcela, longitud, caudal por surco o aspersor.
- Objetivo: resolver tiempo de riego t* tal que la lámina aplicada L = Ln/Ea. Deriva simbólicamente la expresión de L(t) según el modelo y usa
solvepara t*.- Mostrar: deducción simbólica simplificada, t* y plan de riego (min, s), con gráfico L(t) y banda del 5%.
- Añadir cálculo de número de surcos/aspersores simultáneos dado un caudal total disponible Q_total.
- Exportar PDF/CSV de ‘Plan de riego’ (usa
st.download_button, el PDF puede ser HTML-to-PDF simple o un CSV si prefieres solo datos).”
data/ejemplos.csv“Crea
data/ejemplos.csvcon filas de ejemplo realistas para los tres módulos: tuberías (Q,L,ε,ν,hf), canales (Q,S,n,z), riego (Ln,Ea,parámetros de infiltración). Incluye 5–10 casos variados. Añade encabezados claros y unidades en una fila de comentarios inicial si lo soportas.”
“Genera
README.mdcon:
- Resumen del proyecto y alcance.
- Descripción de cada página y sus ecuaciones base.
- Requisitos, instalación y ejecución local (
streamlit run app.py).- Flujo de trabajo en Codespaces + Copilot.
- Buenas prácticas: validación de entradas, rangos físicos, manejo de unidades, trazabilidad de supuestos.
- Evidencias: capturas de pantalla (placeholders) y cómo exportar resultados.”
“Crea pruebas mínimas
tests/conpytestpara verificar que las funciones enutils/symbolic_helpers.pydevuelven tipos esperados y que las soluciones numéricas son positivas y coherentes para los ejemplos dedata/ejemplos.csv. Solo pruebas rápidas, sin gráficos.”
“Configura tareas para ejecutar
streamlit run app.pyen el puerto recomendado y expón el puerto público en Codespaces. Agrega instrucciones breves en elREADME.md. Integra mensajes de depuración no intrusivos en las páginas const.statusost.info.”
“Agrega al
README.mduna sección ‘Despliegue’ con:
- Estructura de ramas y secrets si aplica.
- Indicaciones para conectar el repo y seleccionar
app.py.- Pasos para resolver errores comunes de dependencias y caché.
- Checklist previo al despliegue.”
“Valida que cada página:
- Muestre derivaciones simbólicas con
sympy.latexost.latex.- Ofrezca entradas con rangos físicos y unidades en etiquetas.
- Genere tablas y gráficos de sensibilidad.
- Permita exportar resultados. Ajusta textos, accesibilidad y consistencia visual del tema.”