piva 3.0.0
PIVA - Photoemission Interface for Visualization and Analysis
Requires Python: >=3.10


![](./docs/img/logo-readme.png)

# Photoemission Interface for Visualization and Analysis

[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![Docs](https://img.shields.io/badge/docs-latest-grren?logo=readthedocs)](https://piva.readthedocs.io/en/latest/intro.html)
[![GitHub license](https://img.shields.io/github/license/pudeIko/piva)](https://github.com/ekiefl/pooltool/blob/master/LICENSE.txt)
[![Build Status](https://github.com/pudeIko/piva/actions/workflows/test_with_coverage.yml/badge.svg)](https://github.com/pudeIko/piva/actions/workflows/test_with_coverage.yml)
[![codecov](https://codecov.io/gh/pudeIko/piva/branch/main/graph/badge.svg)](https://codecov.io/gh/pudeIko/piva)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

[![PyPI - Version](https://img.shields.io/pypi/v/piva?logo=pypi)](https://pypi.org/project/piva/)
[![Python Versions](https://img.shields.io/badge/python-3.10%20|%203.11|%203.12-blue?logo=python)](https://www.python.org/)
[![Keep a Changelog](https://img.shields.io/badge/Keep%20a%20Changelog-v1.0.0-royalblue?logo=keepachangelog)](changelog.md)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg?logo=contributorcovenant)](code_of_conduct.md)

[![pyOpenSci Peer-Reviewed](https://pyopensci.org/badges/peer-reviewed.svg)](https://github.com/pyOpenSci/software-review/issues/231)


PIVA is a graphical user interface (GUI) application built with `PyQt5` and 
`pyqtgraph` toolkits, designed for the interactive and intuitive examination 
of large image-like datasets. While it can display any multidimensional data, 
most of its functionalities are specifically tailored for users conducting 
Angle-Resolved Photoemission Spectroscopy (ARPES) experiments.

![](./docs/img/showcase.gif)

Its primary objective is to improve the efficiency of ARPES data inspection and 
analysis by providing interactive, intuitive tools designed to handle large, 
multidimensional datasets.
For more information and a comparison with other packages commonly used in the 
ARPES community, please refer to the **Statement of need** section of the 
accompanying [manuscript](./paper/paper.md).

A variety of standard methods and image processing algorithms are available 
directly from the GUI. Additionally, several utilities are particularly 
useful during the experimental phase when decisions about subsequent steps 
need to be made quickly. These utilities include automated methods for 
locating the highest symmetry points, azimuthal rotation, and autogenerated 
experimental notebooks. These features are implemented for various beamlines 
at different synchrotron sources around the world.


## Installation 

The installation of PIVA has been tested on macOS, Windows and Linux.

The easiest way to install the package is to use `pip`. Just type the following 
on a command line:
   ```bash
    pip install piva
   ```

Alternatively, you can install the package directly from the source:
   ```bash
   git clone https://github.com/pudeIko/piva.git
   cd piva
   conda env create -f environment.yml
   ```

This will automatically set up the virtual environment and install the 
package in editable mode.


## Documentation 

The showcase above highlights the general usage and capabilities of the 
package.
For more detailed information and examples, visit the project's 
[documentation](https://piva.readthedocs.io/en/latest/) website, including:

- [Getting Started](https://piva.readthedocs.io/en/latest/installation.html),
to learn more about installation, opening example datasets, and running 
automated tests,
- [GUI Applications](https://piva.readthedocs.io/en/latest/db.html),
to explore the layout and functionalities of the interactive viewers, and
- [Data Handling](https://piva.readthedocs.io/en/latest/dataloaders.html),
to discover the supported file types and how PIVA manages data harmonization.


## Citing

TBD