Skip to content
/ qubed Public

A prototype catalog server and viewer application aimed at FDB data

License

Notifications You must be signed in to change notification settings

ecmwf/qubed

Repository files navigation

Q3 Quick Querying of Qubes

Static Badge Docs

Qubed provides a datastructure primitive for working with trees of DataCubes. If a normal tree looks like this:

root
├── class=od
│   ├── expver=0001
│   │   ├── param=1
│   │   └── param=2
│   └── expver=0002
│       ├── param=1
│       └── param=2
└── class=rd
    ├── expver=0001
    │   ├── param=1
    │   ├── param=2
    │   └── param=3
    └── expver=0002
        ├── param=1
        └── param=2

A compressed view of the same set would be:

root
├── class=od, expver=0001/0002, param=1/2
└── class=rd
    ├── expver=0001, param=1/2/3
    └── expver=0002, param=1/2

Qubed provides all the algorithms on this data structure you would expect such as intersection/union/difference, compression, search, filtering etc.

In addition to this core datastructure, this repostitory contains a collection of components designed to deliver user friendly cataloging for datacube data. The STAC Server, Frontend and a periodic job to do tree compression can be deployed together to kubernetes using the helm chart. Thise deployment can then be accessed either via the Query Builder Web interface or the python client.

📦 Components Overview

FastAPI STAC Server Backend

  • 🌟 Implements our proposed Datacube STAC Extension.
  • 🛠️ Allows efficient traversal of ECMWF's datacubes.
  • Part of the implementation of this is 🌲 Tree Compressor, a compressed tree representation optimised for storing trees with many duplicated subtress.
  • 🔗 Live Example.

Web Frontend

  • 👀 Displays data from the STAC Server in an intuitive user interface.
  • 🌍 Try the Live Demo.

Python Client


🚀 Deployment Instructions

Deploy all components to Kubernetes using the provided Helm Chart.


🛠️ Future Enhancements

  • Intgration Query Builder Web with Polytope to contruct a full polytope query.
  • A JS polytope client implementation to allow performing the polytope query and getting the result all in the browser.