Skip to main content

Integrated computational framework for electronic band structure reconstruction and parametrization

Project description

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},
}

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

fuller-2.0.0.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fuller-2.0.0-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file fuller-2.0.0.tar.gz.

File metadata

  • Download URL: fuller-2.0.0.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fuller-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4ebea3024839060c75fbd53635a371b7f8d36310a6c9f55dc50451c2c51047bb
MD5 98155ba96c69c33babb6cecd04f3e06a
BLAKE2b-256 89d2e86c5d14153e15f06e6ebc1f3e14891fa6ecbe8d9e793aeb9459f0521849

See more details on using hashes here.

Provenance

The following attestation bundles were made for fuller-2.0.0.tar.gz:

Publisher: release.yml on mpes-kit/fuller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fuller-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: fuller-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fuller-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0981ac2e71261ad7b0a9ea762da25017b2f1b1bddfceff10d55a7fbfda45e043
MD5 7987a208d20464576f4e186a5c71441b
BLAKE2b-256 a568cf4052ca7ca677a21c6aece82c1efbb8068c25293966269164eac8a7021e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fuller-2.0.0-py3-none-any.whl:

Publisher: release.yml on mpes-kit/fuller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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