\(\chi^2\) Example
%matplotlib inline
import pfunk
import matplotlib.pyplot as plt
import numpy as np
fresco_path = './48Ca_elastic_new.in'
fresco_names = ['p1', 'p2', 'p3', 'p4', ('p5', 'p5'), ('p6', 'p6'), 'p4']
fresco_positions = [54, 55, 56, 57, (58, 66), (59, 67), 65]
elastic_data_path = '48Ca_p_p.dat'
model = pfunk.model.Model(fresco_path, fresco_names, fresco_positions)
model.create_elastic_likelihood('fort.201', elastic_data_path)
model.create_likelihood()
model.x0 = model.fresco.x0
fit = pfunk.model_fit.MAPFit(model, lnlike=True, percent_range=5.0)
The initial logprob value is 342.2302664908259
fit.run_anneal(max_iter=1000)
At minimum 0.0744 accepted 1 iteration 3 Total Accepted : 11
fit.results.x
array([51.42176703, 1.16841407, 0.67832041, 0.5182274 , 1.3139269 ,
0.60787394, 7.54261164])
model.run_fresco(np.asarray(model.x0))
cs_orig = pfunk.fresco_classes.read_cross('fort.201')
model.run_fresco(fit.results.x)
cs = pfunk.fresco_classes.read_cross('fort.201')
d = model.likelihood[0].data
plt.plot(cs_orig.theta, cs_orig.sigma, label='Global', lw=1.5)
plt.plot(cs.theta, cs.sigma, label='Minimized', lw=1.5)
plt.errorbar(d.theta, d.sigma, d.erry, fmt='o', color='k')
plt.yscale('log')
plt.legend(fontsize=15)
plt.xticks(fontsize=15.0)
plt.yticks(fontsize=15.0)
plt.xlabel('$\\theta$', fontsize=20.0)
plt.ylabel('$\sigma/ \sigma_R$', fontsize=20.0)
plt.tight_layout()