Delta and two Lorentzian ∗ Resolution with bumps (2 wavelengths)

Introduction

The objective of this notebook is to show how to use the delta_two_lorentz model .

The data are two sets of water data measured at IN5 (ILL) using two different wavelengths.

Reference: J. Qvist, H. Schober and B. Halle, J. Chem. Phys. 134, 144508 (2011)

Physical units

For information about unit conversion, please refer to the jupyter notebook called Convert_units.ipynb in the tools folder.

Import libraries

[1]:
import ipywidgets
# the following two lines are to remove the warning about too many figures open simultaneously
from matplotlib import rcParams
rcParams.update({'figure.max_open_warning': 0})

import h5py
import QENSmodels
import numpy as np
from scipy.integrate import simps
import bumps.names as bmp
from bumps import fitters
from bumps.formatnum import format_uncertainty_pm
import matplotlib.pyplot as plt

%matplotlib widget

Setting of fitting

Load reference data

[2]:
path_to_data = './data/'

# Data
# Wavelength 5 Angstrom
with h5py.File(path_to_data + 'H2O_293K_5A.hdf', 'r') as f:
    hw_5A = f['entry1']['data1']['X'][:]
    q_5A = f['entry1']['data1']['Y'][:]
    unit_w5A = f['entry1']['data1']['X'].attrs['long_name']
    unit_q5A = f['entry1']['data1']['Y'].attrs['long_name']
    sqw_5A = np.transpose(f['entry1']['data1']['DATA'][:])
    err_5A = np.transpose(f['entry1']['data1']['errors'][:])

# Wavelength 8 Angstrom
with h5py.File(path_to_data + 'H2O_293K_8A.hdf', 'r') as f:
    hw_8A = f['entry1']['data1']['X'][:]
    q_8A = f['entry1']['data1']['Y'][:]
    unit_w8A = f['entry1']['data1']['X'].attrs['long_name']
    unit_q8A = f['entry1']['data1']['Y'].attrs['long_name']
    sqw_8A = np.transpose(f['entry1']['data1']['DATA'][:])
    err_8A = np.transpose(f['entry1']['data1']['errors'][:])

# Resolution
# Wavelength 5 Angstrom
with h5py.File(path_to_data + 'V_273K_5A.hdf', 'r') as f:
    res_5A = np.transpose(f['entry1']['data1']['DATA'][:])

# Wavelength 8 Angstrom
with h5py.File(path_to_data + 'V_273K_8A.hdf', 'r') as f:
    res_8A = np.transpose(f['entry1']['data1']['DATA'][:])

# Force resolution function to have unit area
# 5 Angstrom
for i in range(len(q_5A)):
    area = simps(res_5A[:,i], hw_5A)
    res_5A[:,i] /= area

# 8 Angstrom
for i in range(len(q_8A)):
    area = simps(res_8A[:,i], hw_8A)
    res_8A[:,i] /= area
[3]:
fig, ax = plt.subplots(ncols=2, nrows=2, figsize=(8, 8), sharex=True)

for i in range(len(q_5A)):
    ax[0, 0].semilogy(hw_5A, sqw_5A[:,i], label=f"q={q_5A[i]:.1f}")
    ax[1, 0].semilogy(hw_5A, res_5A[:,i], label=f"q={q_5A[i]:.1f}")

ax[0, 0].set_title(r'Signal 5 $\AA$')
ax[0, 0].grid()

ax[1, 0].set_title(r'Resolution 5 $\AA$')
ax[1, 0].set_xlabel(f"$\hbar \omega$")
ax[1, 0].grid()

for i in range(len(q_8A)):
    ax[0, 1].semilogy(hw_8A, sqw_8A[:,i], label=f"q={q_8A[i]:.1f}")
    ax[1, 1].semilogy(hw_8A, res_8A[:,i], label=f"q={q_8A[i]:.1f}")

ax[1, 1].legend(bbox_to_anchor=(1.2,1.5), loc='upper right', shadow=True)
ax[0, 1].set_title(r'Signal 8 $\AA$')
ax[0, 1].grid()

ax[1, 1].set_title(r'Resolution 8 $\AA$')
ax[1, 1].set_xlabel(f"$\hbar \omega$")
ax[1, 1].grid()

Display units of input data

Just for information in order to determine if a conversion of units is required before using the QENSmodels

