Example #1
0
def test_variogram_cloud_3():
    n = 100
    x = np.zeros(n)
    y = np.zeros(n)
    v = np.zeros(n)
    (hc, gc) = variogram.cloud(x, y, v)
    assert (hc.shape[0] == n * (n - 1) / 2 and gc.shape[0] == n * (n - 1) / 2)
Example #2
0
def main():
    """
    Plots variogram cloud of cobalt concentration measurments.
    """
    jura_data = np.genfromtxt('data.txt', names=True)
    hc, gc = variogram.cloud(jura_data['X'], jura_data['Y'], jura_data['Co'])
    plt.scatter(hc, gc, s=10)
    plt.xlabel('distance')
    plt.ylabel('Squared differences of concentrations')
    plt.xlim(xmin=0)
    plt.ylim(ymin=0)
    plt.title('Variogram cloud of measured cobalt concentrations (mg/kg)')
    plt.show()
Example #3
0
def main():
    """
    Plots experimental variogram of cobalt concentration data.
    """
    lag = 0.1  # width of bin
    nlag = 40  # number of bins
    jura_data = np.genfromtxt('data.txt', names=True)
    hc, gc = variogram.cloud(jura_data['X'], jura_data['Y'], jura_data['Co'])
    he, ge = variogram.experimental(hc, gc, lag, nlag)

    plt.scatter(he, ge, s=30)  # marker size 's' set to 30
    variance = np.var(jura_data['Co'])
    # variance presented as dashed line
    plt.axhline(variance, linestyle='--')
    plt.scatter(he, ge)
    # axes labels
    plt.xlabel('distance')
    plt.ylabel('gamma')
    # axes limits
    plt.xlim(xmin=0, xmax=lag * nlag)
    plt.ylim(ymin=0)
    plt.title('Experimental variogram of cobalt concentration (mg/kg)')
    plt.show()
Example #4
0
def main():
    """
    Plots different variogram models and compares them to experimental data.
    """
    lag = 0.1
    nlag = 40
    jura_data = np.genfromtxt('data.txt', names=True)
    hc, gc = variogram.cloud(jura_data['X'], jura_data['Y'], jura_data['Co'])
    he, ge = variogram.experimental(hc, gc, lag, nlag)

    # Print one figure with 4 subplots, subplot syntax: (rows, columns, number)
    # Each figure represents a different variogram model for the same data
    plt.figure(1)

    # Gaussian
    plt.subplot(221)
    x = np.linspace(0, nlag * lag, 1000)
    y = model.gaussian(x, 10, 0.9) + 3.0
    plt.scatter(he, ge, s=30)
    variance = np.var(jura_data['Co'])
    plt.axhline(variance, linestyle='--')
    plt.xlim(xmin=0, xmax=lag * nlag)
    plt.ylim(ymin=0)
    plt.title('Gaussian')
    plt.plot(x, y)

    # Exponential
    plt.subplot(222)
    x = np.linspace(0, nlag * lag, 1000)
    y = model.exponential(x, 12.5, 1.5)
    plt.scatter(he, ge, s=30)
    variance = np.var(jura_data['Co'])
    plt.axhline(variance, linestyle='--')
    plt.xlim(xmin=0, xmax=lag * nlag)
    plt.ylim(ymin=0)
    plt.title('Exponential')
    plt.plot(x, y)

    # Spherical
    plt.subplot(223)
    x = np.linspace(0, nlag * lag, 1000)
    y = model.spherical(x, 13, 1.5)
    plt.scatter(he, ge, s=30)
    variance = np.var(jura_data['Co'])
    plt.axhline(variance, linestyle='--')
    plt.xlim(xmin=0, xmax=lag * nlag)
    plt.ylim(ymin=0)
    plt.xlabel('distance')
    plt.ylabel('gamma')
    plt.title('Spherical')
    plt.plot(x, y)

    # Pure nugget
    plt.subplot(224)
    x = np.linspace(0, nlag * lag, 1000)
    y = model.nugget(x, 13)
    plt.scatter(he, ge, s=30)  # marker size 's' set to 30
    variance = np.var(jura_data['Co'])
    plt.axhline(variance, linestyle='--')
    plt.xlim(xmin=0, xmax=lag * nlag)
    plt.ylim(ymin=0)
    plt.title('Nugget')
    plt.plot(x, y)

    plt.show()
