epdfsuite.lobato_scattering

Lobato parametrization for electron and X-ray scattering factors.

Based on: Lobato, I., & Van Dyck, D. (2014). An accurate parameterization for scattering factors, electron densities and electrostatic potentials for neutral atoms that obey all physical constraints. Acta Crystallographica Section A, 70(6), 636-649.

This is a simplified standalone implementation extracted from abTEM to avoid heavy dependencies on visualization libraries.

Functions

compute_scattering_profile(elements, s_values)

Compute scattering factor profiles for multiple elements.

electron_scattering_factor(k2, params)

Compute electron scattering factor using Lobato parametrization.

x_ray_scattering_factor(k, params)

Compute X-ray scattering factor using Lobato parametrization.

Classes

LobatoScatteringCalculator()

Calculator for electron and X-ray scattering factors using Lobato parametrization.

epdfsuite.lobato_scattering.electron_scattering_factor(k2, params)[source]

Compute electron scattering factor using Lobato parametrization.

Parameters:
  • k2 (float or ndarray) – Squared scattering vector magnitude (in 1/Angstrom^2)

  • params (ndarray) – Lobato parameters [2 x 5] array where params[0] are ‘a’ coefficients and params[1] are ‘b’ coefficients

Returns:

f (float or ndarray) – Electron scattering factor

Notes

Based on Lobato & Van Dyck (2014), Acta Cryst. A70, 636-649 f_e(k^2) = sum_i [ a_i * (2 + b_i * k^2) / (1 + b_i * k^2)^2 ]

epdfsuite.lobato_scattering.x_ray_scattering_factor(k, params)[source]

Compute X-ray scattering factor using Lobato parametrization.

Parameters:
  • k (float or ndarray) – Scattering vector magnitude (in 1/Angstrom)

  • params (ndarray) – Lobato parameters [2 x 5] array

Returns:

f (float or ndarray) – X-ray scattering factor

Notes

Uses Bohr radius conversion: 1 Bohr = 0.529177 Angstrom Based on Lobato & Van Dyck (2014), Acta Cryst. A70, 636-649 f_xray(k) = sum_i [ 2*pi^2*a0 * a_i / (b_i * (1 + b_i * k^2)^2) ] where a0 is the Bohr radius in Angstrom

epdfsuite.lobato_scattering.compute_scattering_profile(elements, s_values, xray=False)[source]

Compute scattering factor profiles for multiple elements.

Parameters:
  • elements (list of str) – List of element symbols (e.g., [‘Au’, ‘C’])

  • s_values (ndarray) – Scattering vector magnitudes in 1/Angstrom (s = sin(theta)/lambda)

  • xray (bool, optional) – If True, compute X-ray scattering factors. If False (default), compute electron scattering factors.

Returns:

profiles (ndarray) – Array of shape (n_elements, n_points) with scattering profiles

class epdfsuite.lobato_scattering.LobatoScatteringCalculator[source]

Bases: object

Calculator for electron and X-ray scattering factors using Lobato parametrization.

This provides a simplified interface similar to abtem’s LobatoParametrization.

line_profiles(elements, cutoff, sampling, name='scattering_factor')[source]

Compute scattering factor line profiles.

Parameters:
  • elements (list of str) – Element symbols

  • cutoff (float) – Maximum s value (1/Angstrom)

  • sampling (float) – Sampling interval in s (1/Angstrom)

  • name (str, optional) – Type of scattering factor: “scattering_factor” for electrons, “x_ray_scattering_factor” for X-rays

Returns:

result (SimpleNamespace) – Object with ‘array’ attribute containing profiles of shape (n_elements, n_points)

get_parameters(element)[source]

Get Lobato parameters for a specific element.