def main():
    basemap = polar_stereographic.basemap
    xs = polar_stereographic.xs
    ys = polar_stereographic.ys

    basin_patches = get_features_from_shape(basemap,linewidth = 0.5)

    cache_file = 'cache_high_dates.bin'
    if os.path.isfile(cache_file):
        data = pickle.load(open(cache_file))
        to_plot_current = data[0]
        to_plot_future = data[1]
    else:
        db = OccurrencesDB()

        current_days = db.get_mean_dates_of_maximum_annual_flow(current = True)
        print 'got current dates'

        future_days = db.get_mean_dates_of_maximum_annual_flow(current = False)
        print 'got future dates'

        print 'got data, plotting ...'

        to_plot_current = np.ma.masked_all(xs.shape)
        to_plot_future = np.ma.masked_all(xs.shape)
        for i, j, c_day, f_day in zip(db.i_indices, db.j_indices, current_days, future_days):
            to_plot_current[i, j] = c_day
            to_plot_future[i, j] = f_day
        data = [to_plot_current, to_plot_future]
        pickle.dump(data, open(cache_file, 'wb'))


    plt.figure()
    plt.subplot(1, 2, 1)
    basemap.pcolormesh(xs, ys, to_plot_current, vmin=1, vmax=300, cmap=mpl.cm.get_cmap('jet', 10))
    basemap.drawcoastlines(linewidth=0.3)
    # plot_basin_boundaries_from_shape(basemap, plotter = plt, linewidth = 0.5)
    plot_patches(plt, get_copies(basin_patches))
    zoom_to_qc()
    cb = plt.colorbar(ticks = MaxNLocator(nbins = 10))
    plt.title('current mean')

    plt.subplot(1, 2, 2)
    basemap.pcolormesh(xs, ys, to_plot_future, vmin=1, vmax=300, cmap=mpl.cm.get_cmap('jet', 10))
    basemap.drawcoastlines(linewidth=0.3)
    zoom_to_qc()
    plot_patches(plt, get_copies(basin_patches))
    # plot_basin_boundaries_from_shape(basemap, plotter = plt)
    plt.title('future mean')

    plt.colorbar(ticks = MaxNLocator(nbins = 10))

    plt.savefig('high_dates.png')
def main():
    db = OccurrencesDB()

    #define animation period
    current_start_date = datetime(1996,3,1,0,0,0)
    current_end_date = datetime(1999,8,1,0,0,0)

    future_start_date = datetime(2067,3,1,0,0,0)
    future_end_date = datetime(2070,8,1,0,0,0)

    simulation_step = timedelta(days = 5)


    #domain properties
    xs = polar_stereographic.xs
    ys = polar_stereographic.ys
    basemap = polar_stereographic.basemap

    positions = db.get_all_positions()
    i_indices = db.i_indices
    j_indices = db.j_indices
    index_zip = zip(i_indices, j_indices, positions)

    basin_patches = get_features_from_shape(basemap,linewidth = 0.5)

    #plot plots
    i = 0
    current_time = current_start_date
    future_time = future_start_date

    while current_time < current_end_date:
        to_plot_current = np.ma.masked_all(xs.shape)
        to_plot_future = np.ma.masked_all(xs.shape)
        for x, y, position in index_zip:
            current_year_pos = YearPositionObject(current_time.year, position)
            future_year_pos = YearPositionObject(future_time.year, position)

            to_plot_current[x, y] = \
                db.get_measure_of_distance_to_high_event(current_year_pos, current_time, current = True)
            to_plot_future[x, y] = \
                db.get_measure_of_distance_to_high_event(future_year_pos, future_time, current = False)



        #actual plotting
        plt.figure()
        plt.subplot(1,2,1)
        basemap.pcolormesh(xs, ys, to_plot_current, vmin = 0, vmax = 1, cmap = 'Blues')
        basemap.drawcoastlines(linewidth = 0.3)
       # plot_basin_boundaries_from_shape(basemap, plotter = plt, linewidth = 0.5)
        plot_patches(plt, get_copies(basin_patches))
        zoom_to_qc()
        plt.title(current_time.strftime('current: %Y-%m-%d'))

        plt.subplot(1,2,2)
        basemap.pcolormesh(xs, ys, to_plot_future, vmin = 0, vmax = 1, cmap = 'Blues', linewidth = 0.5)
        basemap.drawcoastlines(linewidth = 0.3)
        zoom_to_qc()
        plot_patches(plt, get_copies(basin_patches))
       # plot_basin_boundaries_from_shape(basemap, plotter = plt)
        plt.title(future_time.strftime('future: %Y-%m-%d'))

        plt.savefig('frame_%010d.png' % i)

        i += 1
        current_time += simulation_step
        future_time += simulation_step

        if current_time.month > current_end_date.month:
            current_time = datetime(current_time.year + 1, current_start_date.month, current_start_date.day)
            future_time = datetime(future_time.year + 1, future_start_date.month, future_start_date.day)


    pass