Code for the paper "Intrinsic Gaussian Vector Fields on Manifolds" by Robert-Nicoud, Krause, and Borovitskiy.
Note of the author:
- The code extends
scikit-learn
's GP implementation. It is a bit of a hack and it is a bit messy, but it works.s A cleaner version will soon be available in the https://github.com/GPflow/GeometricKernels/tree/main package. - The ERA5 dataset is too large to be uploaded. It can be freely downloaded at
https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-pressure-levels-monthly-means?tab=form
and then uploaded in the
era5
folder. One should select the options:- Product type -> Reanalysis
- Variable -> U-component of wind + V-component of wind
- Pressure level -> 500 hPa
- Year -> 2010
- Month -> all available
- Time -> 00:00
- Format -> NetCDF
- The numbered scripts should be ran in order, as some generate data that is consuimed by the ones following.
aux_functions.py
: Auxiliary functions used to treat ponts and vectors on the sphere.sphere_vector_kernel.py
: Implementation of vector kernels on the sphere extendingsklearn.gaussian_process.kernels.Kernel
.sphere_vector_gp.py
: Implementation of manifold vector GPs extendingsklearn.gaussian_process.GaussianProcessRegressor
.blender_file_generation.py
: Utility for saving outputs ready to be treated by blender.001_gp_prior_samples
.ipynb: Generate samples from GP priors with various kernels.002_blender_eigenvf.ipynb
: Some heat equation eigen-vector fields on the sphere.003_era5_experiments.ipynb
: Run GP experiments on the ERA5 data.004_flat_plots.ipynb
: Shows some of the results in paper-grade quality on projected maps.005_synthetic_experiments.ipynb
: Experiments on synthetically generated data.006_var_div.ipynb
: Computation of variance of the divergence of various GPs.