EPyGrAM¶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
userconfig.py, rather than in the
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 userconfig.py is
implemented_formats, which should be copied from epygram/config.py, and removing the undesired formats.
arpifs4py¶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.
- 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
- Populate it with the patch
patch_libs4py@40T1bf.taravailable on module Files of this Redmine project
- Do not forget to take notice of
- Copy or link the shared object library created,
libs4py.so, 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
Note2: it is possible to install EPyGrAM without this package and formats, as mentioned above; spectral transforms will not be available, though.
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.
- optional (to use some more applicative methods):
- PIL (only for TIFFMF format)
The documentation may need to be re-generated locally using the script
mk_html_doc.sh 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 (https://www.python.org/dev/peps/pep-0008/)
- 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)