Stacks ráster transparentes con gradiente de temperatura sobre paisaje de montañas
v0.1.6 · Py 3.11+ · ICTA Ltda.

Genera más datos
entre tus datos existentes.

tempify realiza densificación temporal sobre stacks ráster geoespaciales: convierte una serie mensual de 12 valores en una serie diaria de 365, preservando la media mensual con tolerancia < 10⁻⁴ °C.

DOI cita el producto

12 nodos mensuales → 365 valores diarios

El análogo conceptual es la interpolación de fotogramas en video: igual que un algoritmo genera frames intermedios para un video más fluido, tempify genera valores temporales intermedios para un stack ráster más denso. Lo que ves abajo es una curva PCHIP real sobre la climatología observada de Santiago de Chile: 12 valores mensuales (puntos azules) reconstruyen los 365 días del año (curva).

Climatología de temperatura · Santiago, Chile
12 valores mensuales observados (puntos) reconstruyen 365 valores diarios continuos (curva). Método pchip_mp.
nodo mensual (input) serie diaria (output)
23° 19° 15° 11° Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic
12 nodos · DOY 15, 46, 74, … (midpoint mensual) 365 valores · PCHIP + Rymes-Myers (mean-preserving)

El concepto, visualmente

Una serie ráster mensual (capas frías a la izquierda, ~9 °C de invierno) atraviesa el año hasta el verano (capas cálidas a la derecha, ~21 °C). Entre cada par de observaciones mensuales, tempify sintetiza las capas diarias intermedias (las translúcidas que rodean cada nodo) preservando la media. La línea de fuego conecta los 12 nodos originales.

Stacks ráster con gradiente de temperatura azul-naranja sobre paisaje de cordillera; los rásters densos representan los 12 nodos mensuales conectados por una línea brillante
Frame interpolation, pero para datos geoespaciales 12 nodos mensuales → 365 capas diarias. Las capas vívidas son inputs observados; las translúcidas son interpoladas por tempify con media preservada.

Por qué importa

Muchos productos climáticos (WorldClim, CHELSA, CRU-TS, TerraClimate) se distribuyen mensuales, pero los modelos hidrológicos, bioclimáticos y agronómicos los necesitan diarios. tempify es la pieza que cierra ese hueco.

Seis métodos validados

Lineal, PCHIP, PCHIP+Rymes-Myers (mean-preserving), Fourier multi-armónico, Akima y Cubic spline. Eliges según el tradeoff suavidad / fidelidad / costo.

Conservación de media

El método pchip_mp garantiza que la media mensual del output diario reproduce la del input con error < 10⁻⁴ °C (observado ~10⁻¹⁴).

🌐

Parsers built-in

Reconoce nomenclatura WorldClim, CHELSA, CHIRPS, ERA5. Lee GeoTIFF y NetCDF; escribe NetCDF CF-compliant, GeoTIFF y Zarr.

🔬

Reproducibilidad bit-exact

Mismos inputs + parámetros = mismo output (MD5). Cada ejecución produce un ProcessingReport con procedencia completa.

CLI + API Python

Cinco subcomandos en español (convert, inspect, validate, profiles, version) y API ergonómica estilo terra (rast, tempify, plot). Estable, basada en xarray + Dask.

📐

Convenciones rigurosas

CF Conventions §7.4 (midpoint anchor), climatological wraparound para continuidad Dic-Ene, política explícita de precipitación.

Métodos y conservación de media

Métricas reales sobre el sample sintético WorldClim Chile Central (12 GeoTIFFs mensuales → 365 días). max |diff| es la peor discrepancia píxel-a-píxel entre la media mensual reconstruida desde el output diario y el input original.

MétodoSuavidadConservación de mediaCostomax |diff|
linear C⁰AproximadaBajo 5.58 × 10⁻¹ °C
pchip C¹ shape-preservingAproximadaMedio 3.23 × 10⁻¹ °C
fourier C∞ paramétricaAproximadaMedio 8.32 × 10⁻¹ °C
akima C¹ Akima 1970AproximadaMedio 3.26 × 10⁻¹ °C
cubic C² spline naturalAproximadaMedio 2.82 × 10⁻¹ °C

Caso real · Alto Maipo, Chile

WorldClim v2.1 (climatología mensual 1970–2000, resolución 30 arc-sec ≈ 1 km) sobre la cuenca alta del río Maipo, Andes centrales de Chile. tempify acepta directamente el GeoTIFF multibanda de 12 capas (sin que haya que splittearlo) y produce 366 rásters diarios. Lo que ves abajo es el output literal del pipeline.

