Metadata-Version: 2.4
Name: pydidas
Version: 26.1.27
Summary: pydidas - the PYthon DIffraction Data Analysis Suite
Author: Malte Storm
License-Expression: GPL-3.0-only
Project-URL: homepage, https://pydidas.hereon.de/
Project-URL: documentation, https://hereon-gems.github.io/pydidas
Project-URL: repository, https://github.com/hereon-GEMS/pydidas
Project-URL: changelog, https://github.com/hereon-GEMS/pydidas/blob/master/CHANGELOG.rst
Keywords: X-ray diffraction,XRD,WAXS,SAXS
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: <3.14,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: accessible-pygments==0.0.5
Requires-Dist: alabaster==1.0.0
Requires-Dist: babel==2.17.0
Requires-Dist: beautifulsoup4==4.14.3
Requires-Dist: build==1.4.0
Requires-Dist: certifi==2026.1.4
Requires-Dist: charset-normalizer==3.4.4
Requires-Dist: colorama==0.4.6
Requires-Dist: contourpy==1.3.3
Requires-Dist: cycler==0.12.1
Requires-Dist: docutils==0.21.2
Requires-Dist: fabio==2025.10.0
Requires-Dist: fonttools==4.61.1
Requires-Dist: h5py==3.15.1
Requires-Dist: hdf5plugin==6.0.0
Requires-Dist: idna==3.11
Requires-Dist: imagecodecs==2026.1.14
Requires-Dist: imageio==2.37.2
Requires-Dist: imagesize==1.4.1
Requires-Dist: jinja2==3.1.6
Requires-Dist: kiwisolver==1.4.9
Requires-Dist: lazy-loader==0.4
Requires-Dist: lxml==6.0.2
Requires-Dist: markupsafe==3.0.3
Requires-Dist: matplotlib==3.10.8
Requires-Dist: networkx==3.6.1
Requires-Dist: numexpr==2.14.1
Requires-Dist: numpy==2.4.1
Requires-Dist: packaging==25.0
Requires-Dist: pillow==12.1.0
Requires-Dist: platformdirs==4.5.1
Requires-Dist: pydata-sphinx-theme==0.16.1
Requires-Dist: pyfai==2025.12.1
Requires-Dist: pygments==2.19.2
Requires-Dist: pyopencl==2026.1.1
Requires-Dist: pyparsing==3.3.1
Requires-Dist: pyproject-hooks==1.2.0
Requires-Dist: pyqt5==5.15.11
Requires-Dist: pyqt5-qt5==5.15.2; sys_platform != "darwin"
Requires-Dist: pyqt5-qt5==5.15.14; sys_platform == "darwin"
Requires-Dist: pyqt5-sip==12.18.0
Requires-Dist: pyqtgraph==0.14.0
Requires-Dist: pyside6<=6.10.0,>=6.9.3
Requires-Dist: pyside6-addons<=6.10.0,>=6.9.3
Requires-Dist: pyside6-essentials<=6.10.0,>=6.9.3
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: pytools==2025.2.5
Requires-Dist: pyyaml==6.0.3
Requires-Dist: qtpy==2.4.3
Requires-Dist: requests==2.32.5
Requires-Dist: roman-numerals==4.1.0
Requires-Dist: scikit-image==0.26.0
Requires-Dist: scipy==1.17.0
Requires-Dist: shiboken6<=6.10.0,>=6.9.3
Requires-Dist: silx==2.2.2
Requires-Dist: siphash24==1.8
Requires-Dist: six==1.17.0
Requires-Dist: snowballstemmer==3.0.1
Requires-Dist: soupsieve==2.8.1
Requires-Dist: sphinx==8.2.3
Requires-Dist: sphinx-copybutton==0.5.2
Requires-Dist: sphinx-design==0.6.1
Requires-Dist: sphinxcontrib-applehelp==2.0.0
Requires-Dist: sphinxcontrib-devhelp==2.0.0
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0
Requires-Dist: sphinxcontrib-jsmath==1.0.1
Requires-Dist: sphinxcontrib-qthelp==2.0.0
Requires-Dist: sphinxcontrib-serializinghtml==2.0.0
Requires-Dist: tifffile==2026.1.14
Requires-Dist: typing-extensions==4.15.0
Requires-Dist: urllib3==2.6.3
Provides-Extra: dev
Requires-Dist: black>=24.4.0; extra == "dev"
Requires-Dist: flake8>=7.0.0; extra == "dev"
Requires-Dist: ipython>=8.20; extra == "dev"
Requires-Dist: isort>=5.13.2; extra == "dev"
Requires-Dist: GitPython>=3.1.43; extra == "dev"
Requires-Dist: pip-tools>=7.4.1; extra == "dev"
Requires-Dist: reuse>=4.0.3; extra == "dev"
Requires-Dist: ruff>=0.9.1; extra == "dev"
Requires-Dist: pytest>=8.3.0; extra == "dev"
Requires-Dist: pytest-qt>=4.5.0; extra == "dev"
Requires-Dist: PyQt5-stubs>=5.15.6; extra == "dev"
Requires-Dist: PySide6-stubs>=6.7; extra == "dev"
Requires-Dist: setuptools>69.0.0; extra == "dev"
Dynamic: license-file

