fuller
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.
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 arraykx: Momentum along x axis as 1D numpy array, ifNoneit is set to 0ky: Momentum along y axis as 1D numpy array, ifNoneit is set to 0I: Measured intensity wrt momentum (rows) and energy (columns), generated ifNoneE0: Initial guess for band structure energy values, ifNonethe median ofEis takeneta: Standard deviation of neighbor interaction termincludeCurv: Flag, if true curvature term is included during optimizationetaCurv: 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 performupdateLogP: Flag, if true logP is updated every half epoch (requires more computations)use_gpu: Flag, if true gpu is used for computations if availabledisable_tqdm: Flag, it true no progress bar is shown during optimizationgraph_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 ifNonen_bins: Number of bins to be used in the histogramclip_limit: Relative intensity limit to be ignored in the histogram equalizationuse_gpu: Flag, if true gpu is used for computations if availablethreshold: 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},
}
Metadata
Release files for fuller 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fuller-2.0.0.tar.gz | 30.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fuller-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.2 kB
Release files / fuller-2.0.0.tar.gz
| Download URL | fuller-2.0.0.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ebea3024839060c75fbd53635a371b7f8d36310a6c9f55dc50451c2c51047bb
|
|
BLAKE2b-256 checksum How to use checksums |
89d2e86c5d14153e15f06e6ebc1f3e14891fa6ecbe8d9e793aeb9459f0521849
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2025.
Transparency logRelease files / fuller-2.0.0-py3-none-any.whl
| Download URL | fuller-2.0.0-py3-none-any.whl |
|---|---|
| Size | 31.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0981ac2e71261ad7b0a9ea762da25017b2f1b1bddfceff10d55a7fbfda45e043
|
|
BLAKE2b-256 checksum How to use checksums |
a568cf4052ca7ca677a21c6aece82c1efbb8068c25293966269164eac8a7021e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2025.
Transparency log