All Projects → metno → gridpp

metno / gridpp

Licence: LGPL-3.0, Unknown licenses found Licenses found LGPL-3.0 LICENSE Unknown COPYING
Software to post-process gridded weather forecasts

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
SWIG
194 projects
shell
77523 projects

Projects that are alternatives of or similar to gridpp

Achoo
Achoo uses a Raspberry Pi to predict if my son will need his inhaler on any given day using weather, pollen, and air quality data. If the prediction for a given day is above a specified threshold, the Pi will email his school nurse, and myself, notifying her that he may need preemptive treatment. Community-sourced health monitoring!
Stars: ✭ 200 (+506.06%)
Mutual labels:  weather, prediction
verif
Software for verifying weather forecasts
Stars: ✭ 70 (+112.12%)
Mutual labels:  weather, prediction
info-bot
🤖 A Versatile Telegram Bot
Stars: ✭ 37 (+12.12%)
Mutual labels:  weather
aw-clock
Astronomy/weather clock
Stars: ✭ 41 (+24.24%)
Mutual labels:  weather
stock-price-prediction
A practice project for machine learning and stop price prediction
Stars: ✭ 19 (-42.42%)
Mutual labels:  prediction
cnn age gender
Age and Gender prediction using Keras
Stars: ✭ 58 (+75.76%)
Mutual labels:  prediction
solar-weather
React Native Weather App w. Realm, Redux, ReasonReact & Forecast.io
Stars: ✭ 13 (-60.61%)
Mutual labels:  weather
meteofrance-api
Python client for Météo-France API. | Client python pour l'API Météo-France
Stars: ✭ 50 (+51.52%)
Mutual labels:  weather
NLWeer
Free, open-source, and privacy-friendly Dutch weather prediction app
Stars: ✭ 15 (-54.55%)
Mutual labels:  weather
api
Community discussion and documentation for the NWS API
Stars: ✭ 168 (+409.09%)
Mutual labels:  weather
WeatherApp MVI sample
🌸[Functional reactive programming (FRP)] 🍁Simple Android weather forecast application written in Kotlin, using RxKotlin, Retrofit2, Mosby, Room Persistence ❄️MVI Pattern with Mosby Library
Stars: ✭ 106 (+221.21%)
Mutual labels:  weather
LWClock
Multifunctional clock based on ESP8266 and MAX79xxx for Home Automation (IoT)
Stars: ✭ 40 (+21.21%)
Mutual labels:  weather
aprs-weather-submit
Manually submit weather station information to the APRS-IS network.
Stars: ✭ 17 (-48.48%)
Mutual labels:  weather
meteo-qt
System tray application for weather status information
Stars: ✭ 71 (+115.15%)
Mutual labels:  weather
Weather
Weather Android App using apixu API https://www.apixu.com
Stars: ✭ 48 (+45.45%)
Mutual labels:  weather
SF-GRU
Pedestrian Action Anticipation using Contextual Feature Fusion in Stacked RNNs
Stars: ✭ 43 (+30.3%)
Mutual labels:  prediction
joineRML
R package for fitting joint models to time-to-event data and multivariate longitudinal data
Stars: ✭ 24 (-27.27%)
Mutual labels:  prediction
forecastVeg
A Machine Learning Approach to Forecasting Remotely Sensed Vegetation Health in Python
Stars: ✭ 44 (+33.33%)
Mutual labels:  prediction
prediction
Tidy, Type-Safe 'prediction()' Methods
Stars: ✭ 86 (+160.61%)
Mutual labels:  prediction
grib
Golang GRIB2 parser
Stars: ✭ 41 (+24.24%)
Mutual labels:  weather

Gridded post-processor

"Latest release" C/C++ CI

Gridpp a is post-processing tool for gridded weather forecasts. It consists of a library of commonly-used methods and a command-line tool that applies these methods to forecast fields in NetCDF files.