<!---
    Copyright 2024 - 2026, Helmholtz-Zentrum Hereon
    SPDX-License-Identifier: CC-BY-4.0
--->


# pydidas
[![zenodo badge](https://zenodo.org/badge/DOI/10.5281/zenodo.7568610.svg)](https://doi.org/10.5281/zenodo.7568610)


pydidas (an acronym for the **Py**thon **di**ffraction **d**ata **a**nalysis **s**uite)
is a toolkit for the analysis of X-ray diffraction datasets. It is designed to
be accessible also for users with little experience in diffraction data analysis
in order to broaden the user base of diffraction techniques and to make diffraction
analysis more accessible for domain scientists.

Pydidas includes a graphical user interface and a command line interface to
embed its functionality in other projects or scripts.

## References
* Please check the citation file CITATION.cff
* Pydidas has also been issued with a global DOI for citations: 10.5281/zenodo.7568610<br> 
  [![zenodo badge](https://zenodo.org/badge/DOI/10.5281/zenodo.7568610.svg)](https://doi.org/10.5281/zenodo.7568610)


## Installation

Pydidas should be installed in a clean environment to allow pydidas to fix the
required dependency versions. This environment should be used exclusively for
pydidas and no further packages should be installed.

Pydidas requires **Python version 3.11, 3.12, or 3.13**.

### Preparing the environment

Environments can be managed using any environment manager (e.g. venv,
conda/mamba). Due to dependency management issues, pydidas does not support
pre-configured conda/mamba environments anymore but relies exclusively on pip
for the dependency management.

Pip will install all dependencies together with the pydidas package.
There is no need to prepare the environment further.


### Building and installing pydidas

You will require a pydidas wheel file to install it using pip. If you have not
downloaded a build wheel file, you need to prepare one prior to installation.

### Using pip
Pydidas is available on PyPI and can be installed simply with 

    python -m pip install pydidas

#### Using a python wheel

Wheels for pydidas are available on the 
[pydidas releases](https://github.com/hereon-GEMS/pydidas/releases) webpage. 
To install a downloaded wheel, activate your chosen environment and use the 
following command:

    python -m pip install <path_to_pydidas_wheel_file.whl>

#### Using the source code directly

Download the pydidas source code or clone the git repository and navigate to the
folder with the project metadata files (like this README.md). Then, install
the package and any missing dependencies:

    python -m pip install .

Note that pip might need to build a wheel from pydidas first which will take
some time. If you want to build the wheel manually, for example to keep it for
later use, simply use the following commands (again, in the pydidas folder)::

    python -m build

This will create a tarball and a wheel file in the ``dist`` subdirectory.

> **Note:** You will need to install the build and setuptools packages manually in 
> your chosen environment if you want to build pydidas from source.

## Using pydidas

### Entry points
If installed as wheel, pydidas offers the following entry points:

  - `pydidas-gui` to start the graphical user interface.
  - `pydidas-documentation` to open the pydidas documentation in the default system
    web browser. **Note:** The pydidas module must have been run at least once 
    (either through opening the GUI or imported in a python shell) for the 
    documentation to have been created. 
  - `pydidas-clear-settings` Remove the stored registry keys for pydidas. 
  - `pydidas-updater` Start a script which automatically updates pydidas to the latest
    version available on GitHub.
  - `pydidas-remove-local-files` This script removes all local log files and stored 
    configuration files.
  - `run-pydidas-workflow` Script to run a defined workflow in the console. This script
    also requires configuration files for the scan and diffraction experiment. Please
    refer to the full documentation for more details.
  - `remove-pydidas` Remove all local config files and registry settings from the 
    system. Please note that this script will not remove the python code itself, but 
    only cleans up the system.

### Scripts
Pydidas includes multiple scripts which are located in the `src/pydidas_scripts` folder.
These can be called directly by python from the command line and they are:
  - `pydidas_gui.py` to start the GUI.
  - `pydidas_documentation.py` to open the html documentation in a browser.
  - `run_pydidas_workflow.py` to run a processing workflow on the command line.
  - `pydidas_updater_script.py` to update pydidas to the latest release published on
    GitHub.
  - `clear_local_settings.py` to remove all registry settings written by pydidas.

### Command line
Much of pydidas' functionality is also available from the command line or notebooks.
Pydidas can be imported and used as any other python module. Please refer to the 
documentaion for more details (see the section below on how to access the 
documentation). 

## Documentation

### Local documentation

The documentation is included with the distribution, but only in form of the source
to keep the distribution small. It will be compiled automatically the first time
pydidas is imported in python. This will take some time (about 30 seconds, depending on
the system) and a notification will be displayed.

The compiled documentation can be found in the
``lib/site-packages/pydidas/sphinx/html`` folder and the ***index.html*** file is the
global start page.

A ``pydidas-documentation`` entrypoint is available to open the documentation in the
system's default browser.

The graphical user interface also has a menu entry to open the help in a web browser.
Pressing F1 in the graphical user interface will also open the help in the system's 
default webbrowser.

### Online documentation

The pydidas documentation is also available online through github-pages:
https://hereon-gems.github.io/pydidas/

## Referencing pydidas

For the full citation information of pydidas, please see the CITATION.cff file.

Pydidas can also be cited by its global DOI on zenodo: 10.5281/zenodo.7568610\
[![zenodo badge](https://zenodo.org/badge/DOI/10.5281/zenodo.7568610.svg)](https://doi.org/10.5281/zenodo.7568610)


## License

The pydidas source code is released under the GNU General Public License
Version 3.
The documentation is licensed under the Creative Commons Attribution 4.0
International Public License (CC-BY-4.0).
Images and logos are licensed under Creative Commons Attribution-NoDerivatives
4.0 International Public License (CC-BY-ND-4.0).
Insignificant files (e.g. changelog) are released under the CC0 1.0 Universal
Public Domain Dedication (CC0-1.0).

## Acknolwedgements
pydidas is developed at [Helmholtz-Zentrum Hereon](https://www.hereon.de) and the 
development is supported by [DAPHNE4NFDI](https://www.daphne4nfdi.de).

The (azimuthal/radial) integration uses the [pyFAI](https://github.com/silx-kit/pyFAI)
engine for fast azimuthal integration. Some widgets are extensions of [silx](https://github.com/silx-kit/silx) 
widgets. Both ``pyFAI`` and ``silx`` are developed at the [ESRF](https://www.esrf.fr/).