[4]:
print(f"At 5 Angstroms, the names and units of `w` ( `x`axis) and `q` are: {unit_w5A[0].decode()} and {unit_q5A[0].decode()}, respectively.")

print(f"At 8 Angstroms, the names and units of `w` ( `x`axis) and `q` are: {unit_w8A[0].decode()} and {unit_q8A[0].decode()}, respectively.")
At 5 Angstroms, the names and units of `w` ( `x`axis) and `q` are:  Energy Transfer (meV) and Wavevector Transfer (A!U-1!N), respectively.
At 8 Angstroms, the names and units of `w` ( `x`axis) and `q` are:  Energy Transfer (meV) and Wavevector Transfer (A!U-1!N), respectively.

Create fitting model

[5]:
# Fit range -1 to +1 meV
idx_5A = np.where(np.logical_and(hw_5A > -1.0, hw_5A < 1.0))
idx_8A = np.where(np.logical_and(hw_8A > -1.0, hw_8A < 1.0))

def model_convol(x, q, scale=1, center=0, A0=1.0, A1=1.0, hwhm1=1.0, hwhm2=1.0, resolution=None):
    model = QENSmodels.sqwDeltaTwoLorentz(x, q, scale, center, A0, A1, hwhm1, hwhm2)
    return np.convolve(resolution/resolution.sum(), model, mode='same')

# Fit
model_all_qs = []

# First dataset: wavelength=5 Angstrom
for i in range(len(q_5A)):

    x = hw_5A[idx_5A]
    data = sqw_5A[idx_5A, i]
    error = err_5A[idx_5A, i]
    resol = res_5A[idx_5A, i]

    # Select only valid data (error = -1 for Q, w points not accessible)
    valid = np.where(error > 0.0)

    x = x[valid[1]]
    if len(valid[1]) != len(x):
        print(i, "truncate to make vectors symmetric with respect to max")

    data = data[valid]
    error = error[valid]
    resol = resol[valid]

    # Dirac + 2 Lorentzians model
    model_q = bmp.Curve(
        model_convol,
        x, data, error,
        name=f'q5A_{q_5A[i]:.2f}',
        q=q_5A[i],
        scale=20,
        center=0.0,
        A0=0.0,
        A1=0.9,
        hwhm1=0.05,
        hwhm2=0.3,
        resolution=resol
    )
    # Fitted parameters
    model_q.scale.range(1.e-12, 20)
    model_q.center.range(-0.1, 0.1)
    model_q.A0.range(0, 0.05)
    model_q.A1.range(0, 1)
    model_q.hwhm1.range(0, 0.5)
    model_q.hwhm2.range(0, 3)

    # Q-independent parameters
    if i == 0:
        A0_q = model_q.A0
    else:
        model_q.A0 = A0_q

    model_all_qs.append(model_q)

# Second dataset: wavelength=8 Angstrom
for i in range(len(q_8A)):
    x = hw_8A[idx_8A]
    data = sqw_8A[idx_8A, i]
    error = err_8A[idx_8A, i]
    resol = res_8A[idx_8A, i]

    # Select only valid data (error = -1 for Q, w points not accessible)
    valid = np.where(error > 0.0)
    if len(valid[1]) != len(x):
        print(i, "truncate to make vectors symmetric with respect to max")

    x = x[valid[1]]
    data = data[valid]
    error = error[valid]
    resol = resol[valid]

    model_q = bmp.Curve(
        model_convol,
        x, data, error,
        name=f'q8A_{q_8A[i]:.2f}',
        q=q_8A[i],
        scale=35,
        center=0.0,
        A0=0.0,
        A1=0.9,
        hwhm1=0.05,
        hwhm2=0.3,
        resolution=resol
    )

    # Fitted parameters
    model_q.scale.range(0.1, 40)
    model_q.center.range(-0.1, 0.1)
    model_q.A0.range(0, 0.05)
    model_q.A1.range(0, 1)
    model_q.hwhm1.range(0, 0.5)
    model_q.hwhm2.range(0, 3)

    # Q-independent parameters
    if i == 0:
        A0_q = model_q.A0
    else:
        model_q.A0 = A0_q

    model_all_qs.append(model_q)

problem = bmp.FitProblem(model_all_qs)
0 truncate to make vectors symmetric with respect to max
9 truncate to make vectors symmetric with respect to max
10 truncate to make vectors symmetric with respect to max

