In [1]:
%pylab inline
import numpy as np
import matplotlib.pyplot as plt
from lmfit.models import LinearModel, VoigtModel
from lmfit import minimize, Parameters
In [10]:
fig = plt.figure(figsize=[8,4])
ax = fig.add_subplot(111)
with open("/Users/stanpol/Dropbox/Stan-Marina/Mo3p.txt") as f:
data = np.loadtxt(f, unpack=True)
x = np.array(range(len(data))[100:290])
y = np.array(data[::-1][100:290])
background = LinearModel(prefix='lin_')
pars = background.guess(y, x=x)
voigt1 = VoigtModel(prefix='vo1_')
pars.update(voigt1.make_params())
pars['vo1_center'].set(160, min=100, max=250)
pars['vo1_sigma'].set(50, min=3)
pars['vo1_amplitude'].set(40000, min=20000)
mod = voigt1 + background
init = mod.eval(pars, x=x)
plt.plot(x, y)
out = mod.fit(y, pars, x=x)
print(out.fit_report(min_correl=0.5))
plt.plot(x, out.best_fit, 'r-')
plt.show()
In [15]:
fig = plt.figure(figsize=[8,4])
ax = fig.add_subplot(111)
with open("/Users/stanpol/Dropbox/Stan-Marina/Mo3p.txt") as f:
data = np.loadtxt(f, unpack=True)
x = np.array(range(len(data))[100:450])
y = np.array(data[::-1][100:450])
background = LinearModel(prefix='lin_')
pars = background.guess(y, x=x)
voigt1 = VoigtModel(prefix='vo1_')
pars.update(voigt1.make_params())
pars['vo1_center'].set(160, min=100, max=250)
pars['vo1_sigma'].set(50, min=3)
pars['vo1_amplitude'].set(40000, min=20000)
voigt2 = VoigtModel(prefix='vo2_')
pars.update(voigt2.make_params())
pars['vo2_center'].set(360, min=320, max=400)
pars['vo2_sigma'].set(50, min=3)
pars['vo2_amplitude'].set(40000, min=20000)
mod = voigt1 + voigt2 + background
init = mod.eval(pars, x=x)
plt.plot(x, y)
out = mod.fit(y, pars, x=x)
print(out.fit_report(min_correl=0.5))
plt.plot(x, out.best_fit, 'r-')
plt.show()
In [13]:
from lmfit.models import LinearModel, VoigtModel, SkewedGaussianModel
fig = plt.figure(figsize=[8,4])
ax = fig.add_subplot(111)
with open("/Users/stanpol/Dropbox/Stan-Marina/O1s.txt") as f:
data = np.loadtxt(f, unpack=True)
x = np.array(range(len(data))[40:110])
y = np.array(data[::-1][40:110])
background = LinearModel(prefix='lin_')
pars = background.guess(y, x=x)
sg1 = SkewedGaussianModel(prefix='sg1_')
pars.update(sg1.make_params())
pars['sg1_center'].set(70, min=50, max=100)
pars['sg1_sigma'].set(10, min=3)
pars['sg1_gamma'].set(4, min=1)
pars['sg1_amplitude'].set(140000, min=50000)
mod = sg1 + background
init = mod.eval(pars, x=x)
plt.plot(x, y)
out = mod.fit(y, pars, x=x)
print(out.fit_report(min_correl=0.5))
plt.plot(x, out.best_fit, 'r-')
plt.show()
In [ ]: