Table of Contents

JYP's Python distribution (2024-03)

[ Back to all versions ]

If you have questions about Python, read:

Using JYP's distribution

If you only need to use this distribution, just use the following steps and then read the What should I do now? section below.

There are more details on this page if you want to install a similar distribution yourself

Server tcsh bash
LSCE source ~jypeter/.conda3_jyp_2024-03.csh source ~jypeter/.conda3_jyp_2024-03.sh
spirit[x] source ~jypmce/.conda3_jyp.csh
n/a
source ~jypmce/.conda3_jyp.sh
n/a

What should I do now?

You just want to use the installed distribution

You are ready if you have typed the conda activate command specified in the previous section!

You want to replicate this distribution on your own server or a desktop/laptop

Read the next sections of this web page

There are some slight differences depending on how and where you want to install this distribution:

The notes at the beginning of each section will tell you if you can skip the section if you are just installing for you

What's New in JYP's 2024-03 distribution?

Installation with Miniconda3

Installing Miniconda3

If Miniconda3 is not already installed, or if you want to start over with a brand new (or clean) version of Miniconda3, read JYP steps for installing Miniconda3.

Installing CDAT 8.2.1

Prerequisites

We first check that we have indeed access to a (mini)conda installation (the base environment we get if we have correctly installed miniconda3), and we assume that we have a write-access to the conda disk hierarchy, and a few Gb of disk space available

 > conda env list | grep base
base                  *  /home/share/unix_files/cdat/miniconda3_21-02

 > df -h  /home/share/
Filesystem      Size  Used Avail Use% Mounted on
prolix3:/share  917G  245G  626G  29% /home/share

 > du -sh /home/share/unix_files/cdat/miniconda3_21-02
577M    /home/share/unix_files/cdat/miniconda3_21-02

We can also use conda env list and remove some obsolete versions with conda remove -n obsolete_environment --all, in order to free up some space

Python 2.7 version

Python 2.x is deprecated in CDAT, starting with CDAT 8.2.1.

If you still need to use python 2.7, please use CDAT 8.1

Python 3.8 version

It's possible that, when using the tcsh shell and trying to use the conda create -n cdat-8.2.1_py3 lots_of_parameters_with_wildcards line, you will get the following error message:

conda: No match

Apparently the tcsh version of conda does not like wildcards too much (CSH install/search fail with '*' variable in an argument)…

In that case, just type bash and run the installation command in a bash shell

The installation line below is based on information from the CDAT wiki page. See also Some questions and notes about 8.2.1 installation

bash-4.2$ conda config --env --add channels conda-forge
bash-4.2$ conda config --set channel_priority strict
bash-4.2$ cat .condarc
channels:
  - conda-forge
  - defaults
$ conda config --describe channel_priority

$ conda create -n cdat-8.2.1_nompi_py3 -c conda-forge -c cdat/label/v8.2.1 cdat "libnetcdf=*=nompi_*" "mesalib=18.3.1" "python=3"
$ conda create -n cdat-8.2.1_py3 -c conda-forge -c cdat/label/v8.2.1 cdat "libnetcdf=*=mpi_openmpi_*" "mesalib=18.3.1" "python=3"

Resulting list of installed packages

Some extra installation notes

Cloning the base CDAT environment before adding specific packages for LSCE

You can skip this section if you are installing CDAT just for one user (yourself) on a Linux machine (or a Windows 10 machine with WSL)

You will directly make changes and install packages in your main python environment

This section is about the creation of the cdatm19 environment

Notes about actually using the cdatm19 conda-based python

Notes:

$ conda create -n cdatm19_py3 --clone cdat-8.2.1_py3
$ cd /home/share/unix_files/cdat/miniconda3_21-02/envs
$ du -sh cdat-8.2.1_py3 cdatm19_py3
2.5G    cdat-8.2.1_py3
538M    cdatm19_py3

Getting ready for a moving default CDAT environment

You can skip this section if you are installing CDAT just for one user (yourself) on a Linux machine (or a Windows 10 machine with WSL)

You will directly make changes and install packages in your main python environment

This step could probably be listed at the end, especially in a multi-user environment!

If there is already a cdatm_py3 link (pointing to an older environment), make sure that the new CDAT environment is stable and working correctly before updating the cdatm_py3 link

We create a cdatm_py3 symbolic link in the envs directory, that has a stable name but can be moved to point to the latest default (and hopefully stable) CDAT environment. In that case, most users can just activate this cdatm_py3 environment and always get the latest stable version.

$ cd /home/share/unix_files/cdat/miniconda3_21-02/envs
$ ln -s cdatm19_py3 cdatm_py3

conda env list
# conda environments:
#
base                  *  /home/share/unix_files/cdat/miniconda3_21-02
cdat-8.2.1_py3           /home/share/unix_files/cdat/miniconda3_21-02/envs/cdat-8.2.1_py3
cdatm19_py3              /home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm19_py3
cdatm_py3                /home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm_py3

$ ls -l /home/share/unix_files/cdat/miniconda3_21-02/envs/
drwxr-xr-x [...] cdat-8.2.1_py3/
drwxr-xr-x [...] cdatm19_py3/
lrwxrwxrwx [...] cdatm_py3 -> cdatm19_py3/

Customizing CDAT for LSCE

