Run Eulerian RMS#

header

Velocity metrics package illustration: Run Eulerian RMS#

Agulhas, BFN-QG#


Authors: Datlas Copyright: 2024 Datlas License: MIT

Agulhas: BFNQG currents maps

The notebook aims to illustrate how to run the velocity metrics. Here, the example uses surface current maps produced by the BFN-QG in the Agulhas region.

[1]:
import velocity_metrics.utils.constant as const
import velocity_metrics.eulerian.eulerian_drifters as eulerian
[2]:
import datetime
import sys
from IPython.display import display, Markdown
import matplotlib.pyplot as plt
import cartopy
import warnings
warnings.filterwarnings("ignore")
sys.path.append('../')

from src import utils

Parameters#

Input directories#

[3]:
input_dict = '../dc_data/DC_example_BFNQG_Agulhas/dictionnaries/'
input_drifter = '../dc_data/drifter/'

Output directory#

[4]:
outputdir = '../results/metrics_illustration/'

Evaluated maps parameters#

[5]:
path_dict_product = input_dict+'data_type_metric_illustration_bfnqg.json'

depth = 0

Region parameters#

[6]:
path_dict_region = input_dict+'region_metric_illustration_Agulhas.json'

Drifter parameters#

[7]:
drifter_list = [input_drifter+'Drifters_AOML_region_T1_00m_20190101T000000Z_20200101T000000Z.pyo.gz']

first_date = datetime.datetime.strptime('20190101T000000Z', const.FMT)
last_date  = datetime.datetime.strptime('20190201T000000Z', const.FMT)

1. Eulerian RMS computation#

[8]:
eulerian.run(drifter_list, path_dict_product,
             first_date=first_date, last_date=last_date,
             region=path_dict_region, sdepth=1, output_dir=outputdir)
Percent: [#############################-] 96.77%, ,
Compute and save statistics in ../results/metrics_illustration/ directory

2. Eulerian RMS array outputs (Mean and std)#

[9]:

list_dict = [{'type_stat':'Mean','path':outputdir+'Eulerian_RMS_BFNQG1.pyo','name':'BFN-QG'}] utils.DictTable(list_dict)
[9]:
Mean Norm Quadratic Error (%) Norm Correlation Norm Explained Variance (%) Norm RMSD Number of Points
BFN-QG 38.848 0.698 61.360 0.317 2890.000
[10]:

list_dict = [{'type_stat':'STD','path':outputdir+'Eulerian_STD_BFNQG1.pyo','name':'BFN-QG'}] utils.DictTable(list_dict,['Direction difference', 'Number of Points'])
[10]:
STD Direction difference Number of Points
BFN-QG 45.014 2890.000
[11]:

list_eulerian_pickles = [outputdir+'Eulerian_BINNED_BFNQG1.pyo'] list_names = ['BFN-QG illustration']
[12]:


listvar = ('RMSD', 'Correlation', 'Explained Variance (%)', 'Quadratic Error (%)') dic_p = {'RMSD': {'vmin': 0.1, 'vmax': 0.4, 'cmap': 'YlGnBu_r'}, 'STD': {'vmin': 0.1, 'vmax': 0.4, 'cmap': 'YlGnBu'}, 'Correlation': {'vmin': 0.5, 'vmax': 0.9, 'cmap': 'YlGnBu'}, 'Explained Variance (%)': {'vmin': 40, 'vmax': 80, 'cmap': 'YlGnBu'}, 'Quadratic Error (%)': {'vmin': 40, 'vmax': 80, 'cmap': 'YlGnBu_r'} } proj = cartopy.crs.PlateCarree() ind = 0 var = listvar[ind] for var in listvar: print('\n') display(Markdown(f'\n<br><center><b>Results for diagnostic {var}</b></center>')) for eulerian_pickle, name in zip(list_eulerian_pickles, list_names): display(Markdown(f'<b>{name}<b>')) fig = eulerian.plot_bin(eulerian_pickle, outputdir, var, #box=[-5, 11, 35, 43], vmin=dic_p[var]['vmin'], vmax=dic_p[var]['vmax'], cmap=dic_p[var]['cmap'], proj=proj) plt.show()


Results for diagnostic RMSD

BFN-QG illustration

../_images/gallery_nb_illustration_run-EulerianRMS_23_3.png


Results for diagnostic Correlation

BFN-QG illustration

../_images/gallery_nb_illustration_run-EulerianRMS_23_7.png


Results for diagnostic Explained Variance (%)

BFN-QG illustration

../_images/gallery_nb_illustration_run-EulerianRMS_23_11.png


Results for diagnostic Quadratic Error (%)

BFN-QG illustration

../_images/gallery_nb_illustration_run-EulerianRMS_23_15.png
[ ]: