source: trunk/src/scripts_Laura/ARCTIC/Travail_CEN/daily_evolution_zones_osisaf_emis_spec_lamb.py @ 55

Last change on this file since 55 was 40, checked in by lahlod, 10 years ago

scripts ajoutes apres CEN

File size: 6.9 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3import string
4import numpy as np
5import matplotlib.pyplot as plt
6from pylab import *
7from mpl_toolkits.basemap import Basemap
8from mpl_toolkits.basemap import shiftgrid, cm
9from netCDF4 import Dataset
10import arctic_map # function to regrid coast limits
11import cartesian_grid_test # function to convert grid from polar to cartesian
12import scipy.special
13import ffgrid2
14import map_ffgrid
15from matplotlib import colors
16
17
18
19MONTH = np.array(['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'])
20month = np.array(['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'])
21month_day = np.array([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])
22M = len(month)
23
24
25
26###################
27# grid parameters #
28###################
29dx=1.
30dy=0.5
31x0, x1 = -180., 180.
32y0, y1 = 30., 90.
33xvec = np.arange(x0, x1 + dx, dx)
34yvec = np.arange(y0, y1 + dy, dy)
35nx = len(xvec)
36ny = len(yvec)
37
38
39
40########################################
41# different ice types from OSISAF data #
42########################################
43ICE = np.array(['Open_Sea', 'Seasonal_Ice', 'Permanent_Ice', 'Ambiguous_Ice_Type'])
44
45
46
47############################
48# definition of study zone #
49############################
50## latitude ##
51zlat = np.where((yvec >= 80.) & (yvec <= 83.))[0]
52zlat_vec = yvec[zlat]
53nlat = len(zlat)
54i0 = zlat[0]
55i1 = zlat[nlat - 1] + 1
56## longitude ##
57zlon = np.where((xvec <= -100.) & (xvec >= -130.))[0]
58zlon_vec = xvec[zlon]
59nlon = len(zlon)
60j0 = zlon[0]
61j1 = zlon[nlon - 1] + 1
62
63
64##########################################
65# calculation of mean SPEC and LAMB emis #
66##########################################
67type_map = np.zeros([M, ny, nx], float)
68mean_spec_m = np.zeros([M, 31], float)
69ect_spec_m = np.zeros([M, 31], float)
70mean_lamb_m = np.zeros([M, 31], float)
71ect_lamb_m = np.zeros([M, 31], float)
72pred_oit_m = np.zeros([M, 31], float)
73ii = np.zeros([M], float)
74for imo in range (0, M):
75    print 'month' + month[imo]
76    ############################################
77    # Read daily gridded OSISAF and AMSUB data #
78    ############################################
79    fichier = Dataset('/mma/hermozol/Documents/Data/daily_OSISAF_SPEC_LAMB/daily_OSISAF_emis_spec_lamb_AMSUB_ffgrid_' + str(month[imo]) + '_2009.nc', 'r', format='NETCDF3_CLASSIC')
80    lon = fichier.variables['longitude'][:]
81    lat = fichier.variables['latitude'][:]
82    day = fichier.variables['days'][:]
83    osi_type = fichier.variables['osi_ice_type'][:]
84    type_map[imo, :, :] = osi_type[0, :, :]
85    amsub_spec = fichier.variables['spec_emis'][:]
86    amsub_lamb = fichier.variables['lamb_emis'][:]
87    fichier.close()
88    mean_spec = np.zeros([month_day[imo]], float)
89    ect_spec = np.zeros([month_day[imo]], float)
90    mean_lamb = np.zeros([month_day[imo]], float)
91    ect_lamb = np.zeros([month_day[imo]], float)
92    pred_oit = np.zeros([month_day[imo]], float)
93    for ijr in range (0, month_day[imo]):
94        s = reshape(amsub_spec[ijr, i0 : i1, j0 : j1], size(amsub_spec[ijr, i0 : i1, j0 : j1]))
95        l = reshape(amsub_lamb[ijr, i0 : i1, j0 : j1], size(amsub_lamb[ijr, i0 : i1, j0 : j1]))
96        oit = reshape(osi_type[ijr, i0 : i1, j0 : j1], size(osi_type[ijr, i0 : i1, j0 : j1]))
97        ## take out emissivities == 0.
98        for ks in range (0, len(s)):
99            if (s[ks] == 0.):
100                s[ks] = NaN
101        ## take out emissivities == 0.
102        for kl in range (0, len(l)):
103            if (l[kl] == 0.):
104                l[kl] = NaN
105        mean_spec[ijr] = mean(s[nonzero(isnan(s) == False)])
106        ect_spec[ijr] = (1. / (nlon * nlat - 1)) * sqrt(sum((s[nonzero(isnan(s) == False)] - mean_spec[ijr]) ** 2))
107        if (ect_spec[ijr] == 0.):
108            ect_spec[ijr] = NaN
109        mean_lamb[ijr] = mean(l[nonzero(isnan(l) == False)])
110        ect_lamb[ijr] = (1. / (nlon * nlat - 1)) * sqrt(sum((l[nonzero(isnan(l) == False)] - mean_lamb[ijr]) ** 2))
111        if (ect_lamb[ijr] == 0.):
112            ect_lamb[ijr] = NaN         
113        print 'day' + str(ijr + 1)
114        pred_oit[ijr] = round(mean(oit[nonzero(isnan(oit) == False)])) - 1
115    mean_spec_m[imo, 0 : month_day[imo]] = mean_spec[:]
116    ect_spec_m[imo, 0 : month_day[imo]] = ect_spec[:]
117    mean_lamb_m[imo, 0 : month_day[imo]] = mean_lamb[:]
118    ect_lamb_m[imo, 0 : month_day[imo]] = ect_lamb[:]
119    ii[imo] = int(pred_oit[0])
120
121
122## map of study zone ##
123for imo in range (0, M):
124    map_ffgrid.draw_map_l (xvec, yvec, 0, 5, 1, type_map[8, :, :], colors.ListedColormap(['1.', '0.25', '0.50', '0.75']), 'OSISAF Ice Type')
125    title(month[imo] + '2009')
126
127
128
129
130
131
132SPEC = np.zeros([M], float)
133LAMB = np.zeros([M], float)
134ECT_SPEC = np.zeros([M], float)
135ECT_LAMB = np.zeros([M], float)
136for imo in range (0, M):
137    #map_ffgrid.draw_map_l (xvec, yvec, 0, 5, 1, type_map[1, :, :], colors.ListedColormap(['1.', '0.25', '0.50', '0.75']), 'OSISAF Ice Type')
138    SPEC[imo] = mean(mean_spec_m[imo, :][nonzero(isnan(mean_spec_m[imo, :]) == False)])
139    ECT_SPEC[imo] = mean(ect_spec_m[imo, :][nonzero(isnan(ect_spec_m[imo, :]) == False)])
140    LAMB[imo] = mean(mean_lamb_m[imo, :][nonzero(isnan(mean_lamb_m[imo, :]) == False)])
141    ECT_LAMB[imo] = mean(ect_lamb_m[imo, :][nonzero(isnan(ect_lamb_m[imo, :]) == False)])
142
143
144
145plt.ion()
146figure()
147errorbar(np.arange(0, M, 1), SPEC, label = 'SPEC', yerr = ECT_SPEC * 5)
148errorbar(np.arange(0, M, 1), LAMB, label = 'LAMB', yerr = ECT_LAMB * 5)
149legend(loc = 3)
150ylabel('emissivity and std (x5)')
151xlim(-1, M)
152ylim(0.5, 1.)
153xticks(np.arange(0, M, 1), month, rotation = 25)
154grid(True)
155twinx()
156plot(ii, '--k', label = 'OSISAF ice type')
157legend(loc = 1)
158yticks(np.arange(0, 4, 1), np.array(['ice free', 'seasonal', 'permanent', 'amiguous']), rotation = 60)
159ylim(0 , 4)
160title('zone : OSISAF 2009 - AMSUB')
161plt.savefig('/mma/hermozol/Documents/figure_output/comp_lamb_spec/time_evolution/daily_evo_emis_spec_lamb_' + ICE[ii[0]] + '_' + month[imo] + '2009_AMSUB.png')
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179#########
180# tests #
181#########
182z0 = spec[0, i0 : i1, j0 : j1].min()
183z1 = spec[0, i0 : i1, j0 : j1].max()
184map_ffgrid.draw_map_l (zlon_vec, zlat_vec, 0.4, 1.02, 0.01, spec[0, i0 : i1, j0 : j1] , cm.s3pcpn_l_r, 'emis SPEC')
185cmap2 = colors.ListedColormap(['1.', '0.25', '0.50', '0.75'])
186map_ffgrid.draw_map_l (zlon_vec, zlat_vec, 0, 5, 1, osi_type[6, 0, i0 : i1, j0 : j1] , cmap2, 'OSISAF ice type')
187
188
189map_ffgrid.draw_map_l (xvec, yvec, 0.5, 1.02, 0.01, spec[6, 0, :, :], cm.s3pcpn_l_r, 'emissivity SPEC')
190map_ffgrid.draw_map_l (xvec, yvec, 0.5, 1.02, 0.01, lamb[6, 0, :, :], cm.s3pcpn_l_r, 'emissivity LAMB')
191map_ffgrid.draw_map_l (xvec, yvec, 0, 5, 1, type_map[1, :, :], colors.ListedColormap(['1.', '0.25', '0.50', '0.75']), 'OSISAF Ice Type')
192cbar.set_ticklabels(['no ice','seasonal ice','permanent ice','ambiguous ice type'])
193#xii, yii = m(*np.meshgrid(xvec, yvec))
194#cmap2 = colors.ListedColormap(['1.', '0.25', '0.50', '0.75'])
195#m.contour(xii, yii, osi_ice_type[0, :, :], np.arange(0, 5, 1))
196#CS = plt.contour(xii, yii, osi_ice_type[0, :, :], 3,
197                 colors='k', # negative contours will be dashed by default
198                 )
199
200
201
Note: See TracBrowser for help on using the repository browser.