Example 8: Spatial average#

This example demonstrates how to import file and draw a time series of spatial average data with GINCCO_lib using GINCCO_lib.spatial_average.spatial_average() and GINCCO_lib.time_series_plot.plot_point().

Code Example#

Now we will import the library and the grid

# =========================
# IMPORTS
# =========================
import numpy as np
from netCDF4 import Dataset
from datetime import *
import GINCCO_lib as gc

# =========================
# CONFIGURATION
# =========================
tstart = datetime(2010, 1, 1)
tend   = datetime(2012, 12, 31)

path = '/work/users/tungnd/GOT271/GOT_REF5/OFFLINE/'

# =========================
# LOAD GRID AND DEPTH
# =========================
fgrid   = Dataset(path + 'grid.nc', 'r')
lat_t   = fgrid.variables['latitude_t'][:]
lon_t   = fgrid.variables['longitude_t'][:]
depth_t   = fgrid.variables['depth_t'][0,:,:]
dxy_t   = fgrid.variables['dxdy_t'][:]
mask_t_var = fgrid.variables['mask_t']
if mask_t_var.ndim == 3:
    mask_t = mask_t_var[0, :, :]
elif mask_t_var.ndim == 2:
    mask_t = mask_t_var[:, :]
depth_t[mask_t==0] = np.nan

Now define the box to average. In this example, we will define 3 boxes

# Step 1: Define a box
lon_min_box = [106, 107.1, 105.5]
lon_max_box = [107, 108.1, 106.7]
lat_min_box = [20, 20, 18.9]
lat_max_box = [21, 21, 19.9]
label_list = ['Box 1', 'Box 2', 'Box 3']

# Step 2: Plot boxes
gc.map_draw_box(
    lon_min=105, lon_max=111,
    lat_min=16.5, lat_max=22,
    title="Locations of regions and bathymetry (in m)",
    lon_data=lon_t,
    lat_data=lat_t,
    data_draw=depth_t[:, :],
    lon_min_box = lon_min_box,
    lon_max_box = lon_max_box,
    lat_min_box = lat_min_box,
    lat_max_box = lat_max_box,
    label = label_list,
    path_save="/prod/projects/data/tungnd/figure/",
    name_save="map_box"
)
../_images/example8.1.png

Now import data, calculate the mean and plot it

# Step 3: Import salinity map
# data_draw shape = (number of points, number of days)
sal_surface = gc.import_surface(path, 'sal', tstart, tend, ignore_missing='False')

# Step 4: Calculate salinity mean
sal_mean = np.zeros((len(lon_min_box), (tend-tstart).days +1    ))

for i in range(0, len(lat_min_box)):
    sal_mean[i,:] = gc.spatial_average(sal_surface,
        dxy_t,
        mask_ocean=mask_t,
        lon_t=lon_t,
        lat_t=lat_t,
        lon_min=lon_min_box[i],
        lon_max=lon_max_box[i],
        lat_min=lat_min_box[i],
        lat_max=lat_max_box[i],
    )



# Step 5: Plot temporal salinity variation for the 3 points
gc.plot_point(
    title="Mean surface salinity in the box",
    tstart=tstart,
    tend=tend,
    data_point=sal_mean,
    path_save="/prod/projects/data/tungnd/figure/",
    name_save="demo_11",
    point_labels=label_list
)
../_images/example8.2.png