def graphEdiffDelta2D(ax, data1, data2, Na):
    #data1 = gt.convert * data1
    #data2 = gt.convert * data2

    x, y, z, d = gt.calculateelementdiff2D(data1)
    x2, y2, z2, d2 = gt.calculateelementdiff2D(data2)

    RMSE = gt.calculaterootmeansqrerror(d, d2) / float(Na)

    print('Number of atoms: ' + str(Na))
    print('RMSE: ' + str(RMSE) + ' kcal/mol/atom')
    print('RMSE: ' + str(float(Na) * RMSE) + ' kcal/mol')

    z = np.abs(z - z2)

    C = data1.shape[0]

    mat = np.ndarray(shape=(C, C), dtype=float)

    for i in x:
        for j in y:
            I = int(i)
            J = int(j)
            mat[J, I] = z[J + I * C]

    #get discrete colormap
    cmap = plt.get_cmap('RdBu', np.max(mat) - np.min(mat) + 1)

    # Show mat
    im = ax.matshow(mat, vmin=np.min(mat), vmax=np.max(mat))

    cmap = plt.cm.jet
    norm = plt.Normalize(mat.min(), mat.max())
    rgba = cmap(norm(mat))
    rgba[range(C), range(C), :3] = 1, 1, 1
    ax.imshow(rgba, interpolation='nearest')

    # Plot center line
    #ax.plot([x.min()-0.5,x.max()+0.5],[y.min()-0.5,x.max()+0.5],color='black',linewidth=4,alpha=0.9)

    # Set Limits
    ax.set_xlim([-0.02 * x.max(), x.max() + 0.02 * x.max()])
    ax.set_ylim([-0.02 * y.max(), y.max() + 0.02 * y.max()])

    ax.xaxis.tick_bottom()

    return im
def graphEdiffDelta2D(ax, data1, data2, Na):
    #data1 = gt.convert * data1
    #data2 = gt.convert * data2

    x, y, z, d = gt.calculateelementdiff2D(data1)
    x2, y2, z2, d2 = gt.calculateelementdiff2D(data2)

    RMSE = gt.calculaterootmeansqrerror(d,d2) / float(Na)

    print ('Number of atoms: ' + str(Na))
    print ('RMSE: ' + str(RMSE) + ' kcal/mol/atom')
    print ('RMSE: ' + str(float(Na)*RMSE) + ' kcal/mol')

    z = np.abs(z - z2)

    C = data1.shape[0]

    mat = np.ndarray(shape=(C,C),dtype=float)

    for i in x:
        for j in y:
            I = int(i)
            J = int(j)
            mat[J,I] = z[J+I*C]

    #get discrete colormap
    cmap = plt.get_cmap('RdBu', np.max(mat)-np.min(mat)+1)

    # Show mat
    im = ax.matshow(mat,vmin = np.min(mat), vmax = np.max(mat))

    cmap = plt.cm.jet
    norm = plt.Normalize(mat.min(), mat.max())
    rgba = cmap(norm(mat))
    rgba[range(C), range(C), :3] = 1, 1, 1
    ax.imshow(rgba, interpolation='nearest')

    # Plot center line
    #ax.plot([x.min()-0.5,x.max()+0.5],[y.min()-0.5,x.max()+0.5],color='black',linewidth=4,alpha=0.9)

    # Set Limits
    ax.set_xlim([-0.02*x.max(),x.max()+0.02*x.max()])
    ax.set_ylim([-0.02*y.max(),y.max()+0.02*y.max()])

    ax.xaxis.tick_bottom()

    return im
def graphEdiffDelta2D(ax, data1, data2, Na):
    #data1 = gt.convert * data1
    #data2 = gt.convert * data2

    x, y, z, d = gt.calculateelementdiff2D(data1)
    x2, y2, z2, d2 = gt.calculateelementdiff2D(data2)

    RMSE = gt.calculaterootmeansqrerror(d, d2) / float(Na)

    print('dataz1:', z)
    print('dataz2:', z2)

    z = np.abs(z - z2)

    print('zdiff:', z)

    # Set up a regular grid of interpolation points
    xi, yi = np.linspace(x.min(), x.max(),
                         100), np.linspace(y.min(), y.max(), 100)
    xi, yi = np.meshgrid(xi, yi)

    # Interpolate
    rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
    zi = rbf(xi, yi)

    im = ax.imshow(zi,
                   vmin=z.min(),
                   vmax=z.max(),
                   origin='lower',
                   extent=[x.min(), x.max(),
                           y.min(), y.max()])

    ax.set_title('Difference Plot (symmetric)\nRMSE: ' +
                 "{:.5f}".format(RMSE) + 'kcal/mol/atom Atoms: ' + str(Na),
                 fontsize=14)
    # plt.xlabel('Structure')
    # plt.ylabel('Structure')

    ax.scatter(x, y, c=z, vmin=z.min(), vmax=z.max())

    ax.set_xlim([-0.02 * x.max(), x.max() + 0.02 * x.max()])
    ax.set_ylim([-0.02 * y.max(), y.max() + 0.02 * y.max()])

    #ax.plot([x.min(),x.max()],[y.min(),x.max()],color='red',linewidth=4)
    ax.grid(True)

    return im
def graphEdiffDelta2D(ax, data1, data2, Na):
    data1 = gt.convert * data1
    data2 = gt.convert * data2

    x, y, z, d = gt.calculateelementdiff2D(data1)
    x2, y2, z2, d2 = gt.calculateelementdiff2D(data2)

    RMSE = gt.calculaterootmeansqrerror(d, d2) / float(Na)

    print("dataz1:", z)
    print("dataz2:", z2)

    z = np.abs(z - z2)

    print("zdiff:", z)

    # Set up a regular grid of interpolation points
    xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100)
    xi, yi = np.meshgrid(xi, yi)

    # Interpolate
    rbf = scipy.interpolate.Rbf(x, y, z, function="linear")
    zi = rbf(xi, yi)

    im = ax.imshow(zi, vmin=z.min(), vmax=z.max(), origin="lower", extent=[x.min(), x.max(), y.min(), y.max()])

    ax.set_title(
        "Difference Plot (symmetric)\nRMSE: " + "{:.5f}".format(RMSE) + "kcal/mol/atom Atoms: " + str(natm), fontsize=14
    )
    # plt.xlabel('Structure')
    # plt.ylabel('Structure')

    ax.scatter(x, y, c=z, vmin=z.min(), vmax=z.max())

    ax.set_xlim([-0.02 * x.max(), x.max() + 0.02 * x.max()])
    ax.set_ylim([-0.02 * y.max(), y.max() + 0.02 * y.max()])

    # ax.plot([x.min(),x.max()],[y.min(),x.max()],color='red',linewidth=4)
    ax.grid(True)

    return im
def getmaxmin(data):
    x, y, z, d = gt.calculateelementdiff2D(data)
    z = gt.convert * z
    return z.max(), z.min()