A. Installation:


The EPyGrAM directory is basically composed of:
  • epygram: the epygram core library/package
  • apptools: the command-line applicative tools, Python scripts based on epygram
  • site: some additional, external libraries or packages, needed by epygram or at least by some parts of it. Please note that the external packages which source code is managed within the Vortex project can be installed in this directory, if not already installed elsewhere (at Météo France, these are installed under the standard Vortex install).
  • _install: installation config files and scripts

Once these 3 directories de-tared or GIT-cloned (say, to $EPYGRAM_INSTALL_DIR), cf. Installation.

Any configuration parameter of epygram.config can be overwritten in the, rather than in the epygram/

Formats specific external libraries

Note that the formats handled by epygram can be explicitly deactivated in config, although they are deactivated at loading time if the lower-level library cannot be found.

In this case, the parameter to be specified in is implemented_formats, which should be copied from epygram/, and removing the undesired formats.


The arpifs4py library/package contains interfaces to FA/LFI/LFA I/O-routines and ARPIFS global/LAM spectral transforms.
It is composed of 2 nested levels:
  • a python declaration of the functions, interfacing the below Fortran routines (using ctypes "tricks" to convert data from Python to Fortran and reverse)
  • a set of Fortran interface routines, wrapping the calls to existing ARPIFS routines (from ifsaux, trans and etrans projects); these routines are gathered in a .so compiled shared object library.

This compilation is the most tricky part of the EPyGrAM installation.

  1. Create a pack with gmkpack (version 6.6.2 or newer), based (at least) on the latest export version (CY40T1_bf.05), and with target program libs4py
  2. Populate it with the patch patch_libs4py@40T1bf.tar available on module Files of this Redmine project
  3. Compile
  4. Do not forget to take notice of
  5. Copy or link the shared object library created,, to the site/arpifs4py directory of the EPyGrAM directory.

Note1: you may need to recompile some auxiliary dynamic libraries (so-called auxlibs, such as gribex) as shared objects (.so), with compilation options -fPIC and -shared
Note2: it is possible to install EPyGrAM without this package and formats, as mentioned above; spectral transforms will not be available, though.

Vortex packages

The above-mentioned Vortex packages (cf. vortex_packages) are provided in module Files, with several versions associated with epygram versions.
A proper installation should be to de-tar it into the site directory.
In the lastest versions, they are provided inside the EPyGrAM tar file.

Other dependencies

  • mandatory:
  • numpy
  • pyproj
  • scipy
  • optional (to use some more applicative methods):
  • matplotlib
  • mpl_toolkits.basemap
  • pyresample
  • nbsphinx
  • PIL (only for TIFFMF format)


The documentation may need to be re-generated locally using the script in directory epygram/doc_sphinx/
It is then available at epygram/doc_sphinx/html/index.html

B. Getting through:

Please report to the Introduction section of the documentation and the Tutorial !

C. Development & contributions:

Some recommendations:
  • contributors are requested, as much as possible, to follow the PEP8 (
  • build new developments in separate GIT branches, prefixed by your initials
  • create an Issue on this platform to inform about your contribution

The merge of contributions into the master trunk will be done at Météo France, after exchange about the contributions.
However, the authors nor Météo France do not undertake to incorporate all proposed contributions into the main trunk of the code and the official releases.
For a smoother integration and in order to avoid double work by several people, please use the Issues module of this platform (with tracker Evolution) to inform other people about new developments.

D. Known issues:

  • GRIB: several problems due to gribapi...
  • H2DVectorField.compute_direction: has to be checked carefully !
  • mask_threshold in V2D plots does not work properly
  • duplicate points in Gauss grids plots (but non-blocking)
  • overflow in some Gauss grids processing (but non-blocking)