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.txt
con: streamlit, sympy, numpy, pandas, plotly. Crea.streamlit/config.toml
con 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.py
para 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
sympy
ystreamlit
en unst.sidebar
.”
utils/symbolic_helpers.py
“Crea
utils/symbolic_helpers.py
con funciones reutilizables:
symbols_safe()
para declarar símbolos de SymPy con latex friendly names.solve_equation(eq, var)
envolviendosympy.solve
con 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 unDataFrame
con 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.py
que:
- 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
.csv
con entradas, solución y tabla de sensibilidad.- Usa helpers de
utils/
yplotly
para 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.py
que:
- 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.solve
y 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.py
que:
- 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
solve
para 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.csv
con 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.md
con:
- 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/
conpytest
para verificar que las funciones enutils/symbolic_helpers.py
devuelven 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.py
en 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.status
ost.info
.”
“Agrega al
README.md
una 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.latex
ost.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.”