A quick test of cdms2 and vcs

You can use the quick test shown in To Test Your CDAT Installation, and check if you get the expected png file

You can also check the Testing vcs section of the LSCE installation of CDAT 8.1

Downloading cdms2/vcs test data

You should download the test data (174M of data…) and use it in the example scripts that you want to distribute, and scripts you write for reporting the errors you find (if any…). The downloaded data files will be available in: vcs.sample_data

$ conda activate cdatm19_py3

(cdatm19_py3) $ python -c 'import vcs; vcs.download_sample_data_files(); print("\nFinished downloading sample data to " + vcs.sample_data)'
[...]
Finished downloading sample data to /home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm19_py3/share/cdat/sample_data

(cdatm19_py3) $ du -sh /home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm19_py3/share/cdat/sample_data
174M    /home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm19_py3/share/cdat/sample_data

$ python
>>> import os, vcs
>>> vcs.sample_data
'/home/jypeter/miniconda3_21-02/envs/cdat-8.2.1_py3/share/cdat/sample_data'

>>> os.listdir(vcs.sample_data)
['BlueMarble.ppm', 'clt.nc', 'geo.1deg.ctl', 'geo.1deg.gmp', 'geo.1deg.grb', ...]

Packages that have no dependency problems

After cloning, we are ready to install some extra (e.g. not directly related to CDAT) packages that may be useful to LSCE users

Pre-installation check with the dry-run option

/usr/bin/time mamba install -n cdatm19_nompi_py3 --dry-run -c conda-forge basemap basemap-data basemap-data-hires cartopy cmocean cmor ferret_datasets gdal gdal geopandas glances gsw iris joblib netcdf4 palettable pandas pillow pyferret rpy2 scikit-image scikit-learn seaborn seawater shapely spyder statsmodels windspharm wrf-python xarray xlsxwriter

[... lots of information about what would be done followed by some information about how long it took ...]

  Summary:

  Install: 167 packages
  Downgrade: 3 packages

  Total download: 474 MB

DryRunExit: Dry run. Exiting.

8.31user 0.51system 0:11.45elapsed 77%CPU

Actual installation

/usr/bin/time mamba install -n cdatm19_nompi_py3 -c conda-forge basemap basemap-data basemap-data-hires cartopy cmocean cmor ferret_datasets gdal gdal geopandas glances gsw iris joblib netcdf4 palettable pandas pillow pyferret rpy2 scikit-image scikit-learn seaborn seawater shapely spyder statsmodels windspharm wrf-python xarray xlsxwriter

Resulting list of installed packages

Extra packages installed with pip

Packages with no dependency problems and were added (or updated) later

TODO

Add here packages that would be useful and have not been installed yet, or have some problems that prevent their installation

Other packages

There is no warranty that the packages listed below will work correctly, because it was required to bypass the compatibility checks in order to install them…

Updating some packages

Some packages change more often than others, and can be easily updated the following way:

Cleaning up things

Some packages may have files that can only be read by the person who installed CDAT and the LSCE extensions (eg pcmdi-metrics in 2.8.0 and cdp in 2.10)

We check if some of the installed files are missing read access for the group or other, and we manually change the permissions

 >find /home/share/unix_files/cdat/miniconda3/envs \! -perm /g+r,o+r -ls
# Everything OK!

Extra packages list

Do not forget to add the following packages to the future environments

  • cxx-compiler: a metapackage to obtain a C++ compiler
  • f90nml: a Fortran namelist parser, generator, and editor
  • flake8: your Tool For Style Guide Enforcement
  • Loguru: a library which aims to bring enjoyable logging in Python
  • pot: Python Optimal Transport
    This open source Python library provides several solvers for optimization problems related to Optimal Transport for signal, image processing and machine learning
  • pybind11: a lightweight header-only library that exposes C++ types in Python and vice versa
  • ruff: An extremely fast Python linter and code formatter, written in Rust
  • xrft: Fourier transforms for xarray data
  • zarr: a file storage format for chunked, compressed, N-dimensional arrays based on an open-source specification

FIXME: need to clean the list below, and move the packages to the ordered list further down

The extra packages below are (more or less) listed in package name alphabetical order. These are the extra packages that we explicitly installed, but there are many more packages installed (e.g. cdatm19_nompi_py3_21-03-06.txt)!

Initialize the environment and type conda list if you need an up-to-date list, including the packages' version and where they came from (conda-forge for most packages

Removed packages

Packages NOT supported in Python3

Environments summary

After following the steps above, we get the following environments. Use the conda env list command (same result as conda info --envs) to get the up-to-date list of available environments.

Use conda list -n env_name to get a detailed list of which packages/modules are installed, or check the conda Installation history section to get more details

Environment
name
Server Summary
cdat-8.2.1_py3 LSCE
ciclad
CDAT 8.2.1 & Python 2.7
cdat-8.2.1_py3 LSCE CDAT 8.2.1 & Python 3.6
cdatm19_py3
or cdatm_py3
LSCE
ciclad
CDAT 8.2.1 & P 2.7 JYP version
cdatm19_py3
or cdatm_py3
LSCE CDAT 8.2.1 & P 3.7 JYP version





[ PMIP3 Wiki Home ] - [ Help! ] - [ Wiki syntax ]