Git Product home page Git Product logo

mpes-kit / fuller Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 1.0 21.49 MB

Probabilistic machine learning for reconstruction and parametrization of electronic band sturcture from photoemission spectroscopy data

Home Page: https://mpes-kit.github.io/fuller/

License: MIT License

Python 34.90% Jupyter Notebook 65.10%
reconstruction markov-random-field photoemission machine-learning arpes probabilistic-graphical-models inference mpes band-structure fitting

fuller's Introduction

fuller

License PyPI Version Downloads

Integrated computational framework for electronic band structure reconstruction and parametrization, powered by probabilistic machine learning

Introduction

This Python package comprises a set of tools to reconstruct and parametrize the electronic band structure (EBS) from photoemission spectroscopy data. It implements the Markov Random Field model introduced in Xian & Stimper et al. (2020) in TensorFlow.

Methods of installation

The latest version of the package can be installed via pip

pip install --upgrade git+https://github.com/mpes-kit/fuller.git

Alternatively, download the repository and run

python setup.py install

Install directly from PyPI

pip install fuller

Requirements

Apart from the packages specified in the requirements.txt file, tensorflow is needed. Installation instructions can be found at the official webpage. The package works with the CPU only and GPU supported version of the framework. Currently, only version TensorFlow 1 (1.14 onwards) is supported, but we are working on porting it to TensorFlow 2.

Sample dataset

As a model system to demonstrate the effectiveness of the methodology we worked on 3D photoemission data of the semiconductor tungsten diselenide (WSe2). It resolve the momentum along the x- and y- axis (kx and ky) and the energy.

Reconstruction

All 14 valence band of WSe2 are visible in the dataset. The optimization was initialized by DFT calculation with HSE06 hybrid exchange-correlation functional. The results are shown in the figure below.

Valence bands of tungsten diselenide reconstructed using MRF model

Documentation

Complete API documentation is provided here.

Preprocessing and Reconstruction

Class MrfRec

The MrfRec class is of central importance for reconstruction as well as preprocessing the data. To reconstruct the EBS create a MrfRec object and use its methods to perform the algorithms and plot the results. Here, we list a selection of the most important methods of the class. For further illustration on how to use the class check out the mpes_reconstruction_mrf.ipynb notebook in the example folder.

__init__
def __init__(E, kx=None, ky=None, I=None, E0=None, eta=0.1, includeCurv=False, etaCurv=0.1):
    ...
  • E: Energy as 1D numpy array
  • kx: Momentum along x axis as 1D numpy array, if None it is set to 0
  • ky: Momentum along y axis as 1D numpy array, if None it is set to 0
  • I: Measured intensity wrt momentum (rows) and energy (columns), generated if None
  • E0: Initial guess for band structure energy values, if None the median of E is taken
  • eta: Standard deviation of neighbor interaction term
  • includeCurv: Flag, if true curvature term is included during optimization
  • etaCurv: Standard deviation of curvature term
iter_para
def iter_para(num_epoch=1, updateLogP=False, use_gpu=True, disable_tqdm=False, graph_reset=False):
    ...

Hereby, the parallel optimization of Markov Random Field model can be performed to reconstruct an electronic band.

  • num_epoch: Number of epochs to perform
  • updateLogP: Flag, if true logP is updated every half epoch (requires more computations)
  • use_gpu: Flag, if true gpu is used for computations if available
  • disable_tqdm: Flag, it true no progress bar is shown during optimization
  • graph_reset: Flag, if true Tensorflow graph is reset after computation to reduce memory demand
normalizeI
def normalizeI(kernel_size=None, n_bins=128, clip_limit=0.01, use_gpu=True, threshold=1e-6):
    ...

This performs Multidimensional Contrast Limited Adaptive Histogram Equalization (MCLAHE), introduced in Stimper et al. 2019. The method is a wrapper for the TensorFlow implementation of the mclahe function.

  • kernel_size: Tuple of kernel sizes, 1/8 of dimension lengths of x if None
  • n_bins: Number of bins to be used in the histogram
  • clip_limit: Relative intensity limit to be ignored in the histogram equalization
  • use_gpu: Flag, if true gpu is used for computations if available
  • threshold: Threshold below which intensity values are set to zero

Citation

If you are using this package within your own projects, please cite it as

R. P. Xian, V. Stimper, M. Zacharias, S. Dong, M. Dendzik, S. Beaulieu, B. Schölkopf, M. Wolf, L. Rettig, C. Carbogno, S. Bauer, and R. Ernstorfer, "A machine learning route between band mapping and band structure," arXiv:2005.10210, 2020.

Bibtex code

@article{Xian2020,
    author={R. P. Xian and V. Stimper and M. Zacharias and S. Dong and M. Dendzik and S. Beaulieu and
            B. Schölkopf and M. Wolf and L. Rettig and C. Carbogno and S. Bauer and R. Ernstorfer},
    journal={arXiv:2005.10210},
    title={A machine learning route between band mapping and band structure},
    year={2020},
}

fuller's People

Contributors

realpolitix avatar vincentstimper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

julyzr

fuller's Issues

No package named bandana found.

When using fuller-generator-visualize, I met a Python package named bandana that I couldn't find.
Could you give me some suggestion?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.