@@ -449,11 +449,11 @@ def calc_uavg(points, uspd, lon, lat):
449
449
return np .mean (uavg [np .isfinite (uavg )])
450
450
451
451
# True for debug figures
452
- debug_U = False
453
- if debug_U :
454
- schem_dic = {}
455
- conts_x = np .array ([])
456
- conts_y = np .array ([])
452
+ # debug_U = False
453
+ # if debug_U:
454
+ # schem_dic = {}
455
+ # conts_x = np.array([])
456
+ # conts_y = np.array([])
457
457
458
458
# Unpack indices for convenience
459
459
istr , iend , jstr , jend = Eddy .i0 , Eddy .i1 , Eddy .j0 , Eddy .j1
@@ -520,42 +520,42 @@ def calc_uavg(points, uspd, lon, lat):
520
520
seglon , seglat = poly_i .vertices [:,0 ], poly_i .vertices [:,1 ]
521
521
seglon , seglat = eddy_tracker .uniform_resample (seglon , seglat )
522
522
523
- if debug_U :
524
- px , py = pcol_2dxy (grd .lon ()[jmin :jmax ,imin :imax ],
525
- grd .lat ()[jmin :jmax ,imin :imax ])
526
- plt .figure (55 )
527
- ax1 = plt .subplot (121 )
528
- if start :
529
- pcm = ax1 .pcolormesh (px , py , Eddy .Uspd [jmin :jmax ,imin :imax ], cmap = plt .cm .gist_earth_r )
530
- pcm .set_clim (0 , .5 )
531
- plt .colorbar (pcm , orientation = 'horizontal' )
532
- plt .scatter (grd .lon ()[jmin :jmax ,imin :imax ],
533
- grd .lat ()[jmin :jmax ,imin :imax ], s = 5 , c = 'k' )
534
- start = False
535
- plt .plot (seglon , seglat , '.-r' )
536
- plt .plot (Eddy .circlon , Eddy .circlat , 'b' )
537
- plt .scatter (centlon_e , centlat_e , s = 125 , c = 'r' )
538
- plt .axis ('image' )
539
- ax2 = plt .subplot (122 )
540
- ax2 .set_title ('sum mask: %s' % np .sum (mask_i ))
541
- plt .pcolormesh (px , py , mask_i .reshape (px .shape ), cmap = plt .cm .Accent , edgecolors = 'orange' )
542
- plt .scatter (grd .lon ()[jmin :jmax ,imin :imax ],
543
- grd .lat ()[jmin :jmax ,imin :imax ], s = 5 , c = 'k' )
544
- plt .plot (seglon , seglat , '.-r' )
545
- conts_x = np .append (conts_x , seglon )
546
- conts_y = np .append (conts_y , seglat )
547
- conts_x = np .append (conts_x , 9999 )
548
- conts_y = np .append (conts_y , 9999 )
549
- plt .plot (Eddy .circlon , Eddy .circlat , 'b' )
550
- plt .scatter (centlon_e , centlat_e , s = 125 , c = 'r' )
523
+ # if debug_U:
524
+ # px, py = pcol_2dxy(grd.lon()[jmin:jmax,imin:imax],
525
+ # grd.lat()[jmin:jmax,imin:imax])
526
+ # plt.figure(55)
527
+ # ax1 = plt.subplot(121)
528
+ # if start:
529
+ # pcm = ax1.pcolormesh(px, py, Eddy.Uspd[jmin:jmax,imin:imax], cmap=plt.cm.gist_earth_r)
530
+ # pcm.set_clim(0, .5)
531
+ # plt.colorbar(pcm, orientation='horizontal')
532
+ # plt.scatter(grd.lon()[jmin:jmax,imin:imax],
533
+ # grd.lat()[jmin:jmax,imin:imax], s=5, c='k')
534
+ # start = False
535
+ # plt.plot(seglon, seglat, '.-r')
536
+ # plt.plot(Eddy.circlon, Eddy.circlat, 'b')
537
+ # plt.scatter(centlon_e, centlat_e, s=125, c='r')
538
+ # plt.axis('image')
539
+ # ax2 = plt.subplot(122)
540
+ # ax2.set_title('sum mask: %s' %np.sum(mask_i))
541
+ # plt.pcolormesh(px, py, mask_i.reshape(px.shape), cmap=plt.cm.Accent, edgecolors='orange')
542
+ # plt.scatter(grd.lon()[jmin:jmax,imin:imax],
543
+ # grd.lat()[jmin:jmax,imin:imax], s=5, c='k')
544
+ # plt.plot(seglon, seglat, '.-r')
545
+ # conts_x = np.append(conts_x, seglon)
546
+ # conts_y = np.append(conts_y, seglat)
547
+ # conts_x = np.append(conts_x, 9999)
548
+ # conts_y = np.append(conts_y, 9999)
549
+ # plt.plot(Eddy.circlon, Eddy.circlat, 'b')
550
+ # plt.scatter(centlon_e, centlat_e, s=125, c='r')
551
551
552
552
# Interpolate Uspd to seglon, seglat, then get mean
553
553
Uavgseg = calc_uavg (points , Eddy .Uspd [jmin :jmax ,imin :imax ], seglon [:- 1 ], seglat [:- 1 ])
554
554
555
555
if save_all_uavg :
556
556
all_uavg .append (Uavgseg )
557
557
558
- if Uavgseg >= Uavg :
558
+ if Uavgseg >= Uavg and np . sum ( mask_i ) >= Eddy . pixel_threshold [ 0 ] :
559
559
Uavg = Uavgseg .copy ()
560
560
theseglon , theseglat = seglon .copy (), seglat .copy ()
561
561
@@ -569,42 +569,42 @@ def calc_uavg(points, uspd, lon, lat):
569
569
# Speed based eddy radius (eddy_radius_s)
570
570
centx_s , centy_s , eddy_radius_s , junk , junk = fit_circle (cx , cy )
571
571
centlon_s , centlat_s = Eddy .M .projtran (centx_s , centy_s , inverse = True )
572
- if debug_U :
573
- ax1 .set_title ('Speed-based radius: %s km' % np .int (eddy_radius_s / 1e3 ))
574
- ax1 .plot (poly_e .vertices [:,0 ], poly_e .vertices [:,1 ], 'om' )
575
- ax1 .plot (theseglon , theseglat , 'g' , lw = 3 )
576
- ax1 .plot (inner_seglon , inner_seglat , 'k' )
577
- ax1 .scatter (centlon_s , centlat_s , s = 50 , c = 'g' )
578
- ax1 .axis ('image' )
579
- ax2 .plot (theseglon , theseglat , 'g' , lw = 3 )
580
- ax1 .plot (inner_seglon , inner_seglat , 'k' )
581
- ax2 .axis ('image' )
582
- plt .show ()
583
- schem_dic ['lon' ] = grd .lon ()[jmin :jmax ,imin :imax ]
584
- schem_dic ['lat' ] = grd .lat ()[jmin :jmax ,imin :imax ]
585
- schem_dic ['spd' ] = Eddy .Uspd [jmin :jmax ,imin :imax ]
586
- schem_dic ['inner_seg' ] = np .array ([inner_seglon , inner_seglat ]).T
587
- schem_dic ['effective_seg' ] = np .array ([poly_e .vertices [:,0 ], poly_e .vertices [:,1 ]]).T
588
- schem_dic ['effective_circ' ] = np .array ([Eddy .circlon , Eddy .circlat ]).T
589
- schem_dic ['speed_seg' ] = np .array ([theseglon , theseglat ]).T
590
- schem_dic ['all_segs' ] = np .array ([conts_x , conts_y ]).T
591
- schem_dic ['Ls_centroid' ] = np .array ([centlon_s , centlat_s ])
592
- schem_dic ['Leff_centroid' ] = np .array ([centlon_e , centlat_e ])
593
- io .savemat ('schematic_fig_%s' % np .round (eddy_radius_s / 1e3 , 3 ), schem_dic )
572
+ # if debug_U:
573
+ # ax1.set_title('Speed-based radius: %s km' %np.int(eddy_radius_s/1e3))
574
+ # ax1.plot(poly_e.vertices[:,0], poly_e.vertices[:,1], 'om')
575
+ # ax1.plot(theseglon, theseglat, 'g', lw=3)
576
+ # ax1.plot(inner_seglon, inner_seglat, 'k')
577
+ # ax1.scatter(centlon_s, centlat_s, s=50, c='g')
578
+ # ax1.axis('image')
579
+ # ax2.plot(theseglon, theseglat, 'g', lw=3)
580
+ # ax1.plot(inner_seglon, inner_seglat, 'k')
581
+ # ax2.axis('image')
582
+ # plt.show()
583
+ # schem_dic['lon'] = grd.lon()[jmin:jmax,imin:imax]
584
+ # schem_dic['lat'] = grd.lat()[jmin:jmax,imin:imax]
585
+ # schem_dic['spd'] = Eddy.Uspd[jmin:jmax,imin:imax]
586
+ # schem_dic['inner_seg'] = np.array([inner_seglon, inner_seglat]).T
587
+ # schem_dic['effective_seg'] = np.array([poly_e.vertices[:,0], poly_e.vertices[:,1]]).T
588
+ # schem_dic['effective_circ'] = np.array([Eddy.circlon, Eddy.circlat]).T
589
+ # schem_dic['speed_seg'] = np.array([theseglon, theseglat]).T
590
+ # schem_dic['all_segs'] = np.array([conts_x, conts_y]).T
591
+ # schem_dic['Ls_centroid'] = np.array([centlon_s, centlat_s])
592
+ # schem_dic['Leff_centroid'] = np.array([centlon_e, centlat_e])
593
+ # io.savemat('schematic_fig_%s' %np.round(eddy_radius_s/1e3, 3), schem_dic)
594
594
if not save_all_uavg :
595
595
return Uavg , centlon_s , centlat_s , eddy_radius_s , theseglon , theseglat , inner_seglon , inner_seglat
596
596
else :
597
597
return Uavg , centlon_s , centlat_s , eddy_radius_s , theseglon , theseglat , inner_seglon , inner_seglat , all_uavg
598
598
599
599
except Exception : # If no interior contours found, use eddy_radius_e
600
600
601
- if debug_U and 0 :
602
- plt .title ('Effective radius: %s km' % np .int (eddy_radius_e / 1e3 ))
603
- plt .plot (poly_e .vertices [:,0 ], poly_e .vertices [:,1 ], 'om' )
604
- plt .plot (theseglon , theseglat , 'g' )
605
- plt .scatter (centlon_e , centlat_e , s = 125 , c = 'r' )
606
- plt .axis ('image' )
607
- plt .show ()
601
+ # if debug_U and 0:
602
+ # plt.title('Effective radius: %s km' %np.int(eddy_radius_e/1e3))
603
+ # plt.plot(poly_e.vertices[:,0], poly_e.vertices[:,1], 'om')
604
+ # plt.plot(theseglon, theseglat, 'g')
605
+ # plt.scatter(centlon_e, centlat_e, s=125, c='r')
606
+ # plt.axis('image')
607
+ # plt.show()
608
608
if not save_all_uavg :
609
609
return Uavg , centlon_e , centlat_e , eddy_radius_e , theseglon , theseglat , theseglon , theseglat
610
610
else :
0 commit comments