Metview's documentation is now on readthedocs!

Version 1.9.0

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.14.0

  • the plot functions now automatically plot inline if running inside a Jupyter notebook
    • it is no longer necessary to call setoutput('jupyter')
    • call setoutput('screen') to force the interactive plot window to appear
  • inline plots in Jupyter notebooks will be automatically trimmed of surrounding whitespace if pillow is installed
  • new functions to build popup dialogs and read in user input. Available via the newly added ui module.
    • ui.dialog()
    • ui.any()
    • ui.colour()
    • ui.icon()
    • ui.option_menu()
    • ui.slider()
    • ui.toggle()
  • added high-level plotting functions to be used with Datasets or in Jupyter notebooks
    • plot_maps()
    • plot_diff_maps()
    • plot_xs()
    • plot_rmse()
  • new object Track to represent a storm track
  • new function make_geoview() to generate a geoview object with predefined settings
  • new interface for Datasets
  • added new keyword argument called check_local to gallery.load_dataset(). If it is True and the data file exists locally it will not be downloaded.
  • fixed issue when describe() crashed when called with a paramId

Version 1.8.1

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.13.2

  • fixed case where map_area_gallery() crashed
  • fixed case where map_style_gallery() crashed
  • fixed issue where plot_maps() could not plot wind data
  • fixed issue where a style could not be updated when verb argument is specified

Version 1.8.0

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.13.0

  • new functions/methods on Fieldset to give an overview of contents:
  • new GRIB filtering function, select(), offers different filtering options from read() and is faster
    • see Jupyter notebook example
    • new shorthand way to select parameters from Fieldsets, e.g.
      • g = fs["t"]
      • g = fs["t500"]

      • g = fs["t500hPa"]

      • see docs
  • the Fieldset constructor can now take a list of paths to GRIB files or a wildcard, e.g.
    • a = mv.Fieldset(path=["/path1/to/data1.grib", "relpath/data2.grib"])
      a = mv.Fieldset(path="data/*.grib")
  • the result of a call to mcont() etc can now be modified, e.g.
    c = mv.mcont() ; c["contour_line_colour"] = "green" ; mv.plot(data, c)
    gv.update({"MAP_COASTLINE_land_SHADE_COLOUR": "green"}, sub="COASTlines")
  • improved the output of print(Fieldset):
    "Fieldset (6 fields)"

Version 1.7.2

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.12.0

  • documentation now available on readthedocs!
  • improvements in plotting into Jupyter notebooks so that the plot() command works in a loop or an 'if' statement
  • new parameter when calling setoutput to force the plot() command to return an Image rather than a widget - this allows plots to be embedded in the notebook when you save it, e.g.
    • mv.setoutput('jupyter', plot_widget=False)
  • when built with Metview 5.12, you can add a new parameter to setoutput() to scale the fonts, e.g.
    • mv.setoutput('jupyter', output_width=800, output_font_scale=1.5)

Version 1.7.1

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.11.1

  • added 'play' button to the animation widget in Jupyter using mv.plot(...., animate=True)

Version 1.7.0

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.11.0

  • added animate=True argument to plot() command for animated plots in Jupyter notebooks
  • allowed cfgrib backend keyword arguments to be passed to Fieldset.to_dataset(), e.g.
    • my_fieldset.to_dataset(squeeze=False, read_keys=["experimentVersionNumber"])
  • Fieldset out-of-range indexing now raises an IndexError
  • Fieldset merge() function now allows a single Fieldset as argument

The animation control provides a simple slider to control which step of an animation is displayed: 

Version 1.6.0

Released on github and pypi (pip install metview). Installed at ECMWF as part of metview/5.10.2

  • added new function download_gallery_data() to download Gallery example data files
  • added write(filename) method for classes Fieldset, Geopoints, GeopointSet, Bufr and NetCDF
  • added ability to construct a Fieldset from a list of Fieldsets, e.g. Fieldset([f1, f2, f3])
  • added metzoom() function (for a future development)
  • added png driver keyword arguments to setoutput('jupyter') to control output size in notebooks, e.g.
    • mv.setoutput('jupyter', output_width=1200)
  • added metview_python member to result of version_info() function

