def work(): ''' This code for debugging stuff will change often ''' import matplotlib.pyplot as plt from eos import Nominal, Spline_eos from fit import Opt vt = data() nom = Spline_eos(Nominal(),precondition=True) stick = Stick(nom) opt = Opt( nom, {'stick':stick}, {'stick':vt}) cs,costs = opt.fit(max_iter=10) D, ep, Sigma_inv = stick.compare(vt, cs[-1]) info = np.dot(D.T, np.dot(Sigma_inv, D)) _vals,_vecs = np.linalg.eigh(info) _vals = np.maximum(_vals, 0) i = np.argsort(_vals)[-1::-1] vals = _vals[i] vecs = _vecs[i] n_vals = len(np.where(vals > vals[0]*1e-20)[0]) n_vecs = len(np.where(vals > vals[0]*1e-2)[0]) fig = plt.figure() ax = fig.add_subplot(2,2,1) costs = np.array(costs) x = range(len(costs)) c_min = costs.min() c_max = costs.max() if c_min > 0: y = costs ylabel = r'$\log_{e}(p(y|c_i))$' else: offset = (c_max-c_min)*1e-5 -c_min y = costs + offset ylabel = r'$\log_{e}(p(y|\hat c_i)) + {0:.3e}$'.format(offset) ax.semilogy(x,y) ax.semilogy(x,y, 'kx') ax.set_ylabel(ylabel) ax.set_xlabel(r'$i$') ax.set_xticks(x) v = np.linspace(.2,50,500) ax = fig.add_subplot(2,2,2) ax.loglog(v,nom(v)) ax = fig.add_subplot(2,2,3) ax.semilogy(range(n_vals), vals[:n_vals]) ax = fig.add_subplot(2,2,4) for vec in vecs[:n_vecs]: f = nom.new_c(vec) ax.semilogx(v,f(v)) plt.show() vecs = _vecs[i] # for j,v in enumerate(vals): # print('v[{0:2d}] = {1:.3e}'.format(j,v)) return 0
def work(): ''' This code for debugging stuff will change often ''' import matplotlib.pyplot as plt from eos import Nominal, Spline_eos from fit import Opt vt = data() nom = Spline_eos(Nominal(), precondition=True) stick = Stick(nom) opt = Opt(nom, {'stick': stick}, {'stick': vt}) cs, costs = opt.fit(max_iter=10) D, ep, Sigma_inv = stick.compare(vt, cs[-1]) info = np.dot(D.T, np.dot(Sigma_inv, D)) _vals, _vecs = np.linalg.eigh(info) _vals = np.maximum(_vals, 0) i = np.argsort(_vals)[-1::-1] vals = _vals[i] vecs = _vecs[i] n_vals = len(np.where(vals > vals[0] * 1e-20)[0]) n_vecs = len(np.where(vals > vals[0] * 1e-2)[0]) fig = plt.figure() ax = fig.add_subplot(2, 2, 1) costs = np.array(costs) x = range(len(costs)) c_min = costs.min() c_max = costs.max() if c_min > 0: y = costs ylabel = r'$\log_{e}(p(y|c_i))$' else: offset = (c_max - c_min) * 1e-5 - c_min y = costs + offset ylabel = r'$\log_{e}(p(y|\hat c_i)) + {0:.3e}$'.format(offset) ax.semilogy(x, y) ax.semilogy(x, y, 'kx') ax.set_ylabel(ylabel) ax.set_xlabel(r'$i$') ax.set_xticks(x) v = np.linspace(.2, 50, 500) ax = fig.add_subplot(2, 2, 2) ax.loglog(v, nom(v)) ax = fig.add_subplot(2, 2, 3) ax.semilogy(range(n_vals), vals[:n_vals]) ax = fig.add_subplot(2, 2, 4) for vec in vecs[:n_vecs]: f = nom.new_c(vec) ax.semilogx(v, f(v)) plt.show() vecs = _vecs[i] # for j,v in enumerate(vals): # print('v[{0:2d}] = {1:.3e}'.format(j,v)) return 0
def test_log_like(): from eos import Nominal, Spline_eos vt = (data()) gun = Gun(Spline_eos(Nominal())) ll = gun.log_like(*gun.compare(vt)) if close(-ll, 970963830.012): return 0 else: return 1
def work(): ''' This code for debugging stuff will change often ''' import matplotlib.pyplot as plt from eos import Nominal, Spline_eos vt = (data()) gun = Gun(Spline_eos(Nominal(), precondition=False)) gun.debug_plot(vt, 'test') gun.debug_plot(None, None, show=True) return 0
def test_C(): from eos import Experiment, Spline_eos n_t = 15 N = 10 eos = Spline_eos(Experiment(), N=N, v_min=.38, v_max=4.2) C = Gun(eos).fit_C(n_t=n_t) assert C.shape == (n_t, N) assert close(C[1, 0], 2.05695528e-07) assert close(C[-1, -1], 6.45823399e-07) return 0
def test_Pq(): ''' ''' from eos import Nominal, Spline_eos vt = (data()) eos = Spline_eos(Nominal(), precondition=False) c = eos.get_c() gun = Gun(eos) P, q = eos.Pq_like(*gun.compare(vt, c)) assert P.shape == (50, 50) assert q.shape == (50, ) assert P[23, 23] == P.max() value = 3.286529435e-10 assert close(P.max(), value), 'P.max={0:.9e} != {1:.9e}'.format(P.max(), value) i = 22 assert np.argmin(q) == i, 'argmin={0} != 11'.format(np.argmin(q), i) value = 5.680863201e-01 assert close(-q[i], value), '-q[{2}]={0:.9e} != {1:.9e}'.format(-q[i], value, i) return 0
def test_Pq(): ''' ''' from eos import Nominal, Spline_eos vt = (data()) eos = Spline_eos(Nominal(),precondition=False) c = eos.get_c() gun = Gun(eos) P,q = eos.Pq_like(*gun.compare(vt, c)) assert P.shape == (50,50) assert q.shape == (50,) assert P[23,23] == P.max() value = 3.286529435e-10 assert close(P.max(), value), 'P.max={0:.9e} != {1:.9e}'.format( P.max(), value) i = 22 assert np.argmin(q) == i, 'argmin={0} != 11'.format( np.argmin(q), i) value = 5.680863201e-01 assert close(-q[i], value), '-q[{2}]={0:.9e} != {1:.9e}'.format( -q[i], value, i) return 0
def test_B_ep(): ''' B[i,j] = dv(t[i])/dc_velocity[j] ep[i] = v_simulation(t[i]) - v_experiment(t[i]) ''' from eos import Nominal, Spline_eos vt = (data()) eos = Spline_eos(Nominal()) B, ep = Gun(eos).fit_B_ep(vt) assert B.shape == (1000, 500) assert ep.shape == (1000, ) assert np.argmax(ep) == 345 assert close(ep[345], 1461.8632379214614) assert np.argmax(B[300, :]) == 165 assert close(B[300, 165], 0.66576300914271824) return 0
def make_stick(): from eos import Nominal, Spline_eos return Stick(Spline_eos(Nominal()))