Display initial configuration: experimental data, fitting model with initial guesses

[6]:
slider = ipywidgets.IntSlider(value=0, min=0, max=len(q_5A)+len(q_8A)-1, continuous_update=False)
output = ipywidgets.Output()

def fig_q(model, ax, q_index=0):
    """
    Plot of experimental data, fitting model and residual for a selected q value

    Parameters
    ----------
    model: list of bumps.curve.Curves for all q

    ax: matplotlib.axes to be updated when changing the ipywidgets

    q_index: int
             index of q to be plotted

    """
    model = model[q_index]
    ax[0].errorbar(model.x,
                       model.y,
                       yerr=model.dy,
                       label='experimental data',
                       color='C0')
    ax[0].plot(model.x,
                   model.theory(),
                   label='theory (model)',
                   color='C1')
    ax[0].set_title(f'Model {model.name} - $\chi^2$={problem.chisq_str()}')
    ax[0].legend()
    ax[1].plot(model.x, model.residuals(), marker='o', linewidth=0, markersize=3, color='C0')


with output:
    fig, ax = plt.subplots(nrows=2, ncols=1, sharex=True)
    ax[0].grid(); ax[1].grid()
    ax[1].set_ylabel('Residual')
    ax[1].set_xlabel(f"$\hbar \omega$")
    fig_q(model_all_qs, ax, 0)


def update_profile(change):
    """
    Update plots for a new q-value
    """
    with output:
        ax[0].clear(); ax[1].lines.clear()
        ax[0].grid()
        fig_q(model_all_qs, ax,change['new'])

slider.observe(update_profile, names="value")

slider_label = ipywidgets.Label("q value to display")
slider_comp = ipywidgets.HBox([slider_label, slider])
ipywidgets.VBox([slider_comp, output])
[6]:
[7]:
problem.summarize().splitlines()
[7]:
['                                      A0 |.........          0 in (0,0.05)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale .........|         20 in (1e-12,20)',
 '                                      A0 |.........          0 in (0,0.05)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)',
 '                                      A1 ........|.        0.9 in (0,1)',
 '                                  center ....|.....          0 in (-0.1,0.1)',
 '                                   hwhm1 |.........       0.05 in (0,0.5)',
 '                                   hwhm2 |.........        0.3 in (0,3)',
 '                                   scale ........|.         35 in (0.1,40)']

Choice of minimizer for bumps

[8]:
options_dict = {}

for item in fitters.__dict__.keys():
    if item.endswith('Fit') and fitters.__dict__[item].id in fitters.FIT_AVAILABLE_IDS:
        options_dict[fitters.__dict__[item].name] = fitters.__dict__[item].id

w_choice_minimizer = ipywidgets.Dropdown(
    options=list(options_dict.keys()),
    value='Levenberg-Marquardt',
    description='Minimizer:',
    layout=ipywidgets.Layout(height='40px'))

w_choice_minimizer
[8]:

Number of steps for running fit using bumps

[9]:
steps_fitting = ipywidgets.IntText(
    value=100,
    step=100,
    description='Number of steps when fitting',
    style={'description_width': 'initial'})

steps_fitting
[9]:

Running the fit

Run the fit using the minimizer defined above with a number of steps also specified above

[10]:
# Preview of the settings
print('Initial chisq', problem.chisq_str())
Initial chisq 20737.440(31)
[11]:
def settings_selected_optimizer(chosen_minimizer):
    """
    List the settings available for the selected optimizer

    This list can be used as arguments for the `fit` function
    """

    assert type(chosen_minimizer) == ipywidgets.widgets.widget_selection.Dropdown

    for item in fitters.__dict__.keys():
        if item.endswith('Fit') and \
        fitters.__dict__[item].id == options_dict[chosen_minimizer.value]:
            return [elt[0] for elt in fitters.__dict__[item].settings]
[12]:
print((f"With {w_choice_minimizer.value} optimizer, "
      f"you can use {settings_selected_optimizer(w_choice_minimizer)} as arguments of `fit`"))