Version 1.5.1

  • just a version bump to help install to PyPi

Version 1.5.0

  • added support for int numpy arrays as input to functions and methods
  • added support for bitwise and (&), or (|) and not (~) operators on Fieldsets
  • added div() function (already available via the '/' operator)
  • added mod() function
  • improved timeout message by mentioning how to increase the timeout
  • fixed error when updating an mv.Request object

Version 1.4.2

Released on github and pypi (pip install metview)

  • fixed issue where indexing a Fieldset with a numpy array of indexes did not work

Version 1.4.1

Released on github and pypi (pip install metview)

  • added Travis and Coveralls testing on github

Version 1.4.0

Released on github and pypi (pip install metview)

  • allow a geopoints column name to be used as index when assigning data to a column
  • allow -, + and abs operators to work on Metview classes (e.g. a = -my_fieldset)
  • added support for Metview's file object
  • fixed issue where negative indexing did not work on a Fieldset
  • fixed issue where concurrent iterators on a Fieldset did not work
  • added experimental support for pickling Fieldsets
  • automatically obtain list of Macro-based functions
  • allow all example notebooks to run in Binder

Version 1.3.4

Released on github and pypi (pip install metview)

  • Fixed issue when passing sliced Numpy arrays to Metview functions
  • Fixed issue when running notebooks in Binder environment

Version 1.3.3

Released on ECMWF desktops, ecgate, Linux clusters and HPC on 2020-01-14 as part of Metview 5.7.5. Also on github and pypi (pip install metview)

  • Fixed memory leak in the Fieldset.append() function

Version 1.3.2

Released on ECMWF desktops, ecgate, Linux clusters and HPC on 2019-12-06 as part of Metview 5.7.4. Also on github and pypi (pip install metview)

  • added 'reflected operator' support for Fieldsets. We previously supported expressions such as "Fieldset * 2", but now we also support "2 * Fieldset". Affected operators are add, subtract, multiply, divide and power.

Version 1.3.1

Released on ECMWF desktops, ecgate, Linux clusters and HPC on 2019-12-06 as part of Metview 5.7.4. Also on github and pypi (pip install metview)

  • added the function ml_to_hl() to convert GRIB fields from model levels to height levels

Version 1.3.0

Released on ECMWF desktops, ecgate and lxc on 2019-10-04. Also on github and pypi (pip install metview)

  • fixed memory leak when returning a list of items
  • allow bool-typed numpy arrays as input
  • fixed issue where the Fieldset iterator could fail if used multiple times
  • export the Request class (dict + verb, can be passed to Meview and automatically converted into a 'definition')

Version 1.2.0

Released on ECMWF desktops, ecgate and lxc on 2019-07-15. Also on github and pypi (pip install metview)

  • Metview startup timeout configurable via environment variable METVIEW_PYTHON_START_TIMEOUT (in seconds)
  • Metview startup timeout default set to 8 seconds in case of busy systems
  • added integral() function
  • fixed memory leak when exporting vectors as numpy arrays

Version 1.1.0

Released on ECMWF desktops, ecgate and lxc on 2019-03-04. Also on github and pypi (pip install metview)

  • added equality (``==``) and non-equality (``!=``) operators for Fieldset and Geopoints objects, e.g. ``same = (a == b)`` will produce a new Fieldset or Geopoints with 1s where the values are the same, and 0s elsewhere.
  • added new thermodynamic, gradient and utility functions: 'thermo_data_info', 'thermo_parcel_path', 'thermo_parcel_area', 'xy_curve', 'potential_temperature', 'temperature_from_potential_temperature', 'saturation_mixing_ratio', 'mixing_ratio', 'vapour_pressure', 'saturation_vapour_pressure', 'lifted_condensation_level', 'divergence', 'vorticity', 'laplacian', 'geostrophic_wind_pl', 'geostrophic_wind_ml'
  • improved conversion from geopoints to pandas dataframe to cope with new NCOLS subformat
  • make conversion from Fieldset to xarray dataset compatible with latest versions of cfgrib

Version 1.0.0

Released on ECMWF desktops, ecgate and lxc on 2018-12-21. Also on github and pypi (pip install metview)

This version is the first 'full release', containing only some internal cleanups. Some more example Jupyter notebooks were added.

From this point, all developments and issue tracking will be performed directly on github. Please report any issues there.

Version 0.9.1

Released on ECMWF desktops, ecgate and lxc on 2018-11-24. Also on github and pypi (pip install metview).

This version is considered beta.


  • [MPY-207] - Filedset slicing fails with a large number of fields


  • [MPY-205] - Allow the creation of an empty Fieldset object
  • [MPY-206] - Add append() function to Fieldset class
  • [MPY-208] - Passed named arguments to dataset_to_fieldset function
  • [MPY-209] - Ignore errors on exit from a data examiner
  • [MPY-210] - Add expanded field-obs example

Version 0.8.6

Released on ECMWF desktops, ecgate and lxc on 2018-10-26. Also on github and pypi (pip install metview)


  • [MPY-186] - Cannot plot a multi-page PostScript file - now we can do it by inserting calls to newpage():
    • e.g. plot(dw, data1, visdef1, newpage(), data2, visdef2) - requires Metview >=5.2
  • [MPY-196] - Cannot take scalar numpy numbers (e.g. np.int64) as input arguments to Metview functions


  • [MPY-136] - Use environment variable to determine how to invoke Metview (METVIEW_PYTHON_START_CMD)
  • [MPY-137] - Support passing of float32 vectors between Metview and Python numPy
  • [MPY-153] - Add function to convert NetCDF to xarray dataset
    • e.g. xs = mv.mcross_sect(line=[59,-180,-13,158],data=grib); xarr = xs.to_dataset()
  • [MPY-162] - Tidy up value_from_metview
  • [MPY-163] - Tidy up push_arg
  • [MPY-177] - Revise example scripts in repo
  • [MPY-187] - Allow assignment to indexed fields in a Fieldset object
    • e.g. fs[3] = fs[2] + 5
  • [MPY-188] - Allow xarray datasets to the provided as input to Metview functions
    • e.g. m = mv.mean(my_xarray_dataset); also f = mv.dataset_to_fieldset(x) - only for very compliant datasets though!
  • [MPY-189] - Check and revise the scripts in the examples folder
  • [MPY-190] - Create an example using data from the CDS
  • [MPY-191] - Ensure that FLEXTRA work from Metview's Python API
  • [MPY-192] - Create Jupyter notebook examples
  • [MPY-193] - Fix netcdf and geopoints functions that take indexes as parameters
  • [MPY-194] - Implement self-check command to ensure Metview installation ok
    • python -m metview selfcheck
  • [MPY-195] - Ensure all index-returning functions are context-sensitive
  • [MPY-197] - Add ability to export table data as a Pandas Dataframe
    • df = table.to_dataframe()
  • [MPY-198] - Add batch plotting tests
  • [MPY-199] - Improve organisation of code in
  • [MPY-200] - Remove experimental 'mf' class
  • [MPY-201] - Support extended slicing on Fieldset objects 
    • e.g. fields = fs[2:12:3]

Version 0.8.4

Released on ECMWF desktops, ecgate and lxc on 2018-08-01. Also on github.


  • [MPY-164] - importing the metview module overrides the keyboard interrupt signal
  • [MPY-179] - Cannot find in /usr/lib


  • [MPY-180] - Replace klass with class_ in MARS requests (change in behaviour)
  • [MPY-183] - Use cfgrib in metview-python

Version 0.8.1

Released on ECMWF desktops and ecgate on 2018-06-08.


  • [MPY-144] - Support passing of geopointset between Macro and Python
  • [MPY-150] - Add ability to export ODB table as a Pandas Dataframe
  • [MPY-151] - Simplify data classes through multiple inheritance
  • [MPY-152] - Allow access to individual geopoints
  • [MPY-154] - Implement aliases for 'class' as MARS parameter
  • [MPY-155] - Improve error message if correct version of Metview not found

Version 0.8.0

First internal release.