Using *conda to provide python dependencies for esoreflex

The following is a step-by-step guide to setting up a conda environment for esoreflex.


The following assumes that esoreflex and the pipelines you want are already installed. See the Pipeline pages at http://eso.org/sci/software/pipelines/index.html  if you need help with that.


Currently ESO provides binary packages for: 

  • Fedora (28 to 32) 
  • CentOS 7 
  • Scientific Linux 7 
  • macOS (10.14 to 10.15 and 11) 


Note that for other macOS versions, the MacPorts repository can still be used, but the packages will be built locally on your machine, rather than directly installing the binary packages provided by the ESO package repositories.


If your operating system + version/distribution combination is one of those currently supported by ESO's package repositories then we strongly recommend you use the appropriate package manager (RPM for Linux and MacPorts for macOS) to install the pipelines, esoreflex and workflows. Using the package managers will automatically install all other required software dependencies, including python and the following should not (in most cases) be necessary.



Before starting, please note that lines formatted like the following:


ls


mean that you should execute the command (preferably by copy/paste) in a terminal. In general it is safest to copy them line by line, but note some commands are broken onto multiple lines by a '\' character at the end of the line, in this case copy/paste all sequential lines ending in '\' plus the next line with no '\' at the end of the line.


The following assumes that your shell is bash, so if you do not use bash shell, or if you are not sure which shell you use type


bash


now...


If you don't already have a *conda installation, we suggest installing miniconda.


Under Linux, miniconda is available via RPM/apt package directly from conda.io (recommended) see:


  https://docs.conda.io/projects/conda/en/latest/user-guide/install/rpm-debian.html


or via third-party sources (e.g. EPEL).


for macOS it is possible to install miniconda as follows:


cd /tmp

MoL=$(uname -s | sed -e 's/Darwin/MacOSX/')

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-${MoL}-x86_64.sh

chmod u+x ./Miniconda3-latest-${MoL}-x86_64.sh

./Miniconda3-latest-${MoL}-x86_64.sh


Note, to avoid setting the *conda environment as your default environment, at the following prompt near the end of the installation:


Do you wish the installer to initialize Miniconda3

by running conda init? [yes|no]

[yes] >>>


Answer no.


Now assuming *conda is already installed, activate if not already activated:


eval "$(${HOME}/miniconda3/bin/conda shell.bash hook)"


Note: if conda is not installed in your ${HOME} directory, please change the "${HOME}" part above into the full path of the installation directory.


Now with conda activated and esoreflex already installed, assuming that the “esoreflex” command can be found in the PATH then do:


ESOREFLEX_INSTALL_DIR=$(dirname $(dirname "$(which esoreflex)"))


Create a *conda esoreflex environment


ESOREFLEX_ENV_NAME=esoreflex

conda create -n ${ESOREFLEX_ENV_NAME} python=3.6 matplotlib "wxpython>=4.0,<4.1" astropy

Notes:

  • wxPython=4.1 does not work (currently [2020-10-09] only available via pip, Jira ticket submitted)
  • python3.8 doesn’t work (conflicts between the packages python.app matplotlib wxpython astropy)


Configure esoreflex to use the esoreflex *conda environment


conda activate ${ESOREFLEX_ENV_NAME}

Please follow the instructions below, as appropriate for your operating system/distribution.

Choose your platform:



astroscrappy & PyCosmic for giraffe:

conda install scipy

pip install https://files.pythonhosted.org/packages/source/a/astroscrappy/astroscrappy-1.0.8.tar.gz

curl -O ftp://ftp.eso.org/pub/usg/PyCosmic/PyCosmic-0.5.3.tar.gz

pip install PyCosmic-0.5.3.tar.gz 


scikit-learn for muse-zap:

conda install scikit-learn


Deactivate the conda esoreflex environment:

conda deactivate


Deactivate the conda base environment (optional):

conda deactivate


Note, once you’ve performed the above procedure, you do not need to activate the esoreflex conda or base conda environment to use esoreflex, you can simply execute from any environment.


esoreflex


Instrument selector