Skip to main content

Code for simulating EXAFS calculations from molecular dynamics trajectories or normal modes using FEFF

Project description


Expectra is program to simulate EXAFS from the outputs of molecular dynamics simulations. It also has the ability to to sample structures based on a harmonic potential generated from a normal modes calculation.

The EXAFS multiple scattering calculations are performed using FEFF6-lite, which was written at the University of Washington by J.J. Rehr and co-workers.1

  1. J.J. Rehr, S.I. Zabinsky and R.C. Albers, “High-order multiple scattering calculations of x-ray-absorption fine structure”, Phys. Rev. Lett. 69, 3397 (1992).


  • gfortran

  • MPI (e.g. OpenMPI or MPICH)

  • Python

    • numpy

    • mpi4py

    • ASE


This program is distributed as a Python package. It requires a Fortran compiler (e.g. gfortran) to build the FEFF6-lite program that is redistributed with the code. A MPI library (e.g. OpenMPI) is also required.

The first step is to install Python, GFortran, and MPICH. On Ubuntu this can be accomplished like so:

$ sudo apt-get install build-essential gfortran mpich python python-pip

Once the dependencies are installed expectra (and the Python packages it depends on) can be installed using pip:

$ pip install --user expectra


usage: expectra [-h] [--first-shell] [--neighbor-cutoff DISTANCE]
                [--multiple-scattering] [--rmax DISTANCE] [--S02 FACTOR]
                [--energy-shift ENERGY] [--absorber ELEMENT]
                [--ignore-elements ELEMENTS] [--edge EDGE] [--skip SKIP]
                [--every EVERY]
                TRAJ [TRAJ ...]

positional arguments:
  TRAJ                  trajectory file (POSCAR, con, xyz)

optional arguments:
  -h, --help            show this help message and exit
  --first-shell         a single scattering calculation that uses an
                        automatically calculated reference path (default:
  --neighbor-cutoff DISTANCE
                        1st neighbor cutoff distance (default: 3.4)
  --rmax DISTANCE       maximum scattering half-path length
  --S02 FACTOR          amplitude reduction factor
  --energy-shift ENERGY
                        energy shift to apply in eV
  --absorber ELEMENT    atomic symbol of the xray absorber
  --ignore-elements ELEMENTS
                        comma delimited list of elements to ignore in the
                        scattering calculation
  --edge EDGE           one of K, L1, L2, L3
  --skip SKIP           number of frames to skip at the beginning
  --every EVERY         number of frames to between each step

Installing from source

If installing Expectra from source instead of pip, clone the source code from GitHub:

git clone

After all the dependency requirements have been satisfied, build the feff binary, and move it to expectra/expectra/:

cd expectra/feff

# To use ifort instead of gfortran, set FC=ifort in ./Makefile

make clean
make  # should create the feff binary

mv ./feff ../expectra

Finally, set relevant environmental variables (assuming Expectra was installed at $HOME):

# consider including these in ~/.bash_profile, ~/.profile, or ~/.bashrc
export PATH=$HOME/expectra/bin:$PATH

Note from developers

Expectra was recently migrated from Python2 to Python3. Please report any bugs to

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

expectra-1.0.5.tar.gz (116.1 kB view hashes)

Uploaded Source

Built Distribution

expectra-1.0.5-py3-none-any.whl (129.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page