Commit a5764cd9 authored by Andi Walther's avatar Andi Walther 💬
Browse files

new view2d and more things for validation

parent 63402262
......@@ -135,7 +135,8 @@ function aw_view2d, data_in $
endif
if keyword_set(cty) then begin
ctt = ['gray','light gray','purple','blue','sea green','salmon','red','yellow','orange','maroon']
ctt = ['gray','light gray','purple','blue' $
,'sea green','salmon','red','yellow','orange','maroon']
data = bytscl(data,top=9,min=0,max=9)
endif
......@@ -212,7 +213,7 @@ function aw_view2d, data_in $
2: begin
delvar,color_bar
tickname = ['Cl','PrbCl','Fog','Wat','SupCoo ','Mixed','OpaIce','Cirrus','Olap','DCC']
tickname = ['Clear','PrbCl','Fog','Wat','SupCoo ','Mixed','OpaIce','Cirrus','Olap','DCC']
bar_size_x = (position[2] -position[0])
bar_size_y = (position[3] -position[1])/15.
bar_pos_x = position[0] > 0.01
......
......@@ -2,35 +2,43 @@
;
;
;
function view2d, data_in ,_extra = _extra $
function view2d, data_in $
, _extra = _extra $
, no_data_idx = no_data_idx $
, void_string = void_string $
, no_data_val = no_data_val $
, jpg = jpg $
, bartitle = bartitle $
, xrange = xrange $
, yrange = yrange $
, position = position $
, current = current $
, xtitle= xtitle $
, xtitle = xtitle $
, ytitle = ytitle $
, ct = ct $
,no_axis = no_axis $
, logarithmic =logarithmic $
, mini = mini $
, maxi = maxi
, coltbl = coltbl $
, no_axis = no_axis $
, logarithmic = logarithmic $
, min_value = min_value $
, max_value = max_value $
, cty = cty $
, cph_modis_flag = cph_modis_flag
PREF_SET, 'IDL_GR_X_RENDERER', 1, /COMMIT
default,bartitle,'[ ]'
default,barformat,'(f6.2)'
default,position, [0.25,0.1,0.95,0.9]
default, ct, COLORTABLE(74, /REVERSE)
default, coltbl, COLORTABLE(74, /REVERSE)
data = float(data_in)
if n_elements(no_data_idx) gt 0 then begin
data[no_data_idx] = !VALUES.F_NAN
endif
if n_elements(no_data_val) eq 1 then begin
idx_no = where(data eq no_data_val[0],/NULL)
data[idx_no] = !VALUES.F_NAN
endif
n_dim = size(data,/dim)
xra = findgen(n_dim[0])
......@@ -60,22 +68,38 @@ function view2d, data_in ,_extra = _extra $
; ct[0,*] = cgcolor('gray',/triple)
if keyword_set(cty) then begin
coltbl = ['gray','blue' $
,'sea green','salmon','red','yellow']
data = bytscl(data,top=6,min=0,max=6)
endif
if keyword_set(cph_modis_flag) then begin
coltbl = ['gray','blue' $
,'red','yellow']
data = bytscl(data,top=5,min=1,max=5)
endif
dum = keyword_set(logarithmic) ? alog10(data) : data
if not keyword_set(cty) or keyword_set(cmb) then begin
mini = n_elements(mini) GT 0 ? mini : min(data)
maxi = n_elements(maxi) GT 0 ? maxi : max(data)
mini = keyword_set(logarithmic) ? alog10(mini) : mini
maxi = keyword_set(logarithmic) ? alog10(maxi) : maxi
min_value = n_elements(min_value) GT 0 ? min_value : min(data)
max_value = n_elements(max_value) GT 0 ? max_value : max(data)
min_value = keyword_set(logarithmic) ? alog10(min_value) : min_value
max_value = keyword_set(logarithmic) ? alog10(max_value) : max_value
endif
p = image(dum,rgb_table=ct $
p = image(dum,rgb_table=coltbl $
,_extra = _extra, position = position $
, font_size = 13.,background_color='gray',background_tra=0. $
, aspect_ratio=aspect_ratio, current = current,xtitle=xtitle,ytitle=ytitle)
, aspect_ratio=aspect_ratio $
, current = current $
, xtitle = xtitle $
, ytitle = ytitle $
, max_value = max_value $
, min_value = min_value )
if n_elements(current ) ne 1 then begin
......@@ -85,9 +109,11 @@ function view2d, data_in ,_extra = _extra $
endif else begin
p.axis_style = 3
xax = AXIS('X', LOCATION='bottom', TICKDIR=0, MINOR=0,coord_TRANS=[a_x,b_x],title=xtitle)
xax = AXIS('X', LOCATION='bottom', TICKDIR=0 $
, MINOR=0,coord_TRANS=[a_x,b_x],title=xtitle)
yax = AXIS('Y', LOCATION='left', TICKDIR=0, MINOR=1,coord_TRANS=[a_y,b_y],title=yTitle)
yax = AXIS('Y', LOCATION='left', TICKDIR=0 $
, MINOR=1,coord_TRANS=[a_y,b_y],title=yTitle)
endelse
endif
; compute colorbar position
......@@ -101,24 +127,70 @@ function view2d, data_in ,_extra = _extra $
if keyword_set(logarithmic) then begin
tickv = [mini,1.65,1.7,1.75,1.8,maxi]
tickv = [min_value,1.65,1.7,1.75,1.8,max_value]
n_ticks = 7
tickv = findgen( n_ticks, start=mini $
, increment= (maxi-mini)/(n_ticks-1))
tickv = findgen( n_ticks, start=min_value $
, increment= (max_value-min_value)/(n_ticks-1))
tickn = string(10.^tickv, form='(f8.0)')
c = colorbar ( target = p , ORIENTATION=1, $
POSITION=pos_bar, $
TITLE= bartitle,taper=3 $
,range=[mini,maxi] $
,range=[min_value ,max_value] $
, tickvalues = tickv $
, tickname = tickn )
endif else begin
;
c = colorbar ( target = p , ORIENTATION=1, $
POSITION=pos_bar, $
TITLE= bartitle)
case 1 of
keyword_set(cty): begin
tickname = ['Clear','PrbCl','Fog','Wat','SupCoo ' $
,'Mixed','OpaIce','Cirrus','Olap','DCC']
tickname = ['Clear','Wat','SupCoo ' $
,'Mixed','Ice','Unknw']
bar_size_x = (position[2] -position[0])/10.
bar_size_y = (position[3] -position[1])
bar_pos_x = (position[0] - bar_size_x - 0.1) > 0.1
bar_pos_y = position[1] > 0.01
pos_bar = [bar_pos_x,bar_pos_y $
,bar_pos_x+bar_size_x, bar_pos_y+bar_size_y ]
c = colorbar ( target = p , ORIENTATION=1, $
POSITION=pos_bar $
, tickname = tickname $
, TITLE= bartitle,rgb_table = coltbl)
end
keyword_set(cph_modis_flag): begin
tickname = ['Clear','Wat','Ice','Unkwn']
bar_size_x = (position[2] -position[0])/10.
bar_size_y = (position[3] -position[1])
bar_pos_x = (position[0] - bar_size_x - 0.1) > 0.1
bar_pos_y = position[1] > 0.01
pos_bar = [bar_pos_x,bar_pos_y $
,bar_pos_x+bar_size_x, bar_pos_y+bar_size_y ]
c = colorbar ( target = p , ORIENTATION=1, $
POSITION=pos_bar $
, tickname = tickname $
, TITLE= bartitle,rgb_table = coltbl)
end
else: begin
c = colorbar ( target = p , ORIENTATION=1, $
POSITION=pos_bar, $
TITLE= bartitle)
end
endcase
endelse
;p.xrange = [0,30]
......@@ -136,14 +208,23 @@ pro _do_it , buffer = buffer
data = findgen(5,5)
title='Example 22'
p=view2d(data,title=title $
p=view2d(0.11>data,title=title $
, no_data_val =12 $
,no_data_idx = where(data lt 0 or data eq 22,/NULL) $
,bartitle='quatsch',jpg = 'quatsch.jpg',buffer = buffer,/logarithmic,mini=1)
p1=aw_view2d(data ,no_data_idx = where(data lt 0 or data eq 22,/NULL) $
,/color_bar,/logarithmic, mini = 1)
,bartitle='quatsch',jpg = 'quatsch.jpg' $
,buffer = buffer,/logarithmic,min_v=0.1 )
stop
p.xrange=[0,40]
yax = AXIS('Y', LOCATION='left', TICKDIR=0, MINOR=1)
p.save,'test.jpg'
p=view2d(data,title=title $
, no_data_val =12 $
,no_data_idx = where(data lt 0 or data eq 22,/NULL) $
,bartitle='quatsch',jpg = 'quatsch.jpg' $
,buffer = buffer,min_v=1 )
stop
end
......@@ -65,7 +65,7 @@ pro dcomp_g18, prd, buffer = buffer, path = path, night = night, doy=doy $
, force = force
default,prd,'CODF'
default,prd,'CODC'
default,buffer,0
......@@ -90,7 +90,7 @@ if keyword_set(night) then begin
algo = 'ncomp_'
endif
phase_prd= 'ACTPF'
phase_prd= 'ACTP'+prd.substring(3,3)
......@@ -98,7 +98,7 @@ phase_prd= 'ACTPF'
;default,path_g18,'/arcdata/goes_restricted/grb/goes18/2022/'
default,doy,234
default,doy,237
;path_l2 = file_search(path_g18+'*_'+doy.toString('(i3.3)') + '/abi/L2/PDA/'+prd+'/',/TEST_DIR)
;file_l2_list = file_search(path_l2,'*.nc')
......@@ -137,7 +137,10 @@ y_radians17 = data17['y', '_DATA']*DOUBLE(yscale17) + yoffset17
ct_all = colortable(74)
ct_all[0,*] = cgcolor('gray',/triple)
h2d_all = lonarr(101,101)
h2d_ice = lonarr(101,101)
h2d_wat = lonarr(101,101)
foreach file, file_l2_list do begin
print,file_basename(file)
......@@ -147,8 +150,8 @@ foreach file, file_l2_list do begin
and n_elements(force) eq 0 then continue
fb = file_basename(file)
fb18_actpf_draft = fb.replace(prd,'ACTPF')
f18_acpf = file_search(path_g18+'ACTPF/',fb18_actpf_draft.SubString(0,34)+'*' $
fb18_actpf_draft = fb.replace(prd,phase_prd)
f18_acpf = file_search(path_g18+phase_prd+'/',fb18_actpf_draft.SubString(0,34)+'*' $
, count = n_file)
print,'g18 acftp ',n_file
if n_file eq 0 then continue
......@@ -162,10 +165,11 @@ foreach file, file_l2_list do begin
if n_file eq 0 then continue
fb17 = file_basename(file_g17)
fb17_actpf_draft = fb17.replace(prd,'ACTPF')
f17_acpf = file_search(path_g17+'ACTPF/',fb17_actpf_draft.SubString(0,33)+'*' $
fb17_actpf_draft = fb17.replace(prd,phase_prd)
f17_acpf = file_search(path_g17+phase_prd+'/',fb17_actpf_draft.SubString(0,34)+'*' $
, count =n_file)
print,'g17 acftp ',n_file
if n_file eq 0 then continue
......@@ -216,10 +220,19 @@ foreach file, file_l2_list do begin
print,'bias: ',phase_name, bias(prd17[idx],prd18[idx]), precision(prd17[idx],prd18[idx])
if 5 eq 4 then begin
p= view2d((dum=hist_2d(prd17[idx],prd18[idx],min1=0.,min2=0.,max1=maxv,max2=maxv $
, bin1=bins,bin2=bins)) $
, no_data_idx = where(dum lt 30),min=0,max=3000,buffer=buffer,ct=ct_all $
;if 5 eq 4 then begin
dum=hist_2d(prd17[idx],prd18[idx],min1=0.,min2=0.,max1=maxv,max2=maxv $
, bin1=bins,bin2=bins)
case phase of
0: h2d_all += dum
1: h2d_wat += dum
2: h2d_ice += dum
endcase
p= view2d(dum $
,mini=1,/log,buffer=buffer $
, xrange=[0,maxv], yrange=[0,maxv] , xtitle=prd +' G17', yTitle = prd+' G18' )
t = text(0.1,.95,time_stamp+' UTC',/normal)
......@@ -248,12 +261,13 @@ if 5 eq 4 then begin
_map_it, to_plot, x_radians17, y_radians17, title_algo+' '+phase_title + ' '+prd+' G17' $
, time_stamp,algo+prd+'_'+phase_name+'_g17_'+time_stamp+'.png', $
0.,maxv, buffer=buffer
to_plot = prd18
to_plot[not_idx] = !VALUES.F_NAN
_map_it, to_plot, x_radians17, y_radians17, title_algo+' '+phase_title + ' '+prd+' G18' $
, time_stamp,algo+prd+'_'+phase_name+'_g18_'+time_stamp+'.png', $
0.,maxv, buffer=buffer
endif
;endif
to_plot = prd18-prd17
to_plot[not_idx] = !VALUES.F_NAN
_map_it, to_plot, x_radians17, y_radians17 $
......@@ -265,9 +279,35 @@ endif
endfor
endforeach
endforeach
bias = 2.221
precsi = 4.212
p= view2d(h2d_ice $
,mini=1,/log $
, xrange=[0,maxv], yrange=[0,maxv] , xtitle=prd +' G17', yTitle = prd+' G18' )
t = text(0.1,.95,' DOY 237',/normal)
t = text (0.6,0.95,'bias / precision '+string(bias $
,format='(f8.3)')+' / '+string(precsi $
,format='(f8.3)'),/normal, font_size=10)
t= text (0.4,0.93,'Ice Phase',/normal,font_size=15)
p.save,algo+prd+'_ice_h2d_doy337.png'
bias = 1.563
precsi = 2.196
p= view2d(h2d_wat $
,mini=1,/log $
, xrange=[0,maxv], yrange=[0,maxv] , xtitle=prd +' G17', yTitle = prd+' G18' )
t = text (0.6,0.95,'bias / precision '+string(bias $
,format='(f8.3)')+' / '+string(precsi $
,format='(f8.3)'),/normal, font_size=10)
t = text(0.1,.95,' DOY 237',/normal)
t= text (0.34,0.93,'Liquid Phase',/normal,font_size=15)
p.save,algo+prd+'_wat_h2d_337.png'
end
......@@ -139,6 +139,7 @@ pro dcomp_val_abi_gcom $
cps_raw = read_abi(file_cps)
cps = congrid(cps_raw,2712,2712)
cph18 = read_abi(f18_acpf)
cph18 = congrid(cph18,2712,2712)
; make lwp_gc bigger
idx_miss = where(lwp_gc lt 0,/NULL)
......@@ -180,10 +181,81 @@ pro dcomp_val_abi_gcom $
, no_data_idx = where(dum lt 30),min=0,max=300,buffer=buffer,ct=ct_all $
, xrange=[0,maxv], yrange=[0,maxv] , xtitle='LWP ABI', yTitle = 'LWP AMSR-e' )
p=view2d(lwp_gc_grid[700:800,1600:2000],max=1000)
p=view2d(lwp[700:800,1600:2000],max=1000)
lwp = 0.7 * lwp
lwp_wat = lwp
lwp_smooth = lwp
idx_w = where (cph18 ne 1)
lwp_wat[idx_w] = !VALUES.F_NAN
lwp_smooth[idx_w] = 0.
lwp_smooth = smooth(lwp_smooth,5)
idx_w = where (cph18 ne 1 or lwp_smooth gt 800)
lwp_smooth[idx_w] = !VALUES.F_NAN
lwp_gc_wat = lwp_gc_grid
lwp_gc_wat[idx_w] = !VALUES.F_NAN
p=view2d(lwp_gc_grid[700:800,1600:2000],max=1000, title='LWP AMSR-E/GCOM')
p=view2d(lwp[700:800,1600:2000],min=0.,max=1000)
p1=view2d(lwp_wat[700:800,1600:2000],min=0.,max=500, title='LWP ABI/G18')
p1.save,'lwp_abi.png'
p2=view2d(lwp_gc_wat[700:800,1600:2000],max=500, title='LWP AMSR-E/GCOM')
p2.save,'lwp_gcom.png'
p4=view2d(lwp_smooth[700:800,1600:2000],min=0.,max=500, title='LWP ABI/G18')
p4.save,'lwp_abi_sm.png'
lsm = lwp_smooth[700:800,1600:2000]
lgm = lwp_gc_wat[700:800,1600:2000]
p3 = view2d((dum=hist_2d(lwp_smooth[700:800,1600:2000],lwp_gc_wat[700:800,1600:2000] $
,min1=0,min2=0,max1=500.,max2=500.,bin1=10.,bin2=10.)),no_data_idx = where(dum lt 2) $
, xtitle='LWP ABI/G18 [mm]', YTitle='LWP AMSR-E/GCOM [mm]' $
, xrange=[0,500],yrange=[0,500])
iii = where(between(lsm,0.,500) and between(lgm,0,500) )
print,bias(lsm[iii],lgm[iii])
t = text (0.6,0.95,'bias / precision '+string(bias(lsm[iii],lgm[iii]) $
,format='(f8.3)')+' / '+string(precision(lsm[iii],lgm[iii]) $
,format='(f8.3)'),/normal, font_size=10)
p3.save,'gcom_g18_h2d.png'
lwp = 0.7 * lwp
lwp_wat = lwp
lwp_smooth = lwp
idx_w = where (cph18 ne 1)
lwp_wat[idx_w] = !VALUES.F_NAN
lwp_smooth[idx_w] = 0.
lwp_smooth = smooth(lwp_smooth,5)
idx_w = where (cph18 ne 1 or lwp_smooth gt 800)
lwp_smooth[idx_w] = !VALUES.F_NAN
lwp_gc_wat = lwp_gc_grid
lwp_gc_wat[idx_w] = !VALUES.F_NAN
p=view2d(lwp_gc_grid[700:800,1600:2000],max=1000, title='LWP AMSR-E/GCOM')
p=view2d(lwp[700:800,1600:2000],min=0.,max=1000)
p1=view2d(lwp_wat,min=0.,max=500, title='LWP ABI/G18')
p1.save,'lwp_abi1.png'
p2=view2d(lwp_gc_wat,max=500, title='LWP AMSR-E/GCOM')
p2.save,'lwp_gcom1.png'
p4=view2d(lwp_smooth[,min=0.,max=500, title='LWP ABI/G18 Smoothed')
p4.save,'lwp_abi_sm1.png'
lsm = lwp_smooth
lgm = lwp_gc_wat
p3 = view2d((dum=hist_2d(lsm,lgm $
,min1=0,min2=0,max1=500.,max2=500.,bin1=10.,bin2=10.)),no_data_idx = where(dum lt 2) $
, xtitle='LWP ABI/G18 [mm]', YTitle='LWP AMSR-E/GCOM [mm]' $
, xrange=[0,500],yrange=[0,500])
iii = where(between(lsm,0.,500) and between(lgm,0,500) )
print,bias(lsm[iii],lgm[iii])
t = text (0.6,0.95,'bias / precision '+string(bias(lsm[iii],lgm[iii]) $
,format='(f8.3)')+' / '+string(precision(lsm[iii],lgm[iii]) $
,format='(f8.3)'),/normal, font_size=10)
t =text(0.2,0.94,'LWP granule ',/normal, font_size=15)
p3.save,'gcom_g18_h2d1.png'
stop
p2 = plot(histogram(lwp,min=0.,max=1000,bin=1.))
p21 = plot(histogram(lwp_gc_grid,min=0.,max=1000,bin=1.))
......
......@@ -7,7 +7,7 @@ pro dcomp_val_abi_modis $
default,prd,'CODF'
path_g18 = '/Volumes/MASP1/DATA/ABI/G18/'
path_l2 = path_g18+prd+'/'
file_l2_list = file_search(path_l2,'*s2022*.nc')
file_l2_list = file_search(path_l2,'*s2022234*.nc')
path_modis = '/Users/awalther/DATA/DCOMP_VAL/MODIS-NASA/'
......@@ -256,7 +256,7 @@ if between(hh,5,18) then continue
d1 = view2d(prd18_small - prd_modis_small $
,min=-20,max=20., title='G18 - MODIS '+prd + ' '+phase_title $
,buffer=buffer,ct = colortable(70))
,buffer=buffer,coltbl = colortable(70))
t = text(0.1,.95,time_stamp+' UTC',/normal)
d1.save,'G18_MODIS_DIFF_'+prd+'_'+phase_name+'_map_small_'+time_stamp+'.png'
......@@ -285,28 +285,36 @@ if between(hh,5,18) then continue
endfor
m_wat = modis_list_wat.toArray()
a_wat = abi_list_wat.toArray()
h2_g18_mod_all = hist_2d(a_wat,m_wat $
,min1=0.,min2=0.,max1=160.,max2=160.)
if n_elements(l1) eq 1 then l1.close
l1 = view2d(h2_g18_mod_all[0:50,0:50] $
,no_data_idx=where(h2_g18_mod_all[0:50,0:50] lt 10) $
,min=1.,buffer=buffer $
,xtitle=prd+ ' G18', YTitle=prd+' MODIS',/logarithmic)
if keyword_set(no_img) then continue
m2 = view2d(cph_modis[x0:x1,y0:y1],min=0,max=5, title='MODIS Cloud Type',buffer=buffer)
m2 = view2d((dum=cph_modis[x0:x1,y0:y1]),min=0,max=5 $
, title='MODIS Cloud Type',buffer=buffer $
, no_data_idx =where(dum lt 0),/cph_modis_flag)
t = text(0.1,.95,time_stamp+' UTC',/normal)
m2.save,'modis_cph_map_small_'+time_stamp+'.png'
g2 = view2d(cph18[x0:x1,y0:y1],min=0,max=5, title='G18 Phase ',buffer=buffer)
g2 = view2d(cph18[x0:x1,y0:y1],min=0,max=5, title='G18 Phase ',buffer=buffer,/cty)
t = text(0.1,.95,time_stamp+' UTC',/normal)
g2.save,'G18_cph_map_small_'+time_stamp+'.png'
aggr = cph_modis[x0:x1,y0:y1] * 0 + 3
idx = where (cph_modis[x0:x1,y0:y1] eq 1 and cph18[x0:x1,y0:y1] eq 0 ,/null )
aggr[idx] = 0
idx = where (cph_modis[x0:x1,y0:y1] eq 2 and cph18[x0:x1,y0:y1] eq 1 ,/null )
aggr[idx] = 1
idx = where (cph_modis[x0:x1,y0:y1] eq 2 and cph18[x0:x1,y0:y1] eq 2 ,/null )
aggr[idx] = 1
idx = where (cph_modis[x0:x1,y0:y1] eq 2 and cph18[x0:x1,y0:y1] eq 3 ,/null )
aggr[idx] = 1
idx = where (cph_modis[x0:x1,y0:y1] eq 3 and cph18[x0:x1,y0:y1] eq 4 ,/null )
aggr[idx] = 2
m2 = view2d((dum=aggr),min=0,max=5 $
, title='Cloud Phase Agreement',buffer=buffer $
, no_data_idx =where(cph_modis[x0:x1,y0:y1] lt 0),/cph_modis_flag)
m2.save,'modis_cph_map_small_disagreement_'+time_stamp+'.png'
stop
i = IMAGE(0>prd18<50., x_radians17, y_radians17, $
......@@ -420,8 +428,9 @@ l2.save,'dcomp_val_modis_all_days_'+prd+'_ice.png'
l3 = view2d(h2_g18_mod_all[0:50,0:50] $
,no_data_idx=where(h2_g18_mod_all[0:50,0:50] lt 10) $
,min=1.,/logarithmic, buffer=buffer,xtitle=prd+ ' G18', YTitle=prd+' MODIS')
, no_data_idx=where(h2_g18_mod_all[0:50,0:50] lt 10) $
, min=1.,/logarithmic, buffer=buffer,xtitle=prd+ ' G18' $
, YTitle=prd+' MODIS')
t = text(0.1,.95,'2022 230-239',/normal)
t = text (0.3,0.93,prd+' All Phase',/normal,font_size=15)
......@@ -431,9 +440,10 @@ l2.save,'dcomp_val_modis_all_days_'+prd+'_ice.png'
+ string(precision(a_all[idx_range],m_all[idx_range]) $
,format='(f8.3)'),/normal)
stop
l3.save,'dcomp_val_modis_all_days_'+prd+'_all.png'
save ,modis_list_wat,modis_list_ice,modis_list_all ,filename='lists_modis_codf.sav'
save ,modis_list_wat,modis_list_ice,modis_list_all ,filename='lists_modis_'+prd+'.sav'
save ,abi_list_wat,abi_list_ice,abi_list_all ,filename='lists_abi_'+prd+'.sav'
stop
......
pro dcomp_val_abi_modis_images, prd = prd
default,prd,'CODF'
restore,'lists_modis_'+prd+'.sav'
restore,'lists_abi_'+prd+'.sav'
m_wat = modis_list_wat.toArray()
a_wat = abi_list_wat.toArray()
m_ice = modis_list_ice.toArray()
a_ice = abi_list_ice.toArray()
m_all = modis_list_all.toArray()
a_all = abi_list_all.toArray()
stop
; histograms