Bounding box · −71.0° a −69.8° lon, −34.1° a −33.0° lat Pixels · 126 × 147 Stack input · 220 KB Output · 366 días · 9.2 MB NetCDF Método · pchip_mp Range · −18.6 °C a +23.0 °C
Comparación 3×4: fila superior muestra input WorldClim mensual para Enero, Abril, Julio y Octubre; fila central muestra el output tempify cubic spline en el día 15 del mismo mes; fila inferior muestra la diferencia ancla menos predicción con colorbar independiente
Validación: anclas conservadas con cubic spline. Fila 1: rásters de entrada WorldClim v2.1 para cuatro meses. Fila 2: salida de cubic en el día 15 del mismo mes (visualmente indistinguible). Fila 3: residual ancla − predicción con colorbar diverging independiente (escala ±0.11 °C). Aun con un método no mean-preserving, los días-ancla quedan acotados a una décima de grado; el sesgo se concentra en meses de transición estacional (Octubre, primavera austral), cuando la curvatura local del spline es máxima.
Tira de 6 rásters diarios: 15 Sep y 15 Oct con borde azul (anclas WorldClim), los cuatro intermedios con borde gris (interpolados por tempify)
Efecto de la interpolación: transición Sep → Oct. Los bordes azules marcan las anclas mensuales del input (15 Sep y 15 Oct). Los bordes grises son las fechas intermedias generadas por pchip_mp — la transición térmica es continua y físicamente coherente.
Ciclo anual de temperatura para dos píxeles: valle del Maipo en rojo, alta cordillera en azul
Ciclo anual reconstruido. Series diarias en dos píxeles de altitud extrema. Los puntos son los 12 nodos mensuales del input — pchip_mp los preserva exactamente (media mensual conservada con error < 10⁻⁴ °C).

Quickstart

Python 3.11+. Mientras subimos a PyPI, se instala desde el repo.

1. Instalación

# desde el repositorio
$ pip install git+https://github.com/djwillichile/tempify

# o en modo editable (tras clonar)
$ git clone https://github.com/djwillichile/tempify
$ cd tempify && pip install -e .

2. CLI

$ tempify convert ./worldclim_chile/ \
    --method pchip_mp \
    --year 2023 \
    --output ./out/ \
    --report ./out/report.md

3. API Python ergonómica · v0.1.6 · estilo terra (R)

from tempify import rast, tempify, plot

r  = rast("worldclim_tmax.tif")   # cargar GeoTIFF multibanda
print(r)                              # info compacta tipo terra
plot(r)                               # grilla de bandas

r2 = tempify(r, from_freq="monthly", to_freq="daily", method="cubic")
plot(r2, sub=range(1, 17))            # primeras 16 bandas diarias

4. Verificación end-to-end

# Genera un sample sintetico (~50 KB) y
# corre el pipeline con todos los metodos.
$ python examples/generate_worldclim_sample.py
$ python examples/run_demo.py

Tutoriales en Google Colab

Tres notebooks autocontenidos, ejecutables directo en el navegador. Sin instalación local.

Quickstart

01 · Getting Started

Recorre la API pública end-to-end sobre un sample sintético tipo WorldClim de Chile Central. Quickstart con pchip_mp, comparación numérica de los 6 métodos, línea de tiempo 3D con anclas destacadas y reporte de procedencia.

~3 minEjecución
31Celdas
Abrir en Colab
Caso real

02 · WorldClim Alto Maipo

Aplica tempify a un stack real de WorldClim sobre el Alto Maipo (gradiente altitudinal 800–4000 m, contraste valle/cordillera ~30 °C). Validación visual de la conservación de anclas y reconstrucción del ciclo anual en dos píxeles extremos.

~4 minEjecución
20Celdas
Abrir en Colab
v0.1.6 · estilo terra (R)

03 · API ergonómica

rast() + tempify() + plot() en pocas líneas, inspirado en el paquete terra de R. Notebook autocontenido: genera un GeoTIFF de 12 bandas inline, sin descargas externas. Ideal para exploración rápida.

~2 minEjecución
24Celdas
Abrir en Colab
Próxima versión · v0.2.0

Aplicación de escritorio y ejecutable Windows

Estamos trabajando en un instalador para usuarios que no quieran tocar Python. Un solo doble-clic, ventana en español, drag & drop de carpetas.

🖥

GUI PySide6 en español

Selector visual de método, vista previa de detección, progress bar conectado al pipeline, visor del reporte embebido.

📦

Instalador Windows .exe

PyInstaller --onedir + Inno Setup. Sin requerir Python preinstalado. Asociación opcional de extensiones .nc y .tif.

🧠

Redes neuronales pre-entrenadas

Integración de ClimaX / Pangu-Weather / FourCastNet bajo patrón híbrido (baseline clásico + refinamiento NN). Ver ADR-0017.

Avisarme cuando salga