With Levenberg-Marquardt optimizer, you can use ['steps', 'ftol', 'xtol'] as arguments of `fit`
[13]:
result = fitters.fit(
    problem,
    starts=10,
    keep_best=True,
    method=options_dict[w_choice_minimizer.value],
    steps=int(steps_fitting.value)
)
/home/docs/checkouts/readthedocs.org/user_builds/qensmodels/envs/latest/lib/python3.8/site-packages/scipy/optimize/_minpack_py.py:486: RuntimeWarning: overflow encountered in matmul
  cov_x = invR @ invR.T

Showing the results

[14]:
problem.summarize().splitlines()
[14]:
['                                      A0 |......... 6.40563e-07 in (0,0.05)',
 '                                      A1 ........|.   0.898278 in (0,1)',
 '                                  center ....|..... -7.08125e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0499538 in (0,0.5)',
 '                                   hwhm2 .|........   0.303983 in (0,3)',
 '                                   scale .........|    19.9852 in (1e-12,20)',
 '                                      A1 .........|   0.901528 in (0,1)',
 '                                  center .....|.... 4.53655e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0493148 in (0,0.5)',
 '                                   hwhm2 |.........   0.296466 in (0,3)',
 '                                   scale .........|    19.9644 in (1e-12,20)',
 '                                      A1 .........|   0.900315 in (0,1)',
 '                                  center ....|..... -0.000586752 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0486912 in (0,0.5)',
 '                                   hwhm2 |.........   0.299615 in (0,3)',
 '                                   scale .........|    19.9939 in (1e-12,20)',
 '                                      A1 .........|   0.900316 in (0,1)',
 '                                  center .....|.... 5.12171e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0497165 in (0,0.5)',
 '                                   hwhm2 .|........   0.301029 in (0,3)',
 '                                   scale .........|    19.9809 in (1e-12,20)',
 '                                      A1 ........|.   0.897142 in (0,1)',
 '                                  center ....|..... -0.000128966 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0505589 in (0,0.5)',
 '                                   hwhm2 .|........   0.301772 in (0,3)',
 '                                   scale .........|    19.9926 in (1e-12,20)',
 '                                      A1 ........|.   0.898941 in (0,1)',
 '                                  center ....|..... -0.00043932 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0494654 in (0,0.5)',
 '                                   hwhm2 .|........   0.302364 in (0,3)',
 '                                   scale .........|    19.9861 in (1e-12,20)',
 '                                      A1 .........|   0.900841 in (0,1)',
 '                                  center ....|..... -4.12156e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0491177 in (0,0.5)',
 '                                   hwhm2 .|........   0.305618 in (0,3)',
 '                                   scale .........|    19.9779 in (1e-12,20)',
 '                                      A1 ........|.   0.898702 in (0,1)',
 '                                  center .....|.... 0.000113609 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0507005 in (0,0.5)',
 '                                   hwhm2 |.........   0.297403 in (0,3)',
 '                                   scale .........|    19.9803 in (1e-12,20)',
 '                                      A1 ........|.    0.89853 in (0,1)',
 '                                  center ....|..... -8.64409e-05 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0501944 in (0,0.5)',
 '                                   hwhm2 .|........   0.303552 in (0,3)',
 '                                   scale .........|    19.9788 in (1e-12,20)',
 '                                      A1 .........|   0.900698 in (0,1)',
 '                                  center .....|.... 4.01502e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0499751 in (0,0.5)',
 '                                   hwhm2 |.........   0.299563 in (0,3)',
 '                                   scale .........|    19.9519 in (1e-12,20)',
 '                                      A1 ........|.   0.898485 in (0,1)',
 '                                  center ....|..... -0.000161038 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0512825 in (0,0.5)',
 '                                   hwhm2 .|........   0.300586 in (0,3)',
 '                                   scale .........|    19.9683 in (1e-12,20)',
 '                                      A1 ........|.   0.898977 in (0,1)',
 '                                  center ....|..... -0.000133716 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0500185 in (0,0.5)',
 '                                   hwhm2 .|........   0.301412 in (0,3)',
 '                                   scale .........|    19.9652 in (1e-12,20)',
 '                                      A1 ........|.   0.897759 in (0,1)',
 '                                  center ....|..... -0.000117344 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0505495 in (0,0.5)',
 '                                   hwhm2 .|........   0.307523 in (0,3)',
 '                                   scale .........|    19.9603 in (1e-12,20)',
 '                                      A1 ........|.   0.898874 in (0,1)',
 '                                  center .....|.... 0.000193948 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0504063 in (0,0.5)',
 '                                   hwhm2 .|........   0.302893 in (0,3)',
 '                                   scale .........|    19.9866 in (1e-12,20)',
 '                                      A1 ........|.   0.896571 in (0,1)',
 '                                  center .....|.... 0.000280484 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0495552 in (0,0.5)',
 '                                   hwhm2 .|........   0.307106 in (0,3)',
 '                                   scale .........|    19.9848 in (1e-12,20)',
 '                                      A1 .........|   0.901675 in (0,1)',
 '                                  center ....|..... -0.000104905 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0509315 in (0,0.5)',
 '                                   hwhm2 .|........   0.302898 in (0,3)',
 '                                   scale .........|    19.9771 in (1e-12,20)',
 '                                      A1 ........|.   0.898513 in (0,1)',
 '                                  center ....|..... -0.000169988 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0507559 in (0,0.5)',
 '                                   hwhm2 .|........   0.304344 in (0,3)',
 '                                   scale .........|    19.9753 in (1e-12,20)',
 '                                      A0 |......... 1.32595e-10 in (0,0.05)',
 '                                      A1 ........|.   0.899526 in (0,1)',
 '                                  center .....|.... 0.000399457 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0503556 in (0,0.5)',
 '                                   hwhm2 |.........   0.296365 in (0,3)',
 '                                   scale ........|.    35.0602 in (0.1,40)',
 '                                      A1 ........|.   0.898901 in (0,1)',
 '                                  center ....|..... -6.89823e-05 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0497165 in (0,0.5)',
 '                                   hwhm2 .|........   0.302221 in (0,3)',
 '                                   scale ........|.    34.9585 in (0.1,40)',
 '                                      A1 ........|.   0.897172 in (0,1)',
 '                                  center ....|..... -0.000180213 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0501564 in (0,0.5)',
 '                                   hwhm2 .|........   0.305905 in (0,3)',
 '                                   scale ........|.    34.9305 in (0.1,40)',
 '                                      A1 .........|   0.901657 in (0,1)',
 '                                  center .....|.... 3.60517e-06 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0492323 in (0,0.5)',
 '                                   hwhm2 .|........   0.306853 in (0,3)',
 '                                   scale ........|.     35.046 in (0.1,40)',
 '                                      A1 ........|.   0.898587 in (0,1)',
 '                                  center .....|.... 5.12415e-05 in (-0.1,0.1)',
 '                                   hwhm1 .|........   0.050411 in (0,0.5)',
 '                                   hwhm2 .|........   0.300086 in (0,3)',
 '                                   scale ........|.    35.0089 in (0.1,40)',
 '                                      A1 ........|.   0.899559 in (0,1)',
 '                                  center ....|..... -0.000243863 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0508027 in (0,0.5)',
 '                                   hwhm2 .|........   0.307336 in (0,3)',
 '                                   scale ........|.    34.9786 in (0.1,40)',
 '                                      A1 ........|.   0.898591 in (0,1)',
 '                                  center .....|.... 0.000181708 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0501057 in (0,0.5)',
 '                                   hwhm2 .|........   0.305296 in (0,3)',
 '                                   scale ........|.    34.9021 in (0.1,40)',
 '                                      A1 ........|.   0.897789 in (0,1)',
 '                                  center ....|..... -3.07694e-05 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0505332 in (0,0.5)',
 '                                   hwhm2 |.........   0.294994 in (0,3)',
 '                                   scale ........|.    34.9754 in (0.1,40)',
 '                                      A1 ........|.   0.899633 in (0,1)',
 '                                  center .....|.... 0.00030377 in (-0.1,0.1)',
 '                                   hwhm1 |.........  0.0490531 in (0,0.5)',
 '                                   hwhm2 |.........   0.296947 in (0,3)',
 '                                   scale ........|.    35.0062 in (0.1,40)',
 '                                      A1 .........|   0.900139 in (0,1)',
 '                                  center ....|..... -0.000145691 in (-0.1,0.1)',
 '                                   hwhm1 .|........  0.0509461 in (0,0.5)',
 '                                   hwhm2 .|........    0.30044 in (0,3)',
 '                                   scale ........|.     34.872 in (0.1,40)',
 '                                      A1 ........|.   0.899476 in (0,1)',
 '                                  center ....|..... -0.000318004 in (-0.1,0.1)',
 '                                   hwhm1 |.........   0.049114 in (0,0.5)',
 '                                   hwhm2 .|........   0.305958 in (0,3)',
 '                                   scale ........|.    35.0246 in (0.1,40)']
