@@ -490,14 +490,15 @@ class AvisoGrid (PyEddyTracker):
490
490
Class to satisfy the need of the eddy tracker
491
491
to have a grid class
492
492
"""
493
- def __init__ (self , AVISO_FILE , THE_DOMAIN , LONMIN , LONMAX , LATMIN , LATMAX ,
494
- with_pad = True ):
493
+ def __init__ (self , AVISO_FILE , THE_DOMAIN , PRODUCT ,
494
+ LONMIN , LONMAX , LATMIN , LATMAX , with_pad = True ):
495
495
"""
496
496
Initialise the grid object
497
497
"""
498
498
super (AvisoGrid , self ).__init__ ()
499
499
print '\n Initialising the AVISO_grid'
500
500
self .THE_DOMAIN = THE_DOMAIN
501
+ self .PRODUCT = PRODUCT
501
502
self .LONMIN = LONMIN
502
503
self .LONMAX = LONMAX
503
504
self .LATMIN = LATMIN
@@ -595,14 +596,44 @@ def set_mask(self, sla):
595
596
# Close Drake Passage
596
597
minus70 = np .argmin (np .abs (self .lonpad ()[0 ] + 70 ))
597
598
self .mask [:125 , minus70 ] = 0
599
+
600
+ # DT10 mask is open around Panama, so close it...
601
+ if 'AVISO_DT10' in self .PRODUCT :
602
+
603
+ mask = 0
604
+ self .mask [348 , 92 :110 ] = mask
605
+ self .mask [348 :356 , 92 ] = mask
606
+ self .mask [355 , 71 :92 ] = mask
607
+ self .mask [355 :363 , 71 ] = mask
608
+ self .mask [362 , 66 :71 ] = mask
609
+ self .mask [362 :380 , 66 ] = mask
610
+ self .mask [380 , 47 :67 ] = mask
611
+ self .mask [380 :389 , 47 ] = mask
612
+ self .mask [388 , 13 :47 ] = mask
613
+ self .mask [388 :393 , 13 ] = mask
614
+ self .mask [392 , :13 ] = mask
615
+ ind = 4 * 360
616
+ self .mask [348 , 92 + ind :110 + ind ] = mask
617
+ self .mask [348 :356 , 92 + ind ] = mask
618
+ self .mask [355 , 71 + ind :92 + ind ] = mask
619
+ self .mask [355 :363 , 71 + ind ] = mask
620
+ self .mask [362 , 66 + ind :71 + ind ] = mask
621
+ self .mask [362 :380 , 66 + ind ] = mask
622
+ self .mask [380 , 47 + ind :67 + ind ] = mask
623
+ self .mask [380 :389 , 47 + ind ] = mask
624
+ self .mask [388 , 13 + ind :47 + ind ] = mask
625
+ self .mask [388 :393 , 13 + ind ] = mask
626
+ self .mask [392 , ind :13 + ind ] = mask
627
+
598
628
# Mask all unwanted regions (Caspian Sea, etc)
599
629
labels = ndimage .label (self .mask )[0 ]
600
- plus200 = np . argmin ( np . abs ( self . lonpad ()[ 0 ] - 200 ))
601
- plus10 = np . argmin ( np . abs ( self .latpad ()[:, 0 ] - 10 ))
630
+
631
+ self .labels = labels
602
632
# Set to known sea point
603
- good_lab = labels [plus10 , plus200 ]
604
- self .mask [labels != good_lab ] = 0
605
-
633
+ plus200 = np .argmin (np .abs (self .lonpad ()[0 ] - 200 ))
634
+ plus9 = np .argmin (np .abs (self .latpad ()[:, 0 ] - 9 ))
635
+ sea_label = labels [plus9 , plus200 ]
636
+ np .place (self .mask , labels != sea_label , 0 )
606
637
return self
607
638
608
639
@@ -815,13 +846,17 @@ def set_interp_coeffs(self, sla, uspd):
815
846
AVISO_DT14 = config ['AVISO' ]['AVISO_DT14' ]
816
847
AVISO_FILES = config ['AVISO' ]['AVISO_FILES' ]
817
848
if AVISO_DT14 :
849
+ PRODUCT = 'AVISO_DT14'
818
850
AVISO_DT14_SUBSAMP = config ['AVISO' ]['AVISO_DT14_SUBSAMP' ]
819
851
if AVISO_DT14_SUBSAMP :
820
852
DAYS_BTWN_RECORDS = config ['AVISO' ]['DAYS_BTWN_RECORDS' ]
821
853
else :
822
854
DAYS_BTWN_RECORDS = 1.
823
855
else :
856
+ PRODUCT = 'AVISO_DT10'
824
857
DAYS_BTWN_RECORDS = 7. # old seven day AVISO
858
+
859
+ AVISO_FILES = config ['AVISO' ]['AVISO_FILES' ]
825
860
826
861
#TRACK_DURATION_MIN = config['TRACK_DURATION_MIN']
827
862
@@ -904,7 +939,7 @@ def set_interp_coeffs(self, sla, uspd):
904
939
AVISO_FILES = AVISO_FILES [5 :- 5 :np .int (DAYS_BTWN_RECORDS )]
905
940
906
941
# Set up a grid object using first AVISO file in the list
907
- sla_grd = AvisoGrid (AVISO_FILES [0 ], config ['THE_DOMAIN' ],
942
+ sla_grd = AvisoGrid (AVISO_FILES [0 ], config ['THE_DOMAIN' ], PRODUCT ,
908
943
config ['LONMIN' ], config ['LONMAX' ],
909
944
config ['LATMIN' ], config ['LATMAX' ])
910
945
@@ -1010,6 +1045,7 @@ def set_interp_coeffs(self, sla, uspd):
1010
1045
sla = sla_grd .get_AVISO_data (AVISO_FILE )
1011
1046
sla_grd .set_mask (sla ).uvmask ()
1012
1047
1048
+
1013
1049
if SMOOTHING :
1014
1050
1015
1051
if 'Gaussian' in SMOOTHING_TYPE :
@@ -1175,11 +1211,11 @@ def set_interp_coeffs(self, sla, uspd):
1175
1211
1176
1212
1177
1213
# Test pickling
1178
- # with open("".join((SAVE_DIR, 'A_eddy_%s.pkl' % ymd_str)), 'wb') as save_pickle:
1179
- # pickle.dump(A_eddy, save_pickle)
1214
+ with open ("" .join ((SAVE_DIR , 'A_eddy_%s.pkl' % ymd_str )), 'wb' ) as save_pickle :
1215
+ pickle .dump (A_eddy , save_pickle )
1180
1216
1181
- # with open("".join((SAVE_DIR, 'C_eddy_%s.pkl' % ymd_str)), 'wb') as save_pickle:
1182
- # pickle.dump(C_eddy, save_pickle)
1217
+ with open ("" .join ((SAVE_DIR , 'C_eddy_%s.pkl' % ymd_str )), 'wb' ) as save_pickle :
1218
+ pickle .dump (C_eddy , save_pickle )
1183
1219
1184
1220
## Unpickle
1185
1221
#with open('C_eddy.pkl', 'rb') as load_pickle:
0 commit comments