- 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).
$EPYGRAM_INSTALL_DIR), one has to:
- create a
- copy the samples userconfig.py and user_Field_Dict_FA.csv, provided in _install directory, to it
Any configuration parameter of
epygram.config can be overwritten in the userconfig.py, rather than in the epygram/config.py
- the directory apptools in the
$PATH, for command-line tools to be accessible
- the directories each package (
epygram, footprints, arpifs4py...) in the
$PYTHONPATH. Examples are provided in the _install directory.
Formats specific external libraries¶
Note that the formats handled by epygram can be deactivated in config, in which case the external libraries needed for a specific format are not needed either.
This allows a lighter installation in case one deliberately want to ignore a format.
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.
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
Please report to the Introduction section of the documentation and the Tutorial !
- 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.
- 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)