[15]:
# Other method to display the results of the fit (chi**2 and parameters' values)
print("final chisq", problem.chisq_str())
for k, v, dv in zip(problem.labels(), result.x, result.dx):
        print(k, ":", format_uncertainty_pm(v, dv))
final chisq 20567.610(31)
A0 : 0.00e-3 +/- 0.66e-3
A1 : 0.8983 +/- 0.0027
center : -71e-6 +/- 82e-6
hwhm1 : 0.04995 +/- 0.00022
hwhm2 : 0.3040 +/- 0.0082
scale : 19.985 +/- 0.023
A1 : 0.9015 +/- 0.0025
center : 45e-6 +/- 64e-6
hwhm1 : 0.04931 +/- 0.00020
hwhm2 : 0.2965 +/- 0.0075
scale : 19.964 +/- 0.019
A1 : 0.9003 +/- 0.0024
center : -587e-6 +/- 60e-6
hwhm1 : 0.04869 +/- 0.00020
hwhm2 : 0.2996 +/- 0.0078
scale : 19.994 +/- 0.019
A1 : 0.9003 +/- 0.0026
center : 51e-6 +/- 55e-6
hwhm1 : 0.04972 +/- 0.00021
hwhm2 : 0.3010 +/- 0.0084
scale : 19.981 +/- 0.019
A1 : 0.8971 +/- 0.0027
center : -129e-6 +/- 58e-6
hwhm1 : 0.05056 +/- 0.00021
hwhm2 : 0.3018 +/- 0.0086
scale : 19.993 +/- 0.019
A1 : 0.8989 +/- 0.0026
center : -439e-6 +/- 55e-6
hwhm1 : 0.04947 +/- 0.00020
hwhm2 : 0.3024 +/- 0.0089
scale : 19.986 +/- 0.019
A1 : 0.9008 +/- 0.0025
center : -41e-6 +/- 82e-6
hwhm1 : 0.04912 +/- 0.00020
hwhm2 : 0.3056 +/- 0.0091
scale : 19.978 +/- 0.019
A1 : 0.8987 +/- 0.0027
center : 114e-6 +/- 52e-6
hwhm1 : 0.05070 +/- 0.00020
hwhm2 : 0.2974 +/- 0.0090
scale : 19.980 +/- 0.019
A1 : 0.8985 +/- 0.0025
center : -86e-6 +/- 37e-6
hwhm1 : 0.05019 +/- 0.00019
hwhm2 : 0.3036 +/- 0.0088
scale : 19.979 +/- 0.019
A1 : 0.9007 +/- 0.0024
center : 40e-6 +/- 40e-6
hwhm1 : 0.04998 +/- 0.00019
hwhm2 : 0.2996 +/- 0.0089
scale : 19.952 +/- 0.019
A1 : 0.8985 +/- 0.0024
center : -161e-6 +/- 37e-6
hwhm1 : 0.05128 +/- 0.00019
hwhm2 : 0.3006 +/- 0.0087
scale : 19.968 +/- 0.018
A1 : 0.8990 +/- 0.0023
center : -134e-6 +/- 38e-6
hwhm1 : 0.05002 +/- 0.00018
hwhm2 : 0.3014 +/- 0.0084
scale : 19.965 +/- 0.018
A1 : 0.8978 +/- 0.0021
center : -117e-6 +/- 30e-6
hwhm1 : 0.05055 +/- 0.00017
hwhm2 : 0.3075 +/- 0.0081
scale : 19.960 +/- 0.018
A1 : 0.8989 +/- 0.0020
center : 194e-6 +/- 35e-6
hwhm1 : 0.05041 +/- 0.00017
hwhm2 : 0.3029 +/- 0.0077
scale : 19.987 +/- 0.017
A1 : 0.8966 +/- 0.0018
center : 280e-6 +/- 27e-6
hwhm1 : 0.04956 +/- 0.00016
hwhm2 : 0.3071 +/- 0.0073
scale : 19.985 +/- 0.017
A1 : 0.9017 +/- 0.0019
center : -105e-6 +/- 25e-6
hwhm1 : 0.05093 +/- 0.00016
hwhm2 : 0.3029 +/- 0.0074
scale : 19.977 +/- 0.017
A1 : 0.8985 +/- 0.0018
center : -170e-6 +/- 27e-6
hwhm1 : 0.05076 +/- 0.00016
hwhm2 : 0.3043 +/- 0.0069
scale : 19.975 +/- 0.016
A0 : 0.000e-3 +/- 0.094e-3
A1 : 0.8995 +/- 0.0016
center : 399e-6 +/- 53e-6
hwhm1 : 0.05036 +/- 0.00011
hwhm2 : 0.296 +/- 0.010
scale : 35.060 +/- 0.046
A1 : 0.8989 +/- 0.0015
center : -69e-6 +/- 41e-6
hwhm1 : 0.049716 +/- 0.000084
hwhm2 : 0.3022 +/- 0.0058
scale : 34.959 +/- 0.022
A1 : 0.8972 +/- 0.0017
center : -180e-6 +/- 45e-6
hwhm1 : 0.05016 +/- 0.00010
hwhm2 : 0.3059 +/- 0.0065
scale : 34.930 +/- 0.026
A1 : 0.9017 +/- 0.0017
center : 0.00e9 +/- 0.10e9
hwhm1 : 0.049232 +/- 0.000097
hwhm2 : 0.3069 +/- 0.0073
scale : 35.046 +/- 0.026
A1 : 0.8986 +/- 0.0019
center : 51e-6 +/- 54e-6
hwhm1 : 0.05041 +/- 0.00011
hwhm2 : 0.3001 +/- 0.0077
scale : 35.009 +/- 0.028
A1 : 0.8996 +/- 0.0020
center : -244e-6 +/- 46e-6
hwhm1 : 0.05080 +/- 0.00011
hwhm2 : 0.3073 +/- 0.0082
scale : 34.979 +/- 0.030
A1 : 0.8986 +/- 0.0020
center : 182e-6 +/- 46e-6
hwhm1 : 0.05011 +/- 0.00011
hwhm2 : 0.3053 +/- 0.0082
scale : 34.902 +/- 0.030
A1 : 0.8978 +/- 0.0021
center : -31e-6 +/- 39e-6
hwhm1 : 0.05053 +/- 0.00012
hwhm2 : 0.2950 +/- 0.0081
scale : 34.975 +/- 0.030
A1 : 0.8996 +/- 0.0018
center : 304e-6 +/- 38e-6
hwhm1 : 0.049053 +/- 0.000098
hwhm2 : 0.2969 +/- 0.0078
scale : 35.006 +/- 0.028
A1 : 0.9001 +/- 0.0018
center : -146e-6 +/- 30e-6
hwhm1 : 0.050946 +/- 0.000095
hwhm2 : 0.3004 +/- 0.0081
scale : 34.872 +/- 0.029
A1 : 0.8995 +/- 0.0019
center : -318e-6 +/- 24e-6
hwhm1 : 0.049114 +/- 0.000076
hwhm2 : 0.3060 +/- 0.0086
scale : 35.025 +/- 0.039

Display final configuration: experimental data, fitting model with output of fitting for the refined parameters

[16]:
slider1 = ipywidgets.IntSlider(value=0, min=0, max=len(q_5A)+len(q_8A)-1, continuous_update=False)
output1 = ipywidgets.Output()

with output1:
    fig1, ax1 = plt.subplots(nrows=2, ncols=1, sharex=True)
    ax1[0].grid(); ax1[1].grid()
    ax1[1].set_ylabel('Residual')
    ax1[1].set_xlabel(f"$\hbar \omega$")
    fig_q(model_all_qs, ax1, 0)

def update_profile1(change):
    """
    Update plots for a new q-value
    """
    with output1:
        ax1[0].clear(); ax1[1].lines.clear()
        ax1[0].grid()
        fig_q(model_all_qs, ax1, change['new'])

slider1.observe(update_profile1, names="value")

slider1_label = ipywidgets.Label("q value to display")
slider1_comp = ipywidgets.HBox([slider1_label, slider1])
ipywidgets.VBox([slider1_comp, output1])
[16]:
[ ]:


Generated by nbsphinx from a Jupyter notebook.