mooonpy.fitting.dihedral module

class mooonpy.fitting.dihedral.DihedralDist(phi_angles, bin_scale=10, name=None, function=<function multi_symmetric_gaussian>, ic=None, limits=None)[source]

Bases: CurveFit

Operators on dihedral distributions for modeling energy minima

Parameters:
  • x – 1D array

  • y – 1D array

  • name – str

  • model – lmfit.models.Model (or None)

default_fit_kws = {'max_nfev': 5000, 'method': 'powell'}
guess_ic(guess=None)[source]

Basic guessing function. could make smart with peak detection but this is good enough for now

guess_limit()[source]
make_params()[source]

Override base make_params function with extra amplitude constraint

plot_mode_decomposition(ax=None, figsize=(10, 6))[source]
mooonpy.fitting.dihedral.multi_symmetric_gaussian(x, **params)[source]

Sum of multiple symmetric Gaussians with periodicity

mooonpy.fitting.dihedral.symmetric_gaussian_periodic(x, center, sigma, amplitude)[source]

Symmetric Gaussian with proper periodicity handling. Creates Gaussians at ±center and their periodic images for bleed-through. amplitude = ? https://en.wikipedia.org/wiki/Wrapped_normal_distribution