Example #1
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
Example #2
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
Example #3
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
Example #4
0
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
Example #5
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
Example #6
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
Example #7
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    
Example #8
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
Example #9
0
def make_stick():
    from eos import Nominal, Spline_eos
    return Stick(Spline_eos(Nominal()))