Tommaso-Pincelli / mpes

Distributed data processing routines for multidimensional photoemission spectroscopy (MPES)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mpes

Build Status

Python-based data processing routines for multidimensional photoemission spectroscopy (MPES). An upgrade of the time- and angle-resolved photoemission spectroscopy (trARPES).

In a photoemission process, an extreme UV or X-ray photon liberates an electron from the confines of the electronic potential within the material. ARPES directly measures the electronic energy and momentum parallel to the surface of the sample under study to infer the electronic states of the material. For a tutorial review on ARPES and its applications in physics and material science, see here. The data structure of ARPES is a stack of 2D images measured at different sample geometries, which are used to reconstruct the full static 3D band structure of the material.

TrARPES is an emerging technique that combines state-of-the-art ultrafast laser systems (~ fs resolution) with an existing ARPES experimental setup. TrARPES studies light-induced electronic dynamics such as phase transition, exciton dynamics, reaction kinetics, etc. It adds a time dimension, usually on the order of femtoseconds to nanoseconds, to the scope of ARPES measurements. Due to complex electronic dynamics, various coupling effects between the energy and momentum dimensions come into play in time. A complete understanding of the multidimensional time series from trARPES measurements can reveal dynamic constants crucial to the understanding of material properties and aid in simulation, design and further device applications.

The package supports file I/O of standard file formats (.pxp and .ibw) from Igor Pro, the "native language" of photoemission data analysis. Recently, the support for hdf5 files is added.

Installation

  1. Install from scratch
pip install git+https://github.com/mpes-kit/mpes.git
  1. Upgrade existing installation
pip install --upgrade git+https://github.com/mpes-kit/mpes.git

PyPI installation coming soon...

Documentation

Documentation and examples are posted here.

Dependencies

numpy = 0.13.0 +
scipy = 0.19.0 +
scikit-image = 0.13.0 +
pandas = 0.19.2 +
mayavi = 4.5.0 +
dask >= 0.18.0
xarray
opencv

Overview of submodules

The mpes package contains the following major submodules. They are listed here along with suggested import conventions

import mpes.fprocessing as fp  
import mpes.analysis as aly
import mpes.visualization as vis

Using mayavi in Jupyter notebook

For 3D rendering of multidimensional dataset, the mpes package takes advantage of the recent version of mayavi (4.5.0 and above) with jupyter notebook support through x3dom. Follow the steps below on the command line to allow mayavi output to be displayed on jupyter/ipython notebook

  1. Install mayavi using the whl distribution here
  2. Install mayavi extension for Jupyter notebook
jupyter nbextension install --py mayavi --user
  1. Enable the mayavi extension (this may give an error, but proceed nevertheless)
jupyter nbextension enable mayavi --user --py
  1. When starting Jupyter notebook, set the backend to qt and increase the data I/O rate
jupyter notebook --NotebookApp.iopub_data_rate_limit=1e10 --gui=qt
  1. Enable immediate display of mayavi figures explicitly in Jupyter notebook
from mayavi import mlab
mlab.init_notebook('x3d')  # Interactive rendering
or mlab.init_notebook('png')  # Static rendering

To reduce the installation requirements, mayavi is not loaded at start. Use mpes built-in functions to switch on/off mayavi display

import mpes.visualization as vis
vis.toggle3d(state=True, nb_backend)  # Switch on, nb_backend can be 'x3d', 'png', or blank
vis.toggle3d(state=False)  # Switch off

About

Distributed data processing routines for multidimensional photoemission spectroscopy (MPES)

License:MIT License


Languages

Language:Python 100.0%