def Plot_on_Segments(Scalar_Field,
                     Variable_Name,
                     year,
                     month,
                     day,
                     hour,
                     forecast_period,
                     num_cells,
                     filename='plot'):
    """
	Plot some field associated with the different segments.

	"""

    #Load a single instance of the data set so that we can get the latitude and longitude coordinates:

    f = mogreps.download_data('mogreps-uk',
                              mogreps.make_data_object_name(
                                  'mogreps-uk', year, Month_Map(month), day,
                                  hour, 0, forecast_period),
                              data_folder=Path('.'))
    data_set = netCDF4.Dataset(f)

    rotation = data_set['rotated_latitude_longitude']
    transform = ccrs.RotatedPole(
        pole_longitude=rotation.grid_north_pole_longitude,
        pole_latitude=rotation.grid_north_pole_latitude)
    projection = transform

    fig = plt.figure(figsize=(20, 10))
    #create an axis instance:
    ax = fig.add_subplot(111, projection=projection)
    pcm = ax.pcolormesh(data_set['grid_longitude'],
                        data_set['grid_latitude'],
                        Scalar_Field,
                        transform=transform,
                        cmap='jet')
    ax.coastlines(resolution='10m')
    #ax.colorbar()
    colbar = fig.colorbar(pcm)
    #ax.imshow(mark_boundaries(image, segments))
    #colbar.set_label("VAR("  + str(variable_name) + ")")
    plt.title(Variable_Name + " " + str(year) + "_" + month + "_" + str(day) +
              "_" + str(hour) + "_forcast_period=" + str(forecast_period))
    plt.savefig(filename + "_" + str(year) + "_" + month + "_" + str(day) +
                "_h_" + str(hour) + "_fp_" + str(forecast_period) + "_cells_" +
                str(num_cells),
                bbox_inches='tight')
    plt.show()
Ejemplo n.º 2
0
import numpy, scipy, matplotlib, cartopy, netCDF4, seaborn, mogreps

from pathlib import Path

forecast_3 = mogreps.download_data('mogreps-uk',
                                   mogreps.make_data_object_name(
                                       'mogreps-uk', 2015, 12, 5, 15, 0, 3),
                                   data_folder=Path('.'))
forecast_9 = mogreps.download_data('mogreps-uk',
                                   mogreps.make_data_object_name(
                                       'mogreps-uk', 2015, 12, 5, 9, 0, 9),
                                   data_folder=Path('.'))
forecast_15 = mogreps.download_data('mogreps-uk',
                                    mogreps.make_data_object_name(
                                        'mogreps-uk', 2015, 12, 5, 3, 0, 15),
                                    data_folder=Path('.'))
forecast_21 = mogreps.download_data('mogreps-uk',
                                    mogreps.make_data_object_name(
                                        'mogreps-uk', 2015, 12, 4, 21, 0, 21),
                                    data_folder=Path('.'))
forecast_27 = mogreps.download_data('mogreps-uk',
                                    mogreps.make_data_object_name(
                                        'mogreps-uk', 2015, 12, 4, 15, 0, 27),
                                    data_folder=Path('.'))
forecast_33 = mogreps.download_data('mogreps-uk',
                                    mogreps.make_data_object_name(
                                        'mogreps-uk', 2015, 12, 4, 9, 0, 33),
                                    data_folder=Path('.'))

DS_forecast_3 = netCDF4.Dataset(forecast_3)
DS_forecast_9 = netCDF4.Dataset(forecast_9)
def Get_Super_Pixel_STDs(variable, segments, year, month, day, hour,
                         forecast_period):
    """
    
    Given a segmentation into superpixels we compute the variance
    in a given variable across ensemble members for each superpixel.
    
    We then return the variance across the different ensemble members.
    
    Parameters
    ------------
    
    variable : str
    
    String specifying the property we are interested in analyisng 
    
    """

    #variable = 'air_temperature'

    STD_Vals = []
    Variance_Vals = []
    CV_Vals = []

    for PIXEL in range(np.max(segments)):

        #Loop over ensembles within a superpixel:
        num_ensemble_members = 12
        Averages_in_this_pixel = []

        print("Pixel = " + str(PIXEL))

        for i in range(num_ensemble_members):
            f = mogreps.download_data('mogreps-uk',
                                      mogreps.make_data_object_name(
                                          'mogreps-uk', year, Month_Map(month),
                                          day, hour, i, forecast_period),
                                      data_folder=Path('.'))
            data_set = netCDF4.Dataset(f)

            #Try except fudge to account for the fact that different arrays are at different depths:
            try:
                average_for_this_ensemble_member_in_this_super_pixel = np.mean(
                    data_set.variables[variable][0].data[segments == PIXEL])
            except:
                average_for_this_ensemble_member_in_this_super_pixel = np.mean(
                    data_set.variables[variable][0][0].data[segments == PIXEL])

            Averages_in_this_pixel.append(
                average_for_this_ensemble_member_in_this_super_pixel)

        #compute the varaiance for this superpixel:

        Variance_for_this_pixel = np.var(Averages_in_this_pixel)
        STD_for_this_pixel = np.std(Averages_in_this_pixel)
        STD_Vals.append(STD_for_this_pixel)
        Variance_Vals.append(Variance_for_this_pixel)
        CV_Vals.append(
            np.std(Averages_in_this_pixel) / np.mean(Averages_in_this_pixel))

    return STD_Vals, Variance_Vals, CV_Vals
Ejemplo n.º 4
0
p_array = output_data.variables['pressure_error']
T_array = output_data.variables['temperature_error']
r_array = output_data.variables['rainfall_error']

# Lead time of 3hrs
lead_time = 3

for year in years:
    for month in months:
        for day in days:
            for time in times:
                forecast_name = download_data('mogreps-uk',
                                              make_data('mogreps-uk',
                                                        year,
                                                        month,
                                                        day - 1,
                                                        time,
                                                        0,
                                                        lead_time),
                                              data_folder=Path('.'))

                reference_name = download_data('mogreps-uk',
                                               make_data('mogreps-uk',
                                                         year,
                                                         month,
                                                         day,
                                                         time,
                                                         0,
                                                         lead_time),
                                               data_folder=Path('.'))