Skip to main content

Simple yet powerful package for neutron resonance fitting

Project description

nbragg

nbragg logo

Documentation Status PyPI version

nbragg is a package designed for fitting neutron Bragg edge data using NCrystal cross-sections. This tool provides a straightforward way to analyze neutron transmission through polycrystalline materials, leveraging Bragg edges to extract information on material structure and composition.

Features

  • Flexible Cross-Section Calculations: Interfaces with NCrystal to fetch cross-sections for crystalline materials.
  • Grouped/Gridded Data Fitting: Analyze spatially-resolved or multi-sample data with support for 1D arrays, 2D grids, and named groups. Includes parallel fitting with automatic result visualization via parameter maps.
  • SANS Modeling: Built-in support for Small Angle Neutron Scattering (SANS) using hard-sphere models for samples with nanoscale features.
  • Extinction Effects: Support for primary and secondary extinction modeling for large crystallites and thick samples.
  • Built-In Tools for Response and Background Functions: Includes predefined models for instrument response (e.g., Jorgensen, square) and background components (polynomial functions).
  • LMFit Integration: Allows flexible, nonlinear fitting of experimental data using the powerful lmfit library.
  • Rietveld-type analysis: Enables iterative, parametric refinement of Bragg edge data using the Rietveld method, accumulating parameters across stages for robust fitting.
  • Pythonic API: Simple-to-use, yet flexible enough for custom modeling.
  • Plotting Utilities: Provides ready-to-use plotting functions for easy visualization of results.
  • Bragg Edge Analysis: Perform Bragg edge fitting to extract information such as d-spacing, strain, and texture.

Installation

Basic Installation

To install the base package:

pip install nbragg

Installation with Extinction Effects

To include extinction effects in your analysis, you'll need to install the extinction plugin separately:

pip install nbragg
pip install git+https://github.com/XuShuqi7/ncplugin-CrysExtn

The ncrystal-plugin-crysextn plugin provides extinction corrections for crystallographic calculations.

Note: The extinction plugin is only required if you plan to use extinction effects. For standard Bragg edge fitting without extinction corrections, the base installation is sufficient.

Usage

Here's a quick example to get started:

import nbragg

data = nbragg.Data.from_transmission("iron_powder.csv") # read data
xs = nbragg.CrossSection(iron="Fe_sg229_Iron-alpha.ncmat") # define sample
model = nbragg.TransmissionModel(xs, vary_background=True, vary_response=True) # define model
result = model.fit(data) # perform fit
result.plot() # plot results

Fit Results

Tutorials and Documentation

For more detailed examples and advanced usage, including custom stage definitions and Rietveld fitting, please refer to our documentation page and check out the updated Jupyter notebook tutorial.

License

nbragg is licensed under the MIT License.

Third-Party Dependencies

This project depends on several open-source packages with permissive licenses compatible with MIT:

  • scipy, pandas, numpy, lmfit: BSD/BSD 3-Clause
  • setuptools, tqdm: MIT License
  • matplotlib: PSF License
  • ncrystal: Apache 2.0 (license)

All dependencies allow free use, modification, and distribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nbragg-0.8.1.tar.gz (137.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nbragg-0.8.1-py3-none-any.whl (105.3 kB view details)

Uploaded Python 3

File details

Details for the file nbragg-0.8.1.tar.gz.

File metadata

  • Download URL: nbragg-0.8.1.tar.gz
  • Upload date:
  • Size: 137.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nbragg-0.8.1.tar.gz
Algorithm Hash digest
SHA256 649da32a976c0faf88d6f04c5752b491dc9a14a2640d79426d3042cce2aae387
MD5 004d239b28fb1ea5d4c934fa1ce1cdb7
BLAKE2b-256 82b0195da2cd1953c93d172efb0b973c95f36f938ad459304f4a27be81d8e609

See more details on using hashes here.

Provenance

The following attestation bundles were made for nbragg-0.8.1.tar.gz:

Publisher: python-publish.yml on TsvikiHirsh/nbragg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nbragg-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: nbragg-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 105.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nbragg-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2c426782c62ec9dc0c27293bf160bdd2b71ddfbd135a29ae7dfafabd75c5f05f
MD5 b1d3473c3bc41123d03c83a5ba9d202c
BLAKE2b-256 89d454f7faaf3e54bc50d699a30c1dd4a06370a871c76e44b34e302e5b0c3e3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nbragg-0.8.1-py3-none-any.whl:

Publisher: python-publish.yml on TsvikiHirsh/nbragg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page