source: trunk/src/scripts_Laura/monthly_diff_frequ_AMSUA_test.py @ 54

Last change on this file since 54 was 26, checked in by lahlod, 10 years ago

modifs

File size: 6.5 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 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
18len_month = np.array([31, 28, 31, 30, 31, 30, 31])
19
20###############################################
21## emissivite moyenne sur la periode d etude ##
22###############################################
23Njr = np.sum(len_month)
24emis_glob = np.zeros([len(chan), len(lat), len(lon), Njr], float)
25for 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
37emis_glob_moy = np.zeros([len(chan), len(lat), len(lon)], float)
38for 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#############################################################
48var = np.zeros([len(chan), len(lat), len(lon)], float)
49for 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
55var_glob = var / Njr
56
57
58## selection des zones en fonction de la pgade de valeur de var ##
59for 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 ##
72plt.figure()
73plt.ion()
74m = Basemap(llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-90, urcrnrlat=-30, projection='cyl', resolution='c', fix_aspect=True)
75m.drawcoastlines(linewidth = 1)
76m.drawparallels(np.arange(-90., -30., 20))
77m.drawmeridians(np.arange(-180., 180., 20))
78xii,yii = m(*np.meshgrid(lon, lat))
79clevs = (arange(0., 0.01, 0.0001))
80cs = m.contourf(xii, yii, var_glob[0, :, :], clevs, cmap=cm.s3pcpn_l_r)
81cbar = colorbar(cs)
82cbar.set_label('CH1 - 23.8GHz')
83plt.title('var(emis) - AMSUA')
84xticks(arange(-180, 200, 20), rotation = 45)
85yticks(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 ##
94emis_JAN_mean = np.zeros([len(chan), len(lat), len(lon)], float)
95emis_FEB_mean = np.zeros([len(chan), len(lat), len(lon)], float)
96emis_MAR_mean = np.zeros([len(chan), len(lat), len(lon)], float)
97emis_APR_mean = np.zeros([len(chan), len(lat), len(lon)], float)
98emis_MAY_mean = np.zeros([len(chan), len(lat), len(lon)], float)
99emis_JUN_mean = np.zeros([len(chan), len(lat), len(lon)], float)
100emis_JUL_mean = np.zeros([len(chan), len(lat), len(lon)], float)
101for 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 ##
114bias_emis_JAN_mean = emis_JAN_mean[0, :, :] - emis_JAN_mean[1, :, :]
115bias_emis_FEB_mean = emis_FEB_mean[0, :, :] - emis_FEB_mean[1, :, :]
116bias_emis_MAR_mean = emis_MAR_mean[0, :, :] - emis_MAR_mean[1, :, :]
117bias_emis_APR_mean = emis_APR_mean[0, :, :] - emis_APR_mean[1, :, :]
118bias_emis_MAY_mean = emis_MAY_mean[0, :, :] - emis_MAY_mean[1, :, :]
119bias_emis_JUN_mean = emis_JUN_mean[0, :, :] - emis_JUN_mean[1, :, :]
120bias_emis_JUL_mean = emis_JUL_mean[0, :, :] - emis_JUL_mean[1, :, :]
121
122
123
124## carto ##
125plt.ion()
126plt.figure()
127m = Basemap(llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-90, urcrnrlat=-30, projection='cyl', resolution='c', fix_aspect=True)
128m.drawcoastlines(linewidth = 1)
129m.drawparallels(np.arange(-90., -30., 20))
130m.drawmeridians(np.arange(-180., 180., 20))
131xii,yii = m(*np.meshgrid(lon, lat))
132clevs = (arange(-0.23, 0.18, 0.001))
133cs = m.contourf(xii, yii, bias_emis_JUL_mean[:, :], clevs, cmap=cm.s3pcpn_l_r)
134cbar = colorbar(cs)
135cbar.set_label('ch1 - ch15')
136plt.title('bias(emis) JUL - AMSUA')
137xticks(arange(-180, 200, 20), rotation = 45)
138yticks(arange(-90, -10, 20))
139
140
141## selection des zones en fonction des valeurs de biais ##
142bb0_JAN = nonzero((bias_emis_JAN_mean >= -0.01) & (bias_emis_JAN_mean <= 0.01))
143bb1_JAN = nonzero((bias_emis_JAN_mean >= 0.10))
144bb2_JAN = nonzero((bias_emis_JAN_mean <= -0.10))
145
146plt.figure()
147plt.plot(bias_emis_JAN_mean[ilat, :][bb0_JAN])
148
149for 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
157figure()
Note: See TracBrowser for help on using the repository browser.