-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Challenge 10 - A Web Application for Interactive Visualisation of Verification Results
Stream 1 - Data Visualization and visual narratives for Earth Sciences applications
Goal
Develop a single-page web application and associated backend to allow the flexible exploration and plotting of scientific data. The primary use case will CAMS forecast verification data, i.e. making plots that compare forecasts with observations, but ideally the system will be general enough to have wide applicability.
Mentors and skills
-
Mentors: Luke Jones, Cihan Sahin, Dimitar Tasev, James Varndell (all ECMWF)
-
Skills required:
- Web development in Javascript (preferably React, Material UI, Plotly)
- Python
Challenge description
The Copernicus Atmospheric Monitoring Service (CAMS) makes daily forecasts and historic reanalyses of the planet's atmospheric composition, e.g. pollution, dust, greenhouse gas concentrations, etc. Verification is the process of comparing computer model forecasts with real-world observations so we can see how well the model is performing.
Our verification software currently spends a long time generating a huge number of plots, most of which don't get looked at. A solution to this problem would be a web application which would display a series of menus allowing a user to select precisely what they are interested in, and then allows them plot the associated data on demand.
This would necessitate a single-page frontend application with a Python-based backend. In order to be consistent with our other developments we envisage the frontend written in Javascript, preferably using Material UI on top of React. The backend could use Django, Flask, or anything similar. The job of producing the actual verification data would be ours - your backend would just have to call our Python to obtain the data, before preparing it for transfer to the frontend and rendering it as a plot.
Ideally, the code will be as general as possible. That is to say, the names and contents of the navigation menus will not be hard-coded anywhere in your app but will be provided by our backend code. If done this way this app would be useful beyond the immediate use case and could find widespread use across ECMWF.
We anticipate you would probably use Plotly to make the plots. The types we need include:
- Line plots of verification statistics (root mean square error, bias, etc.) as a function of time
- Line plots of verification statistics as a function of forecast lead time
- Map plots of verification statistics as a function of observation location ( 🌎 )
- Line plots of raw forecast and observation values at individual observation locations ( 📍 )
- 2D "heatmaps" of forecast vs observation values





These plots should be as interactive as possible, allowing a user to change scale, zoom in, etc. An important feature will be that a click on a point in a map plot ( 🌎 ) would generate a plot showing the time-series at that site ( 📍 ).
The number of features we'd like to have is extensive and accomplishing them all would probably be unfeasible in the time available, so we'll work with you to define a "minimum viable product" (MVP) and a list of "nice-to-haves" that could be completed if time allows. It may be important to consider the nice-to-haves even if they can't be achieved as they may influence the design of the MVP. For example, we would very much like the option to make a plot non-interactively (i.e. with a batch script that saves the plot to file without ever using a browser) which may have important implications for the system design.
We envisage that the project would start with some initial intensive discussions to communicate the vision and answer questions, with bi-weekly meetings thereafter.
This project, if successful, would be invaluable to CAMS scientists and possibly to many others in ECMWF. We really hope you can help us with our goals and that you get some rewarding experience in return!