Gridpp is written in C++ but offers python bindings to the functions in the library. The tool is used at MET Norway to produce operational weather forecasts for Yr (https://www.yr.no).

Gridpp is currently under active development and the current version is a prototype for testing. Feedback is welcome, either by using the issue tracker in Github, or by contacting Thomas Nipen ([email protected]).

Features

  • Methods for downscaling a forecast from a coarse grid to a fine grid
  • Methods for calibrating a downscaled grid, such as quantile mapping
  • Computationally efficient neighbourhood methods to compute neighbourhood min, mean, max, and any quantile.
  • Data assimilation using optimal interpolation (OI) to merge observations and gridded forecasts (deterministic or ensemble)
  • Efficient data structures for nearest location lookup in a vector or grid of locations
  • Command-line client with support for Netcdf files with flexibility in how variables and dimensions are configured

Documentation

For information on how to use gridpp, check out the wiki at https://github.com/metno/gridpp/wiki. The API reference is found at https://metno.github.io/gridpp/.

Getting started

The easiest way to get started is to install gridpp for python using:

pip install gridpp

Let's say you have a gridded background field and want to merge this with a set of point observations. We can use gridpp.optimal_interpolation() for this! Just run the following:

import gridpp
import numpy as np
import scipy.ndimage.filters

# Create a nice background field and define its grid
noise = np.random.randn(200, 200) * 3
field = scipy.ndimage.filters.gaussian_filter(noise, sigma=5)
grid = gridpp.Grid(*np.meshgrid(np.linspace(0, 1, 200), np.linspace(0, 1, 200)))

# Next, create some trustworthy observations
points = gridpp.Points(np.random.rand(10), np.random.rand(10))
obs = np.random.randn(10) / 2
pobs = gridpp.nearest(grid, points, input)
obs_to_background_variance_ratio = 0.5*np.ones(10)

# Run optimal interpolation with a Barnes structure function (10km e-folding distance)
structure = gridpp.BarnesStructure(10000)
max_points = 10
output = gridpp.optimal_interpolation(grid, field, points, obs,
                                      obs_to_background_variance_ratio,
                                      pobs, structure, max_points)

Example

Full gridpp installation from source

1) Install dependencies

On Ubuntu Bionic, these can be installed like this:

sudo apt-get update
sudo apt-get install libboost-all-dev
sudo apt-get install libgsl0-dev libblas-dev
sudo apt-get install netcdf-bin libnetcdf-dev
sudo apt-get install libarmadillo6 libarmadillo-dev
sudo apt install swig cmake

Note that Ubuntu Xenial only has Armadillo 6.5 in its apt repository. In that case you need to install Armadillo 6.6 or later manually.

2) Download source code

Either download the source code from the latest release, unzip the file and navigate into the extracted folder; or clone the repo from github.

3) Set up cmake installation

mkdir build
cd build
cmake ..

4) Install the C++ library

sudo make install

This will install the library in /usr/local/lib/libgridpp.so and the gridpp command-line client in /usr/local/bin/gridpp. To specify a custom installation path, use the following in step 3:

cmake .. -DCMAKE_INSTALL_PREFIX=<custom path>

5) Install the python bindings

make install-python-user

This installs the python bindings in ~/local/lib/python3.6/site-packages/gridpp.py. To install the python bindings system-wide, use sudo make install-python instead.

If you only want to build the package, and want to install it in a custom location instead, run:

make build-python

and copy extras/SWIG/python/gridpp.py and extras/SWIG/python/_gridpp.so to the desired location.

6) Install the R bindings

make build-r

Currently, the R package is not installed centrally, but instead is placed in extras/SWIG/R/gridpp.R in the build directory.

gridpp client installation from source

  1. Extra dependencies The gridpp commando-line client requires the following extra dependencies:

On Ubuntu Bionic, these can be installed like this:

sudo apt-get install libgsl0-dev libblas-dev
sudo apt-get install netcdf-bin libnetcdf-dev
  1. Install the client
make gridpp-client

Copyright and license

Copyright © 2014-2022 Norwegian Meteorological Institute. Gridpp is licensed under the GNU LEsser General Public License (LGPL). See LICENSE file.

Contact

E-mail: Thomas Nipen ([email protected])

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].