PyARPES corrected (V5)#

V5 Release: Non maintainer update This release introduces extensive refactoring and feature development aimed at long-term maintainability and usability. A major focus has been on reducing global state by introducing a centralized ConfigManager, modularizing the UI with Holoviews-based interactive apps, and deprecating unused or ambiguous components. Functionality has been restructured to align better with modern Python tools and community practices (e.g., xarray-lmfit instead of custom model broadcasting). Version 5 drops several legacy methods and models, simplifies internal APIs, and favors explicitness and modularity.

I used to say, “I still feel that the current package is not very user-friendly for less experienced Python users. I recommend using Igor for analysis, especially for students.” However, considering that Igor will no longer support macOS, I’ve reconsidered my stance. I now believe that having a GUI is important—not only for others, but also for myself. All Qt-based functionality has been completely removed. Instead, a new UI framework based on Holoviews and Panel is provided. This not only offers compatibility with the previous interactive tools but also enables fully self-contained analysis workflows within modern environments like JupyterLab or Marimo. Compared to seemingly elegant but brittle Qt applications, this approach yields a far more robust, reproducible, and user-friendly experience, especially for data analysis in collaborative and publication-ready settings.

This update is not backward compatible in many places, but provides a cleaner, more maintainable foundation for further development and real ARPES data analysis.

V4 Release: Non maintainer update After V3 release, the origiinal author/maintainer seems to have relinquished maintenance of PyArpes. While I have posted several pull-requests and comments, very unfortunately, he has not responded at all. Furthermore, he does not seems to conduct ARPES related scientific work. That is likely th main reason he has not maintained it. There is no motivation to maintain codes that is not being used.

Since the previous version release, the python ecosystem has been improved significantly. Conda is no longer necessarily the best system, especially for the Macintosh users. In fact, I believe that it can sometimes cause confusion. Thus, I have decided to drop the Conda-related support. Instead, I strongly recommend to use “uv”.

While I have added many type hints in the codes to improve usability and maintainability, I still feel that the current package is not very user-friendly for less experienced Python users. I recommend igor to analyze, especially for students.

December 2020, V3 Release: The current release focuses on improving usage and workflow for less experienced Python users, lifting version incompatibilities with dependencies, and ironing out edges in the user experience.

For the most part, existing users of PyARPES should have no issues upgrading, but we now require Python 3.8 instead of 3.7. We now provide a conda environment specification which makes this process simpler, see the installation notes below. It is recommended that you make a new environment when you upgrade.

You can find more usage and example videos here.

PyARPES is an open-source data analysis library for angle-resolved photoemission spectroscopic (ARPES) research and tool development. While the scope of what can be achieved with PyARPES is general, PyARPES focuses on creating a productive programming and analysis environment for ARPES and its derivatives (Spin-ARPES, ultrafast/Tr-ARPES, ARPE-microspectroscopy, etc).

As part of this mission, PyARPES aims to reduce the feedback cycle for scientists between data collection and producing publication quality analyses and figures. Additionally, PyARPES aims to be a platform on which new types of ARPES and spectroscopic analyses can be rapidly prototyped and tested.

For these reasons, PyARPES includes out of the box a large variety of analysis tools for

  1. Applying corrections to ARPES data

  2. Doing gap analysis

  3. Performing sophisticated band analysis

  4. Performing rapid and automated curve fitting, even over several dataset dimensions

  5. Background subtraction

  6. Dataset collation and combination

  7. Producing common types of ARPES figures and reference figures

  8. Converting to momentum space

  9. Interactively masking, selecting, laying fits, and exploring data

  10. Plotting data onto Brillouin zones

These are in addition to facilities for derivatives, symmetrization, gap fitting, Fermi-Dirac normalization, the minimum gradient method, and others.

By default, PyARPES supports a variety of data formats from synchrotron and laser-ARPES sources including ARPES at the Advanced Light Source (ALS), the data produced by Scienta Omicron GmbH’s “SES Wrapper”, data and experiment files from Igor Pro (see in particular the section on importing Igor Data), NeXuS files, and others. Additional data formats can be added via a user plugin system.

If PyARPES helps you in preparing a conference presentation or publication, please respect the guidelines for citation laid out in the notes on user contribution. Contributions and suggestions from the community are also welcomed warmly.

Secondary to providing a healthy and sane analysis environment, PyARPES is a testbed for new analysis and correction techniques, and as such ships with scikit-learn and open-cv as compatible dependencies for machine learning. cvxpy can also be included for convex optimization tools.

Copyright © 2018-2020 by Conrad Stansbury, all rights reserved. Logo design, Michael Khachatrian

Copyright © after 2023 by Ryuichi Arafune, all rights reserved.

Gettinng started#

See the section on the docs site about contributing for information on adding to PyARPES and rebuilding documentation from source.

API reference#

Tutorial#

Detailed Guides#

Plotting#

ARPES#

Reference#

Changelog#