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.


Guía — Ingeniería Agrícola

App multipágina en Streamlit + SymPy (Codespaces + Copilot)

1) Objetivo

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.

2) Estructura de proyecto esperada

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.


3) Prompt inicial de entorno y dependencias

“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.”


4) Prompt para archivo principal app.py

“Genera app.py para una app Streamlit multipágina. Debe:

  1. Mostrar título ‘Ingeniería Agrícola — Riego e Hidráulica con SymPy’.
  2. Describir el objetivo del proyecto y las tres páginas.
  3. Incluir enlaces a documentación breve y a los datasets de ejemplo en data/.
  4. Mostrar una sección ‘Cómo usar’ con pasos: ingresar datos → resolver simbólicamente → visualizar → exportar resultados.
  5. Incluir comprobación de versiones de sympy y streamlit en un st.sidebar.”

5) Prompt para utilidades 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) envolviendo sympy.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 un DataFrame 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.”

6) Página 1 — Hidráulica de tuberías para riego

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/ y plotly para gráficos. Añade warnings si Re < 2000 o > 1e6.”

7) Página 2 — Canal trapezoidal con Manning

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).”

8) Página 3 — Programación de riego e infiltración

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).”

9) Prompt para 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.”


10) Prompt para README

“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.”

11) Prompt para pruebas básicas

“Crea pruebas mínimas tests/ con pytest para verificar que las funciones en utils/symbolic_helpers.py devuelven tipos esperados y que las soluciones numéricas son positivas y coherentes para los ejemplos de data/ejemplos.csv. Solo pruebas rápidas, sin gráficos.”


12) Prompt para ejecución y depuración en Codespaces

“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 el README.md. Integra mensajes de depuración no intrusivos en las páginas con st.status o st.info.”


13) Prompt para despliegue en Streamlit Community Cloud

“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.”

14) Prompt de revisión final

“Valida que cada página:

  1. Muestre derivaciones simbólicas con sympy.latex o st.latex.
  2. Ofrezca entradas con rangos físicos y unidades en etiquetas.
  3. Genere tablas y gráficos de sensibilidad.
  4. Permita exportar resultados. Ajusta textos, accesibilidad y consistencia visual del tema.”