1. Installation

1.1. Generalities

Hazel v2.0 is a Python 3 module with some wrapped compiled Fortran routines. It should be pretty easy to install once you have a working compiler in your system.

There are different ways to install Hazel v2.0, but the best is to install it into a virtual environment either with pip or conda, which makes everything much more safer, plus making sure that all packages are installed for the code. For example, once you have installed Miniconda, you can generate a new environment and install the dependencies (you can install whatever version of Python 3 you desire). For consistency, it is better to use the gfortran compilers from Anaconda. In the following we show how install all packages with Anaconda. Anyway, feel free to use the gfortran compiler from your system but you might have some issues.

For a Linux OS, type:

conda create -n hazel_env python=3.10
conda activate hazel_env
conda install -c conda-forge cython numpy h5py tqdm scipy astropy mpich mpi4py configobj gfortran_linux-64 gcc_linux-64 asciitree

A different version of Python can be installed in the environment. For Mac OS, type:

conda create -n hazel_env python=3.10
conda activate hazel_env
conda install -c conda-forge cython numpy h5py tqdm scipy astropy mpich mpi4py configobj gfortran_osx-64 gcc_osx-64 asciitree

The specific packages for the Fortran and C compilers might change depending on the version of Anaconda that you have installed in your system. Their name might also be gfortran and gcc or simply compilers. Feel free to add matplotlib for doing some plots. You will need it if you want to run some of the examples shown in this documentation in your computer.

If you also want to use the GUI, you need to add two new dependencies:

conda create -n hazel_env python=3.10
conda activate hazel_env
conda install -c conda-forge cython numpy h5py tqdm scipy astropy mpich mpi4py configobj gfortran_linux-64 gcc_linux-64 matplotlib pyqt asciitree

Remember to add ipython if you are using this shell to run Hazel v2.0. Otherwise, it will use ipython from another environment and you can get confused.

If you want to use the NLTE neural option for synthesizing the Ca II 854.2 nm line, the packages pytorch, pytorch_geometric and pytorch-scatter should be installed. Take a look at the documentation for PyTorch , PyTorch Geometric PyTorch Scatter for more information. A typical installation using pip can be done using:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install torch_geometric
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.2.0+cpu

1.2. Installation from source

Since Hazel v2.0 is still in a heavy development phase, the only possible way of installing the code is via compilation of the sources. Once your environment is activated (or in your base environment if you prefer not to use a different environment), the sources can be installed by cloning this repository and installing it:

git clone https://github.com/aasensio/hazel2
python setup.py install

Do not forget to often pull from the repository and recompile the code by typing the following from the location of the sources:

git pull
python setup.py install

Improvements are pushed all the time in Hazel v2.0. In case you do not want to reinstall it after every pull or you are in fact helping on the development of the code, you can also install it in develop mode:

git pull
python setup.py develop

1.3. Requirements

Hazel v2.0 depends on the following external packages, that should be pretty straightforward to install:

  • numpy

  • h5py

  • scipy

  • astropy

  • mpich

  • mpi4py

  • configobj

  • tqdm

  • asciitree

If you want to use the GUI, you also need to install the following dependencies:

  • matplotlib

  • pyqt5

All of them can be installed in Anaconda with:

conda install numpy h5py scipy astropy mpi4py configobj tqdm pyqt maplotlib

1.4. Container

A simple way of installing Hazel v2.0, at least in Linux systems or supercomputers, is to use this Apptainer container. This container has all the dependencies installed and it is ready to be used. You can download it (we try to keep this version as updated as possible) and run it with Apptainer as:

apptainer run hazel.sif python invert.py

In principle, you can build your own container by going to the apptainer directory in the distribution and running:

apptainer build hazel.sif hazel.def

1.5. For developers

Remember that if you want to be involved in the development of the code, it is perhaps more useful to install the code using

python setup.py develop

so that you can immediately test the changes to the code. This development version can be uninstalled by typing:

python setup.py develop --uninstall

1.6. Documentation

For the compilation of the docs, you will need the following packages:

sphinx numpydoc sphinx_rtd_theme nbsphinx

1.7. Issues

MacOSX Catalina has some issues with the paths to the include files. Defining the following environment variables might help.

export CFLAGS="-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
export CCFLAGS="-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
export CXXFLAGS="-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
export CPPFLAGS="-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"

1.8. Supercomputers

Configuring Hazel v2.0 for running in supercomputers should be easy. We recommend to locally create an Anaconda installation with the needed packages and follow the details given by the supercomputer staff.