def plot_surface_difference(surface_difference, filepath, title, cbar_min=None, cbar_max=None, ice_mask=None): if cbar_min is None: cbar_min = surface_difference.min() if cbar_max is None: cbar_max = surface_difference.max() fig, ax = plt.subplots() im_b = ax.imshow(surface_difference, cmap='RdBu_r', norm=MidpointNormalize(midpoint=0., vmin=cbar_min, vmax=cbar_max)) cbar = fig.colorbar(im_b) cbar.set_label('$\Delta$surface height (m)') ax.set_title(title) if ice_mask is not None: plot_glacier_contours(ax, ice_mask, linestyles='dashed', linewidths=[0.75]) plt.savefig(filepath) plt.clf()
def plot_bed_difference(bed_difference, filepath, title, cbar_min=None, cbar_max=None, ice_mask=None, bed_measurements=None): if cbar_min is None: cbar_min = bed_difference.min() if cbar_max is None: cbar_max = bed_difference.max() fig, ax = plt.subplots() im_b = ax.imshow(bed_difference, cmap='RdBu_r', norm=MidpointNormalize(midpoint=0., vmin=cbar_min, vmax=cbar_max)) cbar = plt.colorbar(im_b) cbar.set_label('$\Delta$bed height (m)') ax.set_title(title) if ice_mask is not None: plot_glacier_contours(ax, ice_mask, linestyles='dashed', linewidths=[0.75]) if bed_measurements is not None: plot_glacier_contours(ax, ~bed_measurements.mask, colors='k', linestyles='solid', linewidths=[1.]) plt.savefig(filepath) plt.clf()
dl = load_pickle(path) exp_name = experiment_naming_engine.get_experiment_name2(exp) if exp_name is not None and len(dl.step_indices) > 0: ice_mask = np.load(os.path.join(gdir, 'ref_ice_mask.npy')) bed_measurements = None if exp_name.startswith('bed measurements'): bed_measurements = np.load( os.path.join(idir, 'bed_measurements.pkl')) diff_first_guess = dl.first_guessed_bed - dl.true_bed diff_optimized = dl.beds[-1] - dl.true_bed cbar_min = min(diff_first_guess.min(), diff_optimized.min()) cbar_max = max(diff_first_guess.max(), diff_optimized.max()) cbar_min_max = max(abs(cbar_min), abs(cbar_max)) norm = MidpointNormalize(midpoint=0., vmin=-cbar_min_max, vmax=cbar_min_max) #my_cmap = sns.diverging_palette(240, 15, l=40, s=99, as_cmap=True) my_cmap = plt.get_cmap('seismic') plotpath = os.path.join( output_dir, '{:s}_{:s}_first_guess_bed_error.{' ':s}'.format(case.name, exp_name.replace('*', ' plus bed'), file_extension)) plot_bed_difference(diff_first_guess, plotpath, case, ice_mask=ice_mask, bed_measurements=bed_measurements, cbar_min=cbar_min, cbar_max=cbar_max, show_cbar=False,
if exp_name is not None: if exp_name.startswith('bed measurements'): ice_mask = np.load(os.path.join(gdir, 'ref_ice_mask.npy')) bed_measurements = np.load( os.path.join(idir, 'bed_measurements.pkl')) measurement_noise = bed_measurements - dl.true_bed np.ma.set_fill_value(measurement_noise, np.nan) cbar_min = measurement_noise.min() cbar_max = measurement_noise.max() cbar_min = np.floor(cbar_min / 5) * 5 cbar_max = np.ceil(cbar_max / 5) * 5 cbar_min_max = max(abs(cbar_min), abs(cbar_max)) norm = MidpointNormalize(midpoint=0., vmin=-cbar_min_max, vmax=cbar_min_max, mask=measurement_noise.mask) #my_cmap = sns.diverging_palette(240, 15, l=40, s=99, as_cmap=True) my_cmap = plt.get_cmap('PRGn') measurement_RMSE = RMSE(bed_measurements, dl.true_bed) text = 'measurement RMSE: {:.1f} m'.format(measurement_RMSE) plotpath = os.path.join( output_dir, '{:s}_{:s}_measurement_noise.{:s}'.format( case.name, exp_name, file_extension)) plot_bed_measurement(measurement_noise, plotpath, case, ice_mask=ice_mask, cbar_min=cbar_min, cbar_max=cbar_max, show_cbar=True,