xarray-contrib/xwrf

[FEATURE]: Add functionality to organize WRF data into a DataTree

Opened this issue · 0 comments

Description

WRF output can easily have a couple hundred data variables in a dataset, which is not ideal for interactive exploration of a dataset's contents. With DataTree, we would have a tree-like hierarchical data structure for xarray which could be used for this.

From @lpilz in #10:

  • Which diagnostics do we want to provide and do we want to expose them in a DataTree eventually?

One suggestion might be:

DataTree("root")
|-- DataNode("2d_variables")
|   |-- DataArrayNode("sea_surface_temperature")
|   |-- DataArrayNode("surface_temperature")
|   |-- DataArrayNode("surface_air_pressure")
|   |-- DataArrayNode("air_pressure_at_sea_level")
|   |-- DataArrayNode("air_temperature_at_2m") (?)
|   ....
|-- DataNode("3d_variables")
    |-- DataArrayNode("air_temperature")
    |-- DataArrayNode("air_pressure")
    |-- DataArrayNode("northward_wind")
    |-- DataArrayNode("eastward_wind")
    ....

Implementation

This would likely become a new accessor method, such as .xwrf.organize().

Tests

After xwrf.postprocess(), we have a post processed dataset (with likely many data variables). Then, after xwrf.organize(), we would have a DataTree with (a yet to be decided) tree-like grouping of data variables. Calling xwrf.organize() without xwrf.postprocess() would fail.

Questions

What form of heirarchy would we want to have and how deep?

  • 2d_variables vs. 3d_variables?
  • semantic grouping of variables, such as thermodynamic, grid_metrics, kinematic, accumulated, etc.?
  • Parse the WRF Registry somehow and assign groups based on that?
  • some other strategy?