Setting up Yambo

From The Yambo Project
Revision as of 09:41, 14 September 2023 by Davide (talk | contribs) (Created page with details about the installation of yambo)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Setting up Yambo, yambopy (and eventually QE or abinit)

To be able to follow the school you need a running version of the yambo, yambopy (and QE or abinit codes).

There are several different ways to prepare a working environment.

Virtual Machine(s)

The easiest way is to access to a virtual machine which contains both (i) yambo/QE and (ii) the tutorials.

You can do it in one of two ways:

  • Virtual machine via ICTP cloud If the schools you are attending provided an ICTP virtual machine this is the preferred option. It works through internet connection inside a browser.
  • Install the yambo virtual machine on your laptop / desktop. This requires Oracle virtual box. Pre-download of the Virtual machine. No internet connection needed.

User installation

You can also setup the yambo code on your on laptop / desktop using different methods.

As far as the Yambo source is concerned you can:

Yambo User Installation with Anaconda

It is possible to install Yambo (up to v5.0.4) and Quantum-ESPRESSO via conda-forge (a conda channel/repository): To setup Anaconda, please start from installing Anaconda or Miniconda.

Then we suggest to create a conda environment and activate it:

conda create --name yambopy -c conda-forge
conda activate yambopy

Then you can install the prerequisites and the two codes:

conda install numpy scipy netcdf4 matplotlib pyyaml lxml pandas
conda install yambo 
conda install qe

Setting up Yambopy

Quick installation

A quick way to start using Yambopy is described here.

  • Make sure that you are using Python 3 and that you have the following python packages: numpy, scipy, matplotlib, netCDF4, lxml, pyyaml. Optionally, you may want to have abipy [[1]] installed for band structure interpolations.
  • Go to a directory of your choice and clone yambopy from the git repository
git clone https://github.com/yambo-code/yambopy.git

If you don't want to use git, you may download a tarball from the git repository instead.

  • Enter into the yambopy folder and install
cd yambopy
sudo python setup.py install

If you don't have administrative privileges (for example on a computing cluster), type instead

cd yambopy
python setup.py install --user

Installing dependencies with Anaconda

We suggest installing yambopy using Anaconda [[2]] to manage the various python packages.

In this case, you can follow these steps.

First, install the required dependencies:

conda install numpy scipy netcdf4 lxml pyyaml

Then we create a conda environment based on python 3.6 (this is to ensure compatibility with abipy if we want to install it later on):

conda create --name NAME_ENV python=3.6

Here choose NAME_ENV as you want, e.g. yenv.

Now, we install abipy and its dependency pymatgen using pip. Here make sure that you are using the pip version provided by Anaconda and not your system version.

pip install pymatgen
pip install abipy

Finally, we are ready to install yambopy:

git clone https://github.com/yambo-code/yambopy.git 

(or download and extract tarball) and follow the steps outlined in the quick installation section.

Now enter into the yambopy folder and install

cd yambopy
sudo python setup.py install

If you don't have administrative privileges (for example on a computing cluster), type instead

cd yambopy
python setup.py install --user

Frequent issues

When running the installation you may get a SyntaxError related to utf-8 encoding or it may complain that module setuptools is not installed even though it is. In this case, it means that the sudo command is not preserving the correct PATH for your python executable.

Solve the problem by running the installation step as

sudo /your/path/to/python setup.py install

or

sudo env PATH=$PATH python setup.py install

This applies only to the installation step and not to subsequent yambopy use.