Example #5
0
def main():
    """
    Performs cross validation for different model variograms.
    """
    jura_data = np.genfromtxt('data.txt', names=True)
    x, y, v = jura_data['X'], jura_data['Y'], jura_data['Co']

    success, Q1, Q2, MSE, cR = cross_validation.orthonormal_residuals(
        x, y, v, model_function1)
    print('function type, success, Q1, Q2, MSE, cR')
    print('1', success, Q1, Q2, MSE, cR)
    success, Q1, Q2, MSE, cR = cross_validation.orthonormal_residuals(
        x, y, v, model_function2)
    print('2', success, Q1, Q2, MSE, cR)
    success, Q1, Q2, MSE, cR = cross_validation.orthonormal_residuals(
        x, y, v, model_function3)
    print('3', success, Q1, Q2, MSE, cR)
    success, Q1, Q2, MSE, cR = cross_validation.orthonormal_residuals(
        x, y, v, model_function4)
    print('4', success, Q1, Q2, MSE, cR)
    success, Q1, Q2, MSE, cR, v_est, v_var, v, normalized_error = cross_validation.orthonormal_residuals(
        x, y, v, model_function5, return_values=True)
    print('5', success, Q1, Q2, MSE, cR)

    plt.figure(1)

    plt.subplot(221)
    plt.scatter(v_est, v[1:], marker='o')
    plt.plot(v_est, v_est)
    plt.xlabel('Estimation')
    plt.ylabel('True value')
    plt.axis('scaled')
    plt.xlim(xmin=0)
    plt.ylim(ymin=0)

    plt.subplot(222)
    plt.hist(normalized_error, normed=1)
    x_draw = np.linspace(-5, 5, 100)
    plt.plot(x_draw, norm.pdf(x_draw, 0, 1))
    plt.xlabel('Normalised error')
    plt.ylabel('pdf')
    plt.title('Histogram of normalised error')

    plt.subplot(223)
    plt.scatter(x[1:],
                y[1:],
                s=10 * np.abs(normalized_error),
                c=np.abs(normalized_error))
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Normalised error')

    hc, gc = variogram.cloud(x[1:], y[1:, ], normalized_error)
    nlag = 8
    lag = (np.max((np.max(x), np.max(y))) - np.min(
        (np.min(x), np.min(y)))) * 2 / 3 / nlag
    he, ge = variogram.experimental(hc, gc, lag, nlag)
    plt.subplot(224)
    plt.scatter(he, ge)
    plt.axhline(1, linestyle='--')
    plt.ylim([0.0, 1.1 * np.max(ge)])
    plt.xlabel('Estimation')
    plt.ylabel('True value')
    plt.title('Variogram of normalised error')

    plt.show()
Example #6
0
def main():
    """
    Application of conditional simulations to Pb data
    """
    jura_data = np.genfromtxt('data.txt', names=True)
    ns = nscore.transform(jura_data['Pb'])
    y = ns.direct(jura_data['Pb'])
    hc, gc = variogram.cloud(jura_data['X'], jura_data['Y'], y)
    nlag = 50
    hmax = 2 * np.max(hc) / 3
    lag = hmax / nlag
    he, ge = variogram.experimental(hc, gc, lag, nlag)

    hm = np.linspace(0, hmax, 300)
    vm = model_function(hm)
    cm = covmodel(hm)

    plt.figure(1)
    plt.scatter(he, ge)
    plt.plot(hm, vm)
    plt.plot(hm, cm)
    plt.xlabel('h')
    plt.ylabel('gamma(h)')

    nx = 60
    ny = 60
    xmin = 1.6
    xmax = 4.2
    ymin = 0.8
    ymax = 3.4

    xi, yi = np.meshgrid(np.linspace(xmin, xmax, nx),
                         np.linspace(ymin, ymax, ny))
    v_est, v_var = kriging.ordinary_mesh(jura_data['X'], jura_data['Y'], y,
                                         xi.flatten(), yi.flatten(),
                                         model_function)
    v_sim1 = sgs.conditional(jura_data['X'], jura_data['Y'], y, xi.flatten(),
                             yi.flatten(), covmodel, 15)
    v_sim2 = sgs.conditional(jura_data['X'], jura_data['Y'], y, xi.flatten(),
                             yi.flatten(), covmodel, 15)
    v_sim3 = sgs.conditional(jura_data['X'], jura_data['Y'], y, xi.flatten(),
                             yi.flatten(), covmodel, 15)

    plt.figure(2)
    plt.subplot(221)
    grid = v_est.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Kriging')
    plt.colorbar()

    plt.subplot(222)
    grid = v_sim1.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 1')
    plt.colorbar()

    plt.subplot(223)
    grid = v_sim2.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 2')
    plt.colorbar()

    plt.subplot(224)
    grid = v_sim3.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 3')
    plt.colorbar()

    real_est = ns.back(v_est)
    real_sim1 = ns.back(v_sim1)
    real_sim2 = ns.back(v_sim2)
    real_sim3 = ns.back(v_sim3)

    plt.figure(3)
    plt.subplot(221)
    grid = real_est.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Kriging')
    plt.colorbar()

    plt.subplot(222)
    grid = real_sim1.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 1')
    plt.colorbar()

    plt.subplot(223)
    grid = real_sim2.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 2')
    plt.colorbar()

    plt.subplot(224)
    grid = real_sim3.reshape((nx, ny))
    plt.imshow(grid,
               extent=(xi.min(), xi.max(), yi.min(), yi.max()),
               interpolation='nearest')
    plt.title('Simulation 3')
    plt.colorbar()

    # histograms
    plt.figure(4)
    plt.subplot(221)
    plt.hist(jura_data['Pb'])
    plt.title('Pb measurements')

    plt.subplot(222)
    plt.hist(real_est)
    plt.title('Kriged values')

    plt.subplot(223)
    plt.hist(real_sim1)
    plt.title('Simulated 1 values')

    plt.subplot(224)
    plt.hist(real_sim2)
    plt.title('Simulated 2 values')

    plt.show()
Example #7
0
def test_variogram_cloud():
    x = np.array([3.0])
    y = np.array([2.0])
    v = np.array([1.0])
    (hc, gc) = variogram.cloud(x, y, v)
    assert (hc.size == 0 and gc.size == 0)
Example #8
0
def test_variogram_cloud_2():
    x = np.array([2.0, 3.0])
    y = np.array([2.0, 3.0])
    v = np.array([1.0, 2.0])
    (hc, gc) = variogram.cloud(x, y, v)
    assert (hc[0] == np.sqrt(2.0) and gc[0] == 0.5)