Changes between Version 29 and Version 30 of access/BomAccessDocumentation/bom-nwptools


Ignore:
Timestamp:
Jul 26, 2019 10:53:44 AM (4 months ago)
Author:
Vinod Kumar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • access/BomAccessDocumentation/bom-nwptools

    v29 v30  
    1 = BOM Conda Environment =
    2 
    3 == Motivation ==
    4 An effort to set up a centralised, consultative, consolidated python-conda environment has been undertaken in the BoM/NWP (Atmospheric Modelling and Data Assimilation) section, which encompass all the packages we use for our work. This shared conda environment can be an entirely new one or an environment layered upon an existing one (conda/analysis27-18.07 or conda/analysis3-18.04). Some of the potential advantages of having such a shared environment is:
    5 
    6 1. Writing codes which  are transferrable between team members.
    7 2. Eliminate potential for duplicate personal python environments
    8 2. Implicit sharing of information. Allows you to dodge issues that has been already tackled by someone else earlier (i.e., compatible packages already installed and tested).
    9 3. Save you from loading multitudes of python modules and figuring out compatibilities.
    10 5. Prevent further proliferation of python modules available under ~access/modules (as it stands there are about 141 python packages under ~access/modules).
    11 6. Possibly easy for ITOs to manage.
    12 7. Allows you to set up, test and use your own new/additional packages, on top of this environment. This allow you to still get on with your work, until an ITO find some time to install the requested package.
    13 
    14 == Current problems encountered when using Python, Python packages, Python tools ==
    15 
    16 === PS global suites ===
    17 
    18 * PS global suites use scitools for some tasks. Some examples of how scitools versions are used,
    19 
    20 || PS || scitools version used ||
    21 || || ||
    22 || PS41 global standard suite || production-os41-1 ||
    23 || PS42 global standard suite || scitools/production_legacy-os42-1 ||
    24 
    25   We have no way of knowing what Python version, Python packages and their versions and other Python tools and their versions were used.
    26 
    27 === ACCESS-C (UKV) suites ===
    28 
    29 || PS || scitools version used ||
    30 || || ||
    31 || PS43 MOGREPS-UK component trial suite || scitools/production_legacy-os42-1 ||
    32 
    33 === Global Evaluation Suite (GES) ===
    34 
    35 * GES uses Python and its standard packages in addition to some UKMO-developed Python tools such as !VerPy and !BoiteNoire (a part of !VarPy)
    36 
    37 * The GES suite sets up Python environment using either,
    38 
    39 {{{
    40 module load scitools
    41 }}}
    42 
    43    or
    44 
    45 {{{
    46 module load scitools/default-previous
    47 }}}
    48 
    49   But this gives no indication what packages are in the UKMO mofulefile, `scitools`. It's often an educated guess or trial-and-error when we port GES trying to figure out which versions of packages are used
    50 
    51 * UKMO GES suite developers use these Python packages and tools quite indepedently of RES suite developers and so the Python environment in GES is different to the Python environment in RES
    52 
    53 === Regional Evaluation Suite (RES) ===
    54 
    55  The current version of RES in !MetOffice uses the following module
    56 {{{
    57 scitools/production-os41-1
    58 }}}
    59  After lengthy testing in relation to RES porting, Vinod/Wenming has set up the following module consisting of various python packages to run RES at NCI
    60 {{{
    61 rmedtools/1.0.0
    62 }}}
    63 
    64 === obsmon ===
    65 
    66 * Apart from standard library packages, direct use is made of {{{numpy}}}, {{{matplotlib}}}, {{{netCDF4}}}, {{{cartopy}}} and {{{odbserver}}}. odbserver is not available through conda download, it is installed separately.
    67 
    68 * odbserver is sensitive to the compiler environment. If the version of gcc (for the underlying C++ code) is not compatible with the installation version then a {{{Exception: Can't find libOdb.so}}} error is raised.
    69 
    70 * Cartopy is usually made available through iris and that has some compatibility issues as noted elsewhere. Some versions of cartopy have issues with some versions of matplotlib. See [https://code.metoffice.gov.uk/trac/varpy/ticket/67 varpy ticket 67] and [https://code.metoffice.gov.uk/trac/varpy/ticket/185 varpy ticket 185] for examples.
    71 
    72 * Cartopy requires data files that are automatically downloaded into a user's {{{.local}}} directory if the are not found in a pre-installed location. This must be avoided as it will break any suites that do not run cartopy on a data-mover node (i.e., all of them) as shared and compute nodes do not have external access. A shared location for these files (that is defined in the installed package) is essential.
    73 
    74 * The sphinx package, pep8, and associated modules are used for automatic documentation generation and code tidying respectively. These are not required in the operation of the code but they are for admin purposes in varpy. Sphinx and pep8 are part of the Met Office scitools environment.
    75 
    76 
    77 == Vision ==
    78 
    79 Our Python environment will be identical to UKMO `scitools` and so Python, Python packages and Python tools within GES, RES and obsmon will work at NCI  without any modifications and tweaking.
    80 
    81 == A possible solution ==               
    82                
    83 There's a discussion going on within UKMO and across the partnership about a portable Python environment (see the section under the heading, "Useful information" below). One of the ideas proposed is some kind of containerised environment, but whatever solution UKMO comes up it will take some time before we can take advantage. As an interim solution we propose that, 
    84 
    85 At each release of a suite the relevant UKMO suite developer publishes following information (preferrably in a yml file),
    86 
    87 * Python version used           
    88 * a list of Python packages and their versions         
    89 * a list of Python tools and their versions             
    90                        
    91 The agreement to do this and a new working practice can be discussed through TISD workpackage.
    92 
    93 == Name of the environment ==
    94 
    95 We propose "nwp-pytools" as the package name. There is a possibility that we could eventually end up with a total of 4 versions. There is a requirement to support both python2 and python3. Also, as a release strategy, it would be easier to manage if there is an unstable version for each of the above packages. The module could be potentially named as:
    96 
    97 {{{
    98 conda/nwp-pytools27
    99 conda/nwp-pytools27-unstable or conda/nwp-pytools27-dev
    100 conda/nwp-pytools3
    101 conda/nwp-pytools3-unstable or conda/nwp-pytools3-dev
    102 }}}
    103 
    104 Note 1. It would be worth having a tag for a particular nwp-pytools version, indicating the Met Office "scitools" version it corresponds to. For example, the initial version of "nwp-pytools" seems to be working for suites which use "scitools/production-os-41-1" at the Met Office. Hence, a suggested name would be nwp-pytools27-production-os41-1 or nwp-pytools27-os41-1 (if collective preference is for a shorter name).
    105  
    106 Note 2. The naming convention`unstable` is used by CoE but we may use `dev` instead since each `dev` release would be reasonably stable and would become the basis for the next 'os' release (?)
    107 
    108 == Python 2.x.x environment ==
    109 
    110 The following is an initial list of packages for conda/nwp-pytools27 environment, given in the format of yml file. There are obviously a few packages that are not in the channels. Claire Carouge from the CoE recommend we create our own channel. Otherwise, this has to be installed out of the source code directly.
    111 
    112 There are a few things to be noted:
    113    1. The mule package in the anaconda cloud is quite old (vn 1.2) and the um_utils does not exists. So these packages were installed manually from the source files downloaded off the GitHub.The source files I downloaded (vn 2017.08) can be found under:
    114 
    115     {{{
    116     Raijin:/g/data/dp9/vvk548/softwares/sources
    117     }}}
    118 
    119     To install them into a conda environment, activate the conda environment, extract the gzip file somewhere in your personal space and then install them using the setup.py fil. i.e., go to the directory where the sources are unzipped, and type:
    120 
    121     {{{
    122     module load conda/python27 (we use the conda env already installed by CoE)
    123     conda activate <conda env name>
    124     conda remove mule (if you have them installed already)
    125     python setup.py install
    126     }}}
    127 
    128     Do the same for um_utils. You can verify the install by "conda list".
    129 
    130   2. The iris version that works with both GES and RES is found to be iris=1.13.0. Later versions of iris (tested 2.0.0) were found to have a compatibility issue with numpy by calling the dask module. Basically, later version of iris calls dask which inturn calls {{{numpy.nancumprod}}} function, available only on numpy 1.13.0 or later. However, upgrading to a later version (numpy1.16.4) resulted in an unstable installation with further dependency issues. Hence, we reverted back to the earlier numpy=1.11.3 version. However, the iris=1.13.0 is not compatible with eccodes and cdo packages available via the conda-forge channel. Hence we had to omit these two modules from our installation. 
    131 
    132 {{{
    133 name: nwp-pytools27
    134 channels:
    135   - jochym
    136   - scitools/label/archive
    137   - terradue
    138   - auto
    139   - conda-forge
    140   - defaults
    141 dependencies:
    142   - _r-mutex=1.0.0=anacondar_1
    143   - affine=2.2.2=py27_0
    144   - agg-regrid=0.2.2=py27h637b7d7_1000
    145   - alembic=1.0.10=py_0
    146   - appdirs=1.4.3=py27h28b3542_0
    147   - arm_pyart=1.10.1=py27hd352d35_0
    148   - arrow=0.13.1=py27_0
    149   - asciitree=0.3.3=py_2
    150   - asn1crypto=0.24.0=py27_0
    151   - atomicwrites=1.3.0=py27_1
    152   - attrs=19.1.0=py27_1
    153   - backports=1.0=py_2
    154   - backports.functools_lru_cache=1.5=py_2
    155   - backports.lzma=0.0.13=py27hd36a4d9_0
    156   - backports.os=0.1.1=py27_0
    157   - backports.shutil_get_terminal_size=1.0.0=py27_2
    158   - backports.ssl_match_hostname=3.4.0.2=py27_0
    159   - backports.tempfile=1.0=py_1
    160   - backports.weakref=1.0.post1=py_1
    161   - backports_abc=0.5=py_0
    162   - basemap=1.2.0=py27h673bf1a_2
    163   - basemap-data-hires=1.2.0=0
    164   - beautifulsoup4=4.7.1=py27_1
    165   - biggus=0.15.0=py_1
    166   - binutils_impl_linux-64=2.31.1=h6176602_1
    167   - binutils_linux-64=2.31.1=h6176602_7
    168   - blas=1.1=openblas
    169   - bleach=3.1.0=py27_0
    170   - blosc=1.16.3=hd408876_0
    171   - bokeh=1.2.0=py27_0
    172   - boost-cpp=1.67.0=h14c3975_4
    173   - boto3=1.9.162=py_0
    174   - botocore=1.12.163=py_0
    175   - bottleneck=1.2.1=py27h035aef0_1
    176   - brewer2mpl=1.4.1=py_3
    177   - bsddb=1.0=py27_1
    178   - bwidget=1.9.11=1
    179   - bzip2=1.0.6=h14c3975_5
    180   - ca-certificates=2019.5.15=0
    181   - cairo=1.12.18=6
    182   - cartopy=0.17.0=py27hbb7e04d_1
    183   - cdat-lite=6.0.1=py27hdea14a1_5
    184  - cdat_info=8.1.1=py_2
    185   - cdtime=3.1.2=py27h6091dcd_1
    186   - certifi=2019.6.16=py27_0
    187   - cf-units=2.1.1=py27h3010b51_1000
    188   - cf_units=1.2.0=py27_0
    189   - cfchecker=3.1.1=py27h24bf2e0_0
    190   - cffi=1.12.3=py27h2e261b9_0
    191   - cftime=1.0.3.4=py27hdd07704_1
    192   - cfunits=3.0.0=py_0
    193   - chardet=3.0.4=py27_1
    194   - click=7.0=py27_0
    195   - click-plugins=1.1.1=py_0
    196   - cligj=0.5.0=py27_0
    197   - cloudpickle=1.1.1=py_0
    198   - cmarkgfm=0.4.2=py27h7b6447c_0
    199   - cmocean=2.0=py_0
    200   - colorcet=2.0.1=py_0
    201   - compliance-checker=3.0.2=py27_0
    202   - configobj=5.0.6=py27_1
    203   - configparser=3.7.4=py27_0
    204   - contextlib2=0.5.5=py27_0
    205   - cryptography=2.7=py27h72c5cf5_0
    206   - cryptography-vectors=2.7=py_0
    207   - curl=7.64.1=hbc83047_0
    208   - cycler=0.10.0=py27_0
    209   - cyordereddict=1.0.0=py27h14c3975_1002
    210   - cython=0.29.10=py27he6710b0_0
    211   - cytoolz=0.9.0.1=py27h14c3975_1
    212   - dask=1.2.2=py_0
    213   - dask-core=1.2.2=py_0
    214   - datashader=0.7.0=py_0
    215   - datashape=0.5.4=py27_1
    216   - db=5.3.28=1
    217   - dbus=1.13.6=he372182_0
    218   - decorator=4.4.0=py27_1
    219   - defusedxml=0.6.0=py_0
    220   - descartes=1.1.0=py27_0
    221   - distarray=2.12.2=py_1
    222   - distributed=1.28.1=py27_0
    223   - docopt=0.6.2=py27_0
    224   - docutils=0.14=py27_0
    225   - ecmwf-api-client=1.4=py27_0
    226   - ecmwf_grib=1.14.7=2
    227   - ecmwfapi=1.3=py27_0
    228   - entrypoints=0.3=py27_0
    229   - enum34=1.1.6=py27_1
    230   - esgf-pyclient=0.1.8=py27_1001
    231   - esmf=7.1.0r=ha678704_2
    232   - esmpy=7.1.0=py27h24bf2e0_3
    233   - expat=2.2.6=he6710b0_0
    234   - f90nml=1.0.2=py27_1000
    235   - fastcache=1.1.0=py27h7b6447c_0
    236   - fasteners=0.14.1=py_3
    237   - ffmpeg=3.4.1=0
    238   - fftw=3.3.8=h7b6447c_3
    239   - fiona=1.7.0=np111py27_0
    240   - fontconfig=2.11.1=6
    241   - freeglut=3.0.0=hf484d3e_5
    242   - freetype=2.5.5=2
    243   - freexl=1.0.5=h14c3975_0
    244   - fs=2.4.5=py27_0
    245   - funcsigs=1.0.2=py27_0
    246   - functools32=3.2.3.2=py27_1
    247   - future=0.17.1=py27_0
    248   - futures=3.2.0=py27_0
    249   - g2clib=1.6.0=h838ce51_4
    250   - gcc_impl_linux-64=7.3.0=habb00fd_1
    251   - gcc_linux-64=7.3.0=h553295d_7
    252   - gdal=2.0.0=py27_1
    253   - geopandas=0.4.1=py_0
    254   - geos=3.7.1=he6710b0_0
    255   - geotiff=1.4.2=h9c7010b_0
    256   - gettext=0.19.8.1=hd7bead4_3
    257   - gfortran_impl_linux-64=7.3.0=hdf63c60_1
    258   - gfortran_linux-64=7.3.0=h553295d_7
    259   - giflib=5.1.4=h14c3975_1
    260   - glib=2.58.3=hf63aee3_1001
    261   - gmp=6.1.2=h6c8ec71_1
    262   - gmpy2=2.0.8=py27h10f8cd9_2
    263   - gnutls=3.6.5=hd3a4fd2_1002
    264   - gprof2dot=2017.9.19=py_0
    265   - graphite2=1.3.13=h23475e2_0
    266   - graphviz=2.38.0=0
    267   - gsl=2.4=blas_openblash5c7cb9b_1004
    268   - gst-plugins-base=1.14.4=hdf3bae2_1001
    269   - gstreamer=1.14.4=h66beb1c_1001
    270   - gsw=3.0.6=py27_0
    271   - gunicorn=19.9.0=py27_0
    272   - gxx_impl_linux-64=7.3.0=hdf63c60_1
    273   - gxx_linux-64=7.3.0=h553295d_7
    274   - h5netcdf=0.7.4=py_0
    275   - h5py=2.8.0=py27h989c5e5_3
    276   - harfbuzz=0.9.39=1
    277   - hdf4=4.2.13=h3ca952b_2
    278   - hdf5=1.10.2=hba1933b_1
    279   - hdfeos2=2.20=h64bfcee_0
    280   - hdfeos5=5.1.16=h647bee3_2
    281   - heapdict=1.0.0=py27_2
    282   - html5lib=1.0.1=py27_0
    283   - icu=58.2=h9c2bf20_1
    284   - idna=2.8=py27_0
    285   - image-meta-tag=0.7.8=py27_1000
    286   - imagehash=4.0=py_0
    287   - imageio=2.5.0=py27_0
    288   - importlib_metadata=0.17=py27_1
    289   - ipaddress=1.0.22=py27_0
    290   - ipykernel=4.10.0=py27_0
    291   - ipython=5.8.0=py27_0
    292   - ipython_genutils=0.2.0=py27_0
    293   - ipywidgets=7.4.2=py27_0
    294   - iris=1.13.0=py27h24bf2e0_2
    295   - iris-grib=0.12.0=py27_0
    296   - iris_grib=0.9.1=py27_1
    297   - isodate=0.6.0=py27_0
    298   - jasper=1.900.1=hd497a04_4
    299   - jbig=2.1=hdba287a_0
    300   - jinja2=2.10.1=py27_0
    301   - jmespath=0.9.4=py_0
    302   - joblib=0.13.2=py27_0
    303   - jpeg=9c=h14c3975_1001
    304   - json-c=0.13.1=h1bed415_0
    305   - jsoncpp=1.8.4=hfd86e86_0
    306   - jsonschema=3.0.1=py27_0
    307   - jupyter=1.0.0=py27_7
    308   - jupyter_client=5.2.4=py27_0
    309   - jupyter_console=5.2.0=py27_1
    310   - jupyter_core=4.4.0=py27_0
    311   - kealib=1.4.7=h77bc034_6
    312   - kiwisolver=1.1.0=py27he6710b0_0
    313   - krb5=1.16.3=h05b26f9_1001
    314   - lame=3.100=h14c3975_1001
    315   - lcms=1.19=0
    316   - libaec=1.0.4=hf484d3e_0
    317   - libblas=3.8.0=5_h6e990d7_netlib
    318   - libboost=1.67.0=h46d08c1_4
    319   - libcblas=3.8.0=5_h6e990d7_netlib
    320   - libcdms=3.0.1=hcacfb3f_4
    321   - libcf=1.0.2=py27h6e3784b_1005
    322   - libcurl=7.64.1=h20c2e04_0
    323   - libdap4=3.19.0=h8c95237_1
    324   - libdrs=3.1.0=h6e3784b_1000
    325   - libdrs_f=3.1.2=h0ebed7e_2
    326   - libedit=3.1.20181209=hc058e9b_0
    327   - libffi=3.2.1=hd88cf55_4
    328   - libgcc=7.2.0=h69d50b8_2
    329   - libgcc-ng=9.1.0=hdf63c60_0
    330   - libgdal=2.0.0=1
    331   - libgfortran=3.0.0=1
    332   - libgfortran-ng=7.3.0=hdf63c60_0
    333   - libiconv=1.15=h63c8f33_5
    334   - libkml=1.3.0=h590aaf7_4
    335   - liblapack=3.8.0=5_h6e990d7_netlib
    336   - libmagic=5.36=h14c3975_0
    337   - libmo_unpack=3.1.2=hf484d3e_1001
    338   - libnetcdf=4.6.1=h10edf3e_2
    339   - libogg=1.3.2=h7b6447c_0
    340   - libopenblas=0.2.20=h9ac9557_7
    341   - libopus=1.3=h7b6447c_0
    342   - libpng=1.6.37=hbc83047_0
    343   - libpq=11.2=h20c2e04_0
    344   - libsodium=1.0.16=h1bed415_0
    345   - libspatialindex=1.8.5=h20b78c2_2
    346   - libspatialite=4.3.0a=hb08deb6_19
    347   - libssh2=1.8.2=h1ba5d50_0
    348   - libstdcxx-ng=9.1.0=hdf63c60_0
    349   - libtheora=1.1.1=h5ab3b9f_1
    350   - libtiff=4.0.10=h2733197_2
    351   - libtool=2.4.6=h7b6447c_5
    352   - libuuid=2.32.1=h14c3975_1000
    353   - libvorbis=1.3.6=h7b6447c_0
    354   - libvpx=1.7.0=h439df22_0
    355   - libxcb=1.13=h1bed415_1
    356   - libxml2=2.9.9=he19cac6_0
    357   - libxslt=1.1.33=h7d1a2b0_0
    358   - linecache2=1.0.0=py27_0
    359   - llvmlite=0.29.0=py27hd408876_0
    360   - locket=0.2.0=py27_1
    361   - lxml=4.3.3=py27hefd8a0e_0
    362   - lz4-c=1.8.1.2=h14c3975_0
    363   - lzo=2.10=h49e0be7_2
    364   - make=4.2.1=h1bed415_1
    365   - mako=1.0.10=py_0
    366   - mapclassify=1.0.1=py27_1
    367   - markupsafe=1.1.1=py27h7b6447c_0
    368   - matplotlib=1.5.1=np111py27_0
    369   - mechanicalsoup=0.11.0=py_0
    370   - memory_profiler=0.55.0=py27_0
    371   - metpy=0.8.0=py27_0
    372   - mistune=0.8.4=py27h7b6447c_0
    373   - mo_pack=0.2.0=py27h3010b51_1003
    374   - mock=3.0.5=py27_0
    375   - monotonic=1.5=py_0
    376   - monty=0.9.6=py27_0
    377   - more-itertools=5.0.0=py27_0
    378   - mpc=1.1.0=h10f8cd9_1
    379   - mpfr=4.0.1=hdf1c602_3
    380   - mpi=1.0=mpich
    381   - mpich=3.2.1=hf39692e_8
    382   - mpmath=1.1.0=py27_0
    383   - msgpack-python=0.6.1=py27hfd86e86_1
    384   - multipledispatch=0.6.0=py27_0
    385   - multiprocessing=2.6.2.1=py27_0
    386   - munch=2.3.2=py27_0
    387   - mysql-connector-c=6.1.11=h597af5e_0
    388   - mysql-python=1.2.5=py27h7b6447c_0
    389   - natgrid=0.2=py27_2
    390   - nb_conda=2.2.1=py27_0
    391   - nb_conda_kernels=2.2.2=py27_0
    392   - nbconvert=5.5.0=py_0
    393   - nbformat=4.4.0=py27_0
    394   - nc-time-axis=1.2.0=py_0
    395   - ncurses=6.1=he6710b0_1
    396   - netcdf-fortran=4.4.4=h4363f12_9
    397   - netcdf4=1.3.1=py27h62672b6_4
    398   - netcdftime=1.0.0a2=py27_0
    399   - nettle=3.4.1=h1bed415_1002
    400   - networkx=2.2=py27_1
    401   - nomkl=3.0=0
    402   - nose=1.3.7=py27_2
    403   - notebook=5.7.8=py27_0
    404   - numba=0.44.1=py27h962f231_0
    405   - numcodecs=0.5.4=py27he6710b0_0
    406   - numexpr=2.6.9=py27h637b7d7_1000
    407   - numpy=1.11.3=py27_blas_openblash1522bff_1205
    408   - numpy-base=1.14.3=py27h2b20989_0
    409   - olefile=0.46=py27_0
    410   - openblas=0.3.3=h9ac9557_1001
    411   - openblas-devel=0.2.20=7
    412   - openh264=1.8.0=hdbcaa40_1000
    413   - openjpeg=2.3.0=h05c96fa_1
    414   - openssl=1.1.1c=h7b6447c_1
    415   - ossuuid=1.6.2=hf484d3e_1000
    416   - owslib=0.17.1=py_0
    417   - packaging=19.0=py27_0
    418   - pandas=0.23.4=py27h04863e7_0
    419   - pandoc=2.2.3.2=0
    420   - pandocfilters=1.4.2=py27_1
    421   - pango=1.39.0=0
    422   - param=1.9.1=py_0
    423   - partd=0.3.10=py27_1
    424   - pathlib=1.0.1=py27_1
    425   - pathlib2=2.3.3=py27_0
    426   - patsy=0.5.1=py27_0
    427   - pbr=5.1.3=py_0
    428   - pcre=8.43=he6710b0_0
    429   - pendulum=2.0.4=py27_1000
    430   - pep8=1.7.1=py27_0
    431   - pexpect=4.7.0=py27_0
    432   - pickleshare=0.7.5=py27_0
    433   - pillow=4.2.1=py27_0
    434   - pint=0.9=py27_2
    435   - pip=19.1.1=py27_0
    436   - pixman=0.32.6=0
    437   - pkg-config=0.29.2=h1bed415_8
    438   - pkginfo=1.5.0.1=py27_0
    439   - plotly=3.10.0=py_0
    440   - pluggy=0.12.0=py_0
    441   - pooch=0.5.1=py27_0
    442   - poppler-data=0.4.9=0
    443   - postgresql=11.2=h20c2e04_0
    444   - proj4=5.2.0=he6710b0_1
    445   - prometheus_client=0.6.0=py27_0
    446   - prompt_toolkit=1.0.15=py27_0
    447   - psutil=5.6.2=py27h7b6447c_0
    448   - psycopg2=2.7.6.1=py27h1ba5d50_0
    449   - pthread-stubs=0.3=h0ce48e5_1
    450   - ptyprocess=0.6.0=py27_0
    451   - py=1.8.0=py27_0
    452   - pybufr-ecmwf=0.82=py27_1
    453   - pycairo=1.10.0=py27_0
    454   - pycodestyle=2.5.0=py27_0
    455   - pycparser=2.19=py27_0
    456   - pyct=0.4.6=py27_0
    457   - pyct-core=0.4.6=py_0
    458   - pydap=3.2.2=py27_1000
    459   - pyepsg=0.4.0=py27_0
    460   - pygeoif=0.7=py_1
    461   - pygments=2.4.2=py_0
    462   - pygrib=2.0.2=py27he706d3e_4
    463   - pyhdf=0.10.1=py27h6053bd1_0
    464   - pykdtree=1.3.1=py27hdd07704_2
    465   - pyke=1.1.1=py27_1000
    466   - pyopenssl=19.0.0=py27_0
    467   - pyparsing=2.4.0=py_0
    468   - pyproj=1.9.6=py27h14380d9_0
    469   - pyqt=4.11.4=py27_3
    470   - pyresample=1.12.3=py27hf2d7682_0
    471   - pyrsistent=0.14.11=py27h7b6447c_0
    472   - pysal=1.14.4.post1=py27_1
    473   - pyshp=2.1.0=py_0
    474   - pysocks=1.7.0=py27_0
    475   - pyspharm=1.0.9=py27h6091dcd_1003
    476   - pytest=4.6.2=py27_0
    477   - python=2.7.16=h9bab390_0
    478   - python-dateutil=2.8.0=py27_0
    479   - python-ecmwf_grib=1.14.7=np111py27_0
    480   - python-editor=1.0.4=py_0
    481   - python-graphviz=0.10.1=py_0
    482   - python-magic=0.4.15=py27_1001
    483   - pytz=2019.1=py_0
    484   - pytzdata=2019.1=py_0
    485   - pywavelets=1.0.3=py27hdd07704_1
    486   - pyyaml=5.1=py27h7b6447c_0
    487   - pyzmq=18.0.0=py27he6710b0_0
    488   - qt=4.8.7=2
    489   - qtconsole=4.5.1=py_0
    490   - readline=7.0=h7b6447c_5
    491   - readme_renderer=24.0=py27_0
    492   - regex=2019.06.05=py27h7b6447c_0
    493   - regionmask=0.4.0=py_0
    494   - requests=2.22.0=py27_0
    495   - requests-toolbelt=0.9.1=py_0
    496   - retrying=1.3.3=py27_2
    497   - rtree=0.8.3=py27_0
    498   - s3transfer=0.2.0=py27_0
    499   - scandir=1.10.0=py27h7b6447c_0
    500   - scikit-image=0.13.1=py27_0
    501   - scikit-learn=0.20.3=py27_blas_openblashebff5e3_0
    502   - scipy=1.2.1=py27_blas_openblash1522bff_0
    503   - seaborn=0.9.0=py27_0
    504   - send2trash=1.5.0=py27_0
    505   - setuptools=41.0.1=py27_0
    506   - sh=1.12.14=py27_0
    507   - shapely=1.6.4=py27h86c5351_0
    508   - simplegeneric=0.8.1=py27_2
    509   - singledispatch=3.4.0.3=py27_0
    510   - sip=4.18=py27_1
    511   - six=1.12.0=py27_0
    512   - snappy=1.1.7=hbae5bb6_3
    513   - snuggs=1.4.6=py_0
    514   - sortedcontainers=2.1.0=py27_0
    515   - soupsieve=1.8=py27_0
    516   - sphinx=1.8.5=py27_0
    517   - sphinxcontrib=1.0=py27_1
    518   - sphinxcontrib-websupport=1.1.2=py_0
    519   - sqlalchemy=1.3.4=py27h7b6447c_0
    520   - sqlite=3.28.0=h7b6447c_0
    521   - statsmodels=0.9.0=py27h035aef0_0
    522   - subprocess32=3.5.4=py27h7b6447c_0
    523   - sympy=1.4=py27_0
    524   - tabulate=0.8.3=py27_0
    525   - tbb=2019.4=hfd86e86_0
    526   - tblib=1.4.0=py_0
    527   - terminado=0.8.2=py27_0
    528   - testpath=0.4.2=py27_0
    529   - tk=8.6.9=hed695b0_1002
    530   - tktable=2.10=h14c3975_0
    531   - toolz=0.9.0=py27_0
    532   - tornado=5.1.1=py27h7b6447c_0
    533   - tqdm=4.32.1=py_0
    534   - traceback2=1.4.0=py27_0
    535   - traitlets=4.3.2=py27_0
    536   - trmm_rsl=1.49=3
    537   - twine=1.13.0=py_1
    538   - typing=3.6.4=py27_0
    539   - tzcode=2019a=h516909a_1002
    540   - tzlocal=1.5.1=py27_0
    541   - udunits2=2.2.27.6=h4e0c4b3_1001
    542   - unittest2=1.1.0=py27_0
    543   - urllib3=1.24.2=py27_0
    544   - util-linux=2.21=0
    545   - vtk=7.0.0=py27_1
    546   - wcwidth=0.1.7=py27_0
    547   - webencodings=0.5.1=py27_1
    548   - webob=1.8.5=py27_0
    549   - wheel=0.33.4=py27_0
    550   - widgetsnbextension=3.4.2=py27_0
    551   - windspharm=1.7.0=py27_1000
    552   - wrapt=1.11.1=py27h7b6447c_0
    553   - x264=1!152.20180806=h14c3975_0
    554   - xarray=0.10.7=py27_0
    555   - xerces-c=3.2.2=h780794e_0
    556   - xlrd=1.2.0=py27_0
    557   - xorg-fixesproto=5.0=h14c3975_1002
    558   - xorg-imake=1.0.7=0
    559   - xorg-inputproto=2.3.2=h14c3975_1002
    560   - xorg-kbproto=1.0.7=h14c3975_1002
    561   - xorg-libice=1.0.9=h516909a_1004
    562   - xorg-libsm=1.2.3=h84519dc_1000
    563   - xorg-libx11=1.6.7=h14c3975_1000
    564   - xorg-libxau=1.0.9=h14c3975_0
    565   - xorg-libxaw=1.0.13=h14c3975_1002
    566   - xorg-libxdmcp=1.1.3=h516909a_0
    567   - xorg-libxext=1.3.4=h516909a_0
    568   - xorg-libxfixes=5.0.3=h516909a_1004
    569   - xorg-libxi=1.7.9=h516909a_1002
    570   - xorg-libxmu=1.1.3=h516909a_0
    571   - xorg-libxpm=3.5.12=h14c3975_1002
    572   - xorg-libxrender=0.9.10=h516909a_1002
    573   - xorg-libxt=1.1.5=h14c3975_1002
    574   - xorg-makedepend=1.0.6=he1b5a44_1
    575   - xorg-renderproto=0.11.1=h14c3975_1002
    576   - xorg-xextproto=7.3.0=h14c3975_1002
    577   - xorg-xproto=7.0.31=h14c3975_1007
    578   - xz=5.2.4=h14c3975_4
    579   - yaml=0.1.7=had09818_2
    580   - zarr=2.2.0=py_0
    581   - zeromq=4.3.1=he6710b0_3
    582   - zict=0.1.4=py27_0
    583   - zipp=0.5.1=py_0
    584   - zlib=1.2.11=h7b6447c_3
    585   - zstd=1.3.7=h0b5b093_0
    586   - pip:
    587     - mule==2017.8.1
    588     - um-utils==2017.8.1
    589 }}}
    590 
    591 == Useful information ==
    592 
    593 * [https://code.metoffice.gov.uk/trac/sciencetools/wiki/RetoolingForecastingSuites Trial and Evaluation Suites - Retooling Project]
    594   * [https://code.metoffice.gov.uk/trac/sciencetools/wiki/EvalSuiteMeetings Evaluation Suite Meetings]
    595     * [https://code.metoffice.gov.uk/trac/sciencetools/wiki/EvalSuite16 23rd May 2019: Sixteenth Evaluation Suites meeting]
    596     * [https://code.metoffice.gov.uk/trac/sciencetools/wiki/ESmeeting1 30th May 2019: Evaluation Suites developers meeting to consider how best to align RES and GES]
    597 
    598 * [https://code.metoffice.gov.uk/trac/TI/wiki/TISD/checkPoints/0519 TISD (Suites & Data) project meeting - 8 May 2019]
    599 
    600 == Things to do ==             
    601 
    602 * Ask Mike Thurlow and Adam Martins what version of scitools were used in global and GES suites
     1 Page moved to [wiki:access/BomAccessDocumentation/bom-conda]