Skip to main content

pygidFIT: Gaussian fitting for grazing incidence diffraction (GID) data

Python version

A Python package for fitting Gaussian functions to GID (Grazing-Incidence Wide-Angle X-ray and Neutron Scattering) data. pygidFIT is part of the comprehensive machine learning pipeline for automated analysis of GID data. The focus is on multiparallel execution for real-time sequential processing at the synchrotron and neutron facilities.

pygidFIT

Installation

Install using pip

pip install pygidfit

Install from source

First, clone the repository:

git clone git@github.com:mlgid-project/pygidFIT.git

Then, to install all required modules, navigate to the cloned directory and execute:

git clone git@github.com:mlgid-project/pygidFIT.git
cd pygidFIT
pip install -e .

Usage

Images from pygid NeXus file

from pygidfit import ProcessDataFromFile

filename = './example/BA2PbI4.h5'
analysis = ProcessDataFromFile(
    filename,                           # NeXus file with converted images and detected boxes (after pygid and mlgidDETECT)
    entry='entry_0000',                 # Entry to process (if None, processes all entries)
    frame_num=0,                        # Image frame to process (if None, processes all frames)
    crit_angle=2,                       # Critical angle to shift the sample horizon (in degrees)
    clustering_distance_rings=10,       # Distance for ring clustering (in pixels)
    clustering_distance_peaks=10,       # Distance for segments clustering (in pixels)
    clustering_extend=2,                # Number of pixels to extend the cluster size
    use_pool=False,                     # Whether to use peak pool from the previous image 
    debug=False,                        # Whether to plot fitting result and parameters)
    theta_fixed=True,                   # Whether to fix Gaussian tilt angle to 0° (azimuthal direction) during fitting. Default is True
)

Fit single image

from pygidfit import fit_data

img_container_fit = fit_data(
    polar_img=polar_img,              # 2D polar-transformed scattering image. Axis 0: polar angle (0–90°). Axis 1: radial coordinate |q| (Å⁻¹)
    radius=radius,                    # 1D array of radial centers of peak boxes (Å⁻¹)
    radius_width=radius_width,        # 1D array of radial widths of peak boxes (Å⁻¹)
    angle=angle,                      # 1D array of angular centers of peak boxes (degrees)
    angle_width=angle_width,          # 1D array of angular widths of peak boxes (degrees)
    wavelength=1e-10,                 # X-ray wavelength in meters. Used for missing-wedge calculation
    q_xy_max=3.5,                     # Upper cutoff for q_xy (Å⁻¹) used in peak classification
    q_z_max=3.5,                      # Upper cutoff for q_z (Å⁻¹) used in peak classification
    clustering_distance_peaks=10,     # Distance for ring clustering (in pixels)
    clustering_distance_rings=10,     # Distance for segments clustering (in pixels)
    clustering_extend=2,              # Number of pixels to extend the cluster size
    debug=False,                      # Whether to plot fitting result and parameters)
    peaks_pool=None,                  # List of pygidfit.Boxes or None (if don't use pool) 
    theta_fixed=True,                 # Whether to fix Gaussian tilt angle to 0° (azimuthal direction) during fitting. Default is True
)

This package is included in the mlgidBASE package and can be used as part of the mlgid pipeline.

Overview

pygidFIT is part of the machine learning pipeline for automated analysis of GID data. It is designed to analyze scattering data by fitting Gaussian profiles to peaks in both 1D and 2D data. It refines the peak positions revealed by the deep learning-based peak detection by automated conventional fitting during the postprocessing stage.

Key Features

  • Peak clustering: Groups spatially close peaks to improve fitting stability

  • Parameter reuse: Caches fit parameters from previous frames to accelerate time-series analysis

  • Parallel execution: Supports multiprocessing for efficient processing of large datasets

  • HDF5 compatibility: Operates directly on HDF5 files generated by pygid.DataSaver

Authors

License

MIT License

Metadata

Release files for pygidfit 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygidfit 0.1.6
File Size Uploaded
pygidfit-0.1.6.tar.gz 30.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pygidfit 0.1.6
File Interpreter ABI Platform
pygidfit-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 60.8 kB

Release files / pygidfit-0.1.6.tar.gz

Download URL pygidfit-0.1.6.tar.gz
Size 30.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8b9bf2394f233a314ba3ee7b87b670bdb98562be58d1ba813eb80aea7c565499
BLAKE2b-256 checksum
How to use checksums
4d447f5a5605e07ef2db4598106a130d7199c745275cb79a739175777f949fa3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / pygidfit-0.1.6-py3-none-any.whl

Download URL pygidfit-0.1.6-py3-none-any.whl
Size 30.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc4e86eed4b0a4b3e0446fff2a1acfe84fd62f276dd2fc3b9596c67bdab15d7d
BLAKE2b-256 checksum
How to use checksums
eb89c8ff1dded5db53d97d8f975bee92bc15ba21ae6af1e1840d5a97b9f229e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page