Esempio n. 1
0
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,
Esempio n. 4
0
        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,