Heterogeneous

What do we actually want?

CNRS
MEOM

Motivating Examples:

  • Raster
  • Raster & Vector

Domain Transformation

Variable I - Encoder-Decoder z_u = EncoderD1(u) u’ = DecoderD1(z_u)

Variable II - Encoder-Decoder z_a = EncoderD2(a) a’ = DecoderD2(z_a)

Between Spaces

In many cases, we are not operating on the same spatiotemporal domain. This is often the case when we are dealing with observations.

Case I: Same Time, Same Space

Ωz=Ωutz=tu\begin{aligned} \boldsymbol{\Omega}_z &= \boldsymbol{\Omega}_u \\ t_z &= t_u \end{aligned}

This is the common framework for simulated data.

Case II: Same Time, Differnt Space

ΩzΩutz=tu\begin{aligned} \boldsymbol{\Omega}_z &\neq \boldsymbol{\Omega}_u \\ t_z &= t_u \end{aligned}

This is the common problem for interpolation and extrapolation problems.

Case III: Different Time, Different Space

ΩzΩutztu\begin{aligned} \boldsymbol{\Omega}_z &\neq \boldsymbol{\Omega}_u \\ t_z &\neq t_u \end{aligned}

This is common for forecasting problems whereby we have a latent space that we are confident in but the QOI of interest that we want to predict lies in a different spatiotemporal domain.


Example: (Un)structured to (Un)Structured Grids

# Field 1
values: Array = ...
domain: Domain = ...
u: Field = Field(values, domain)

# define new domain
new_domain: Domain = ...

# interpolation (functional API)
interp_fn: Callable = Interpolator(new_domain)

# interpolate onto new grid
u_new: Field = interp_fn(u.values, u.domain)

More information about some grid interpolation schemes can be found for scipy.interpolate, pyinterp , xesmf and xarray has some native interpolation schemes.


Example: Finite Volume Grids


Example: Earth Science Data Cubes (ESDC)

Often times, people (including me, a ML researcher) do not want to have to deal with many of these problems of domainThese are data structures

Resources: