1 | #!/usr/bin/env python |
---|
2 | # -*- coding: utf-8 -*- |
---|
3 | import string |
---|
4 | import numpy as np |
---|
5 | import matplotlib.pyplot as plt |
---|
6 | from pylab import * |
---|
7 | from mpl_toolkits.basemap import Basemap |
---|
8 | from mpl_toolkits.basemap import shiftgrid, cm |
---|
9 | from netCDF4 import Dataset |
---|
10 | import ffgrid2 |
---|
11 | |
---|
12 | |
---|
13 | ## ATTENTION: lecture des fichiers NETCDF AMSUA - definition des variables dans "read_netcdf_AMSUA_test.py" ## |
---|
14 | ## lon |
---|
15 | ## lat |
---|
16 | ## jrs_MONTH |
---|
17 | ## chan |
---|
18 | len_month = np.array([31, 28, 31, 30, 31, 30, 31]) |
---|
19 | |
---|
20 | ############################################### |
---|
21 | ## emissivite moyenne sur la periode d etude ## |
---|
22 | ############################################### |
---|
23 | Njr = np.sum(len_month) |
---|
24 | emis_glob = np.zeros([len(chan), len(lat), len(lon), Njr], float) |
---|
25 | for ich in range (0, len(chan)): |
---|
26 | for ilon in range (0, len(lon)): |
---|
27 | for ilat in range (0, len(lat)): |
---|
28 | e1 = np.append(emis_JAN[ich, ilat, ilon, :], emis_FEB[ich, ilat, ilon, :]) |
---|
29 | e2 = np.append(e1, emis_MAR[ich, ilat, ilon, :]) |
---|
30 | e3 = np.append(e2, emis_APR[ich, ilat, ilon, :]) |
---|
31 | e4 = np.append(e3, emis_MAY[ich, ilat, ilon, :]) |
---|
32 | e5 = np.append(e4, emis_JUN[ich, ilat, ilon, :]) |
---|
33 | e6 = np.append(e5, emis_JUL[ich, ilat, ilon, :]) |
---|
34 | emis_glob[ich, ilat, ilon, :] = e6 |
---|
35 | |
---|
36 | |
---|
37 | emis_glob_moy = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
38 | for ich in range (0, len(chan)): |
---|
39 | for ilon in range (0, len(lon)): |
---|
40 | for ilat in range (0, len(lat)): |
---|
41 | emis_glob_moy[ich, ilat, ilon] = mean(emis_glob[ich, ilat, ilon, :][nonzero(isnan(emis_glob[ich, ilat, ilon, :]) == False)]) |
---|
42 | |
---|
43 | |
---|
44 | |
---|
45 | ############################################################# |
---|
46 | ## variance de l emissivite moyenne sur la periode d etude ## |
---|
47 | ############################################################# |
---|
48 | var = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
49 | for ich in range (0, len(chan)): |
---|
50 | for ilon in range (0, len(lon)): |
---|
51 | for ilat in range (0, len(lat)): |
---|
52 | var[ich, ilat, ilon] = np.sum((emis_glob[ich, ilat, ilon, :][nonzero(isnan(emis_glob[ich, ilat, ilon, :]) == False)] - emis_glob_moy[ich, ilat, ilon])**2) |
---|
53 | |
---|
54 | |
---|
55 | var_glob = var / Njr |
---|
56 | |
---|
57 | |
---|
58 | ## selection des zones en fonction de la pgade de valeur de var ## |
---|
59 | for ich in range (0, len(chan)): |
---|
60 | for ilon in range (0, len(lon)): |
---|
61 | for ilat in range (0, len(lat)): |
---|
62 | # if ((var_glob[ich, ilat, ilon] > 0.0040) & (var_glob[ich, ilat, ilon] < 0.0060)): |
---|
63 | # continue |
---|
64 | # if ((var_glob[ich, ilat, ilon] >= 0.0024) & (var_glob[ich, ilat, ilon] < 0.0060)): |
---|
65 | # continue |
---|
66 | if (var_glob[ich, ilat, ilon] <= 0.0030): |
---|
67 | continue |
---|
68 | else: |
---|
69 | var_glob[ich, ilat, ilon] = NaN |
---|
70 | |
---|
71 | ## carto ## |
---|
72 | plt.figure() |
---|
73 | plt.ion() |
---|
74 | m = Basemap(llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-90, urcrnrlat=-30, projection='cyl', resolution='c', fix_aspect=True) |
---|
75 | m.drawcoastlines(linewidth = 1) |
---|
76 | m.drawparallels(np.arange(-90., -30., 20)) |
---|
77 | m.drawmeridians(np.arange(-180., 180., 20)) |
---|
78 | xii,yii = m(*np.meshgrid(lon, lat)) |
---|
79 | clevs = (arange(0., 0.01, 0.0001)) |
---|
80 | cs = m.contourf(xii, yii, var_glob[0, :, :], clevs, cmap=cm.s3pcpn_l_r) |
---|
81 | cbar = colorbar(cs) |
---|
82 | cbar.set_label('CH1 - 23.8GHz') |
---|
83 | plt.title('var(emis) - AMSUA') |
---|
84 | xticks(arange(-180, 200, 20), rotation = 45) |
---|
85 | yticks(arange(-90, -10, 20)) |
---|
86 | |
---|
87 | |
---|
88 | |
---|
89 | ########################################################## |
---|
90 | ## biais de l emissivite moyenne sur la periode d etude ## |
---|
91 | ########################################################## |
---|
92 | |
---|
93 | ## emis moyenne par mois ## |
---|
94 | emis_JAN_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
95 | emis_FEB_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
96 | emis_MAR_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
97 | emis_APR_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
98 | emis_MAY_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
99 | emis_JUN_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
100 | emis_JUL_mean = np.zeros([len(chan), len(lat), len(lon)], float) |
---|
101 | for ich in range (0, len(chan)): |
---|
102 | for ilon in range (0, len(lon)): |
---|
103 | for ilat in range (0, len(lat)): |
---|
104 | emis_JAN_mean[ich, ilat, ilon] = mean(emis_JAN[ich, ilat, ilon, :][nonzero(isnan(emis_JAN[ich, ilat, ilon, :]) == False)]) |
---|
105 | emis_FEB_mean[ich, ilat, ilon] = mean(emis_FEB[ich, ilat, ilon, :][nonzero(isnan(emis_FEB[ich, ilat, ilon, :]) == False)]) |
---|
106 | emis_MAR_mean[ich, ilat, ilon] = mean(emis_MAR[ich, ilat, ilon, :][nonzero(isnan(emis_MAR[ich, ilat, ilon, :]) == False)]) |
---|
107 | emis_APR_mean[ich, ilat, ilon] = mean(emis_APR[ich, ilat, ilon, :][nonzero(isnan(emis_APR[ich, ilat, ilon, :]) == False)]) |
---|
108 | emis_MAY_mean[ich, ilat, ilon] = mean(emis_MAY[ich, ilat, ilon, :][nonzero(isnan(emis_MAY[ich, ilat, ilon, :]) == False)]) |
---|
109 | emis_JUN_mean[ich, ilat, ilon] = mean(emis_JUN[ich, ilat, ilon, :][nonzero(isnan(emis_JUN[ich, ilat, ilon, :]) == False)]) |
---|
110 | emis_JUL_mean[ich, ilat, ilon] = mean(emis_JUL[ich, ilat, ilon, :][nonzero(isnan(emis_JUL[ich, ilat, ilon, :]) == False)]) |
---|
111 | |
---|
112 | |
---|
113 | ## biais ch1-ch15 ## |
---|
114 | bias_emis_JAN_mean = emis_JAN_mean[0, :, :] - emis_JAN_mean[1, :, :] |
---|
115 | bias_emis_FEB_mean = emis_FEB_mean[0, :, :] - emis_FEB_mean[1, :, :] |
---|
116 | bias_emis_MAR_mean = emis_MAR_mean[0, :, :] - emis_MAR_mean[1, :, :] |
---|
117 | bias_emis_APR_mean = emis_APR_mean[0, :, :] - emis_APR_mean[1, :, :] |
---|
118 | bias_emis_MAY_mean = emis_MAY_mean[0, :, :] - emis_MAY_mean[1, :, :] |
---|
119 | bias_emis_JUN_mean = emis_JUN_mean[0, :, :] - emis_JUN_mean[1, :, :] |
---|
120 | bias_emis_JUL_mean = emis_JUL_mean[0, :, :] - emis_JUL_mean[1, :, :] |
---|
121 | |
---|
122 | |
---|
123 | |
---|
124 | ## carto ## |
---|
125 | plt.ion() |
---|
126 | plt.figure() |
---|
127 | m = Basemap(llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-90, urcrnrlat=-30, projection='cyl', resolution='c', fix_aspect=True) |
---|
128 | m.drawcoastlines(linewidth = 1) |
---|
129 | m.drawparallels(np.arange(-90., -30., 20)) |
---|
130 | m.drawmeridians(np.arange(-180., 180., 20)) |
---|
131 | xii,yii = m(*np.meshgrid(lon, lat)) |
---|
132 | clevs = (arange(-0.23, 0.18, 0.001)) |
---|
133 | cs = m.contourf(xii, yii, bias_emis_JUL_mean[:, :], clevs, cmap=cm.s3pcpn_l_r) |
---|
134 | cbar = colorbar(cs) |
---|
135 | cbar.set_label('ch1 - ch15') |
---|
136 | plt.title('bias(emis) JUL - AMSUA') |
---|
137 | xticks(arange(-180, 200, 20), rotation = 45) |
---|
138 | yticks(arange(-90, -10, 20)) |
---|
139 | |
---|
140 | |
---|
141 | ## selection des zones en fonction des valeurs de biais ## |
---|
142 | bb0_JAN = nonzero((bias_emis_JAN_mean >= -0.01) & (bias_emis_JAN_mean <= 0.01)) |
---|
143 | bb1_JAN = nonzero((bias_emis_JAN_mean >= 0.10)) |
---|
144 | bb2_JAN = nonzero((bias_emis_JAN_mean <= -0.10)) |
---|
145 | |
---|
146 | plt.figure() |
---|
147 | plt.plot(bias_emis_JAN_mean[ilat, :][bb0_JAN]) |
---|
148 | |
---|
149 | for ilon in range (0, len(lon)): |
---|
150 | ind = np.where((bias_emis_JAN_mean[:, ilon] >= -0.01) & (bias_emis_JAN_mean[:, ilon] <= 0.01))[0] |
---|
151 | if len(ind) == 0: |
---|
152 | continue |
---|
153 | else: |
---|
154 | a = ind |
---|
155 | print ilon, a |
---|
156 | |
---|
157 | figure() |
---|