Beispiel #1
0
vmax_es = max(abs(pred_sim[0].min()), abs(pred_sim[0].max()),
              abs(pred_exp[0].min()), abs(pred_exp[0].max()))
data_lims_es = (-vmax_es, vmax_es)
data_lims_hm = (min(pred_sim[1].min(), pred_exp[1].min()),
                max(pred_sim[1].max(), pred_exp[1].max()) - 0.15)

# Set contour line levels to plot
levels_sim = [0.3, 0.6, 0.9, 1.2, 1.4, 1.53, 1.63, 1.75]
levels_exp = [0.3, 0.6, 0.9, 1.2, 1.4, 1.53, 1.63, 1.71]

# Plot simulation prediction
vis.plot_ES_contour(pred_sim_ax,
                    pred_sim[0][0],
                    pred_sim[1][0],
                    data_lims_es=data_lims_es,
                    data_lims_hm=data_lims_hm,
                    levels=levels_sim,
                    es_colorbar=False,
                    hm_colorbar=False,
                    axis_off=True)

# Plot experimental prediction
vis.plot_ES_contour(pred_exp_ax,
                    pred_exp[0][0],
                    pred_exp[1][0],
                    data_lims_es=data_lims_es,
                    data_lims_hm=data_lims_hm,
                    levels=levels_exp,
                    es_colorbar=False,
                    hm_colorbar=False,
                    axis_off=True)
Beispiel #2
0
                              horizontalalignment='center',
                              verticalalignment='center',
                              transform=input_axes[i, 0].transAxes,
                              rotation='vertical',
                              fontsize=fontsize)

    # Overlay molecule geometry onto first AFM image
    xyz_img = np.flipud(imageio.imread(f'images/{molecules[ib][5:-4]}.png'))
    input_axes[0, 0].imshow(xyz_img,
                            origin='lower',
                            extent=ims[0].get_extent())

    # Plot predictions
    vis.plot_ES_contour(pred_Cl_CO_ax,
                        pred_Cl_CO[0][0],
                        pred_Cl_CO[1][0],
                        es_colorbar=False,
                        hm_colorbar=False,
                        axis_off=True)
    vis.plot_ES_contour(pred_Xe_Cl_ax,
                        pred_Xe_Cl[0][0],
                        pred_Xe_Cl[1][0],
                        es_colorbar=False,
                        hm_colorbar=False,
                        axis_off=True)

    # Set titles for first row of images
    if ib == 0:
        input_axes[0, len(X_slices) // 2].set_title('AFM simulation',
                                                    fontsize=fontsize)
        pred_Cl_CO_ax.set_title('Prediction (Cl-CO)', fontsize=fontsize)
        pred_Xe_Cl_ax.set_title('Prediction (Cl-Xe)', fontsize=fontsize)
Beispiel #3
0
pred_ptcda = model_ptcda.predict(X_ptcda)

# Make figure
width_ratios = [4, 4, 4.5]
gridspec_kw = {'width_ratios': width_ratios, 'wspace': 0.3}
fig, (ax_sim, ax_bcb, ax_ptcda) = plt.subplots(1,
                                               3,
                                               figsize=(sum(width_ratios),
                                                        2.6),
                                               gridspec_kw=gridspec_kw)

# Plot simulation
plt.axes(ax_sim)
cbar, _ = vis.plot_ES_contour(ax_sim,
                              pred_sim[0][0],
                              pred_sim[1][0],
                              es_colorbar=True,
                              hm_colorbar=False,
                              axis_off=True)
cbar.set_ticks([-0.2, -0.1, 0.0, 0.1, 0.2])
# cbar.set_ticklabels([f'{i:.2f}'.replace('-', '$-$') for i in cbar.get_ticks()])
cbar.ax.tick_params(labelsize=fontsize - 4)
cbar.set_label('V/Å', fontsize=fontsize
               )  # Seems to be broken in matplotlib 3.3.3 with cmr10 font

# Plot BCB
plt.axes(ax_bcb)
cbar, _ = vis.plot_ES_contour(ax_bcb,
                              pred_bcb[0][0],
                              pred_bcb[1][0],
                              es_colorbar=True,
                              hm_colorbar=False,
Beispiel #4
0
                             (ptcda_axes, X_ptcda, pred_ptcda, 'PTCDA')]:

    # Loop over distances
    for i in range(len(X[0])):

        # Plot AFM
        for j, x in enumerate(X):
            for k, s in enumerate(X_slices):
                ax = axes[i, j * len(X_slices) + k]
                im = ax.imshow(x[i, :, :, s].T, origin='lower', cmap='afmhot')
                ax.set_axis_off()

        # Plot predictions
        vis.plot_ES_contour(axes[i, -1],
                            pred[0][i],
                            pred[1][i],
                            es_colorbar=False,
                            hm_colorbar=False,
                            axis_off=True)

    # Set titles
    p0 = axes[0, 0].get_position().get_points()
    p1 = axes[-1, 0].get_position().get_points()
    plt.text(p1[0][0] - 0.016, (p1[0][1] + p0[1][1]) / 2,
             title,
             fontsize=fontsize,
             transform=fig.transFigure,
             horizontalalignment='center',
             verticalalignment='center',
             rotation='vertical')
    px = [p0[0][0] - 0.005, p1[0][0] - 0.005]
    py = [p0[1][1] - 0.01, p1[0][1] + 0.01]
Beispiel #5
0
    input_axes[0, 0].imshow(xyz_img,
                            origin='lower',
                            extent=ims[0].get_extent())

    # Figure out data limits
    vmax = max(abs(pred[0].min()), abs(pred[0].max()), abs(Y[0].min()),
               abs(Y[0].max()))
    data_lims_es = (-vmax, vmax)
    data_lims_hm = (min(pred[1].min(),
                        Y[1].min()), max(pred[1].max(), Y[1].max()))

    # Plot prediction
    vis.plot_ES_contour(pred_ax,
                        pred[0][0],
                        pred[1][0],
                        data_lims_es=data_lims_es,
                        data_lims_hm=data_lims_hm,
                        es_colorbar=False,
                        hm_colorbar=False,
                        axis_off=True)

    # Plot reference
    vis.plot_ES_contour(ref_ax,
                        Y[0][0],
                        Y[1][0],
                        data_lims_es=data_lims_es,
                        data_lims_hm=data_lims_hm,
                        es_colorbar=False,
                        hm_colorbar=False,
                        axis_off=True)

    # Set titles for first row of images
Beispiel #6
0
        afm_axes[i, j].set_axis_off()

    # Put tip names to the left of the AFM image rows
    afm_axes[i, 0].text(-0.1,
                        0.5,
                        tip_names[i],
                        horizontalalignment='center',
                        verticalalignment='center',
                        transform=afm_axes[i, 0].transAxes,
                        rotation='vertical',
                        fontsize=fontsize)

# Plot prediction
vis.plot_ES_contour(pred_ax,
                    pred[0][0],
                    pred[1][0],
                    es_colorbar=False,
                    hm_colorbar=False,
                    axis_off=True)

# Plot ES Map colorbar
plt.rcParams["font.serif"] = "cmr10"
vmax = max(abs(pred[0][0].min()), abs(pred[0][0].max()))
vmin = -vmax
m_es = cm.ScalarMappable(cmap=cm.coolwarm)
m_es.set_array([vmin, vmax])
cbar = plt.colorbar(m_es, cax=cbar_es_ax)
cbar.set_ticks([-0.05, 0.0, 0.05])
# cbar.set_ticklabels([f'{i:.2f}'.replace('-', '$-$') for i in cbar.get_ticks()])
cbar_es_ax.tick_params(labelsize=fontsize - 4)
cbar.set_label('V/Å', fontsize=fontsize
               )  # Seems to be broken in matplotlib 3.3.3 with cmr10 font