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

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

new scripts

File size: 8.7 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
16from matplotlib.font_manager import FontProperties
17import map_cartesian_grid
18
19
20###############################
21# time period characteristics #
22###############################
23MONTH = np.array(['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'])
24month = np.array(['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'])
25month_day = np.array([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])
26M = len(month)
27
28
29########################
30# grid characteristics #
31########################
32x0 = -3000. # min limit of grid
33x1 = 2500. # max limit of grid
34dx = 40.
35xvec = np.arange(x0, x1+dx, dx)
36nx = len(xvec) 
37y0 = -3000. # min limit of grid
38y1 = 3000. # max limit of grid
39dy = 40.
40yvec = np.arange(y0, y1+dy, dy)
41ny = len(yvec)
42
43
44
45
46##################################################################
47# compute monthly means of emissivity parameters on sea ice area #
48##################################################################
49spec_emis89 = np.zeros([M, ny, nx], float)
50spec_emis23 = np.zeros([M, ny, nx], float)
51
52#std_spec_emis89 = np.zeros([M, ny, nx], float)
53#std_spec_emis23 = np.zeros([M, ny, nx], float)
54
55grad_ratio = np.zeros([M, ny, nx], float)
56
57spec_anom89 = np.zeros([M, ny, nx], float)
58ratio_anom89 = np.zeros([M, ny, nx], float)
59
60spec_anom23 = np.zeros([M, ny, nx], float)
61
62for imo in range (0, M): 
63    print 'compute emissivity parameters for month ' + month[imo]
64    # open daily spec emissivity at 89GHz
65    fichier_daily89 = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/sub_classification/cartesian_grid_map_sea_ice_extent_with-AMSUA23-and-89_' + month[imo] + '2009_AMSUA89_spec_thresholds.nc', 'r', format='NETCDF3_CLASSIC')
66    a = fichier_daily89.variables['spec_ice_area'][:]
67    fichier_daily89.close()
68    # open daily spec emissivity at 23GHz
69    fichier_daily23 = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/sub_classification/cartesian_grid_map_sea_ice_extent_with-AMSUA23-and-89_' + month[imo] + '2009_AMSUA23_spec_thresholds.nc', 'r', format='NETCDF3_CLASSIC')
70    b = fichier_daily23.variables['spec_ice_area'][:]
71    fichier_daily23.close()
72    ## compute monthly mean of spec emissivity at 89GHz
73    print 'monthly spec emis'
74    for ilon in range (0, nx):
75        for ilat in range (0, ny):
76            spec_emis89[imo, ilat, ilon] = mean(a[ilat, ilon, 0 : month_day[imo]][nonzero(isnan(a[ilat, ilon, 0 : month_day[imo]]) == False)])
77            #std_spec_emis89[imo, ilat, ilon] = sqrt((1. / (month_day[imo] - 1.)) * sum((a[ilat, ilon, 0 : month_day[imo]][nonzero(isnan(a[ilat, ilon, 0 : month_day[imo]]) == False)] - spec_emis89[imo, ilat, ilon])**2.))
78            spec_emis23[imo, ilat, ilon] = mean(b[ilat, ilon, 0 : month_day[imo]][nonzero(isnan(b[ilat, ilon, 0 : month_day[imo]]) == False)])
79            #std_spec_emis23[imo, ilat, ilon] = sqrt((1. / (month_day[imo] - 1.)) * sum((b[ilat, ilon, 0 : month_day[imo]][nonzero(isnan(b[ilat, ilon, 0 : month_day[imo]]) == False)] - spec_emis23[imo, ilat, ilon])**2.))
80    # compute monthly gradient ratio 23-89GHz
81    print 'monthly gradient ratio 23-89GHz'
82    grad_ratio[imo, :, :] = spec_emis23[imo, :, :] - spec_emis89[imo, :, :]
83    # open anomaly of spec emissivity and emissivity ratio anomaly at 89GHz
84    fichier_anom89 = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/sub_classification/cartesian_grid_map_sea_ice_extent_with-AMSUA23-and-89_param_anomaly_' + month[imo] + '2009_AMSUA89.nc', 'r', format = 'NETCDF3_CLASSIC')
85    spec_anom89[imo, :, :] = fichier_anom89.variables['spec_anomaly'][:]
86    ratio_anom89[imo, :, :] = fichier_anom89.variables['ratio_anomaly'][:]
87    fichier_anom89.close()
88    # open anomaly of spec emissivity anomaly at 23GHz
89    fichier_anom23 = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/sub_classification/cartesian_grid_map_sea_ice_extent_with-AMSUA23-and-89_param_anomaly_' + month[imo] + '2009_AMSUA23.nc', 'r', format = 'NETCDF3_CLASSIC')
90    spec_anom23[imo, :, :] = fichier_anom23.variables['spec_anomaly'][:]
91    fichier_anom23.close()
92   
93
94
95cumul = abs(spec_anom89) + abs(spec_anom23) + abs(ratio_anom89) + abs(grad_ratio)
96cumul_index = np.zeros([M, ny, nx], float)
97for imo in range (0, M):
98    print 'month ' + month[imo]
99    max_cumul = cumul[imo, :, :][nonzero(isnan(cumul[imo, :, :]) == False)].max()
100    for ilon in range (0, nx):
101        for ilat in range (0, ny):
102            cumul_index[imo, ilat, ilon] = cumul[imo, ilat, ilon] / max_cumul
103
104
105   
106
107
108##############################################
109# maps monthly mean of emissivity parameters #
110##############################################
111#ion()
112x_ind, y_ind, z_ind, volume = arctic_map.arctic_map_lat50()
113x_coast = x_ind
114y_coast = y_ind
115z_coast = z_ind
116for imo in range (0, M):
117    print 'map month ' + month[imo]
118    # cumulation index
119    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, cumul_index[imo, :, :], 0., 1., 0.01, cm.s3pcpn_l_r, 'monthly cumulation index')
120    title('AMSUA - ' + month[imo] + ' 2009')
121    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/cumul_params/cumul_all_parameters/map_cumulation_index_' + MONTH[imo] + month[imo] + '2009_sea_ice_extent.png')
122    '''
123    # emis spec std 23GHz
124    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, std_spec_emis23[imo, :, :], 0., 0.12, 0.001, cm.s3pcpn_l_r, 'monthly emis spec std')
125    title('AMSUA 23GHz - ' + month[imo] + ' 2009')
126    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/emiss_spec/std/std_emis_spec_map_AMSUA23_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
127    # emis spec std 89GHz
128    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, std_spec_emis89[imo, :, :], 0., 0.2, 0.001, cm.s3pcpn_l_r, 'monthly emis spec std')
129    title('AMSUA 89GHz - ' + month[imo] + ' 2009')
130    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/emiss_spec/std/std_emis_spec_map_AMSUA89_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
131    # emis spec anomaly AMSUA23
132    print 'map emis spec anomaly AMSUA23'
133    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, spec_anom23[imo, :, :], -0.1, 0.2, 0.01, cm.s3pcpn_l_r, 'monthly emis spec anomaly')
134    title('AMSUA 23GHz - ' + month[imo] + ' 2009')
135    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/emiss_anomaly/spec/anomaly_spec_map_AMSUA23_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
136    # emis spec anomaly AMSUA89
137    print 'map emis spec anomaly AMSUA89'
138    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, spec_anom89[imo, :, :], -0.2, 0.2, 0.01, cm.s3pcpn_l_r, 'monthly emis spec anomaly')
139    title('AMSUA 89GHz - ' + month[imo] + ' 2009')
140    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/emiss_anomaly/spec/anomaly_spec_map_AMSUA89_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
141    # emis gradient ratio
142    print 'map gradient ratio'
143    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, grad_ratio[imo, :, :], -0.2, 0.3, 0.01, cm.s3pcpn_l_r, 'monthly gradient ratio')
144    title('AMSUA [23-89]GHz - ' + month[imo] + ' 2009')
145    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/gradient_ratio_23-89/gradient_ratio_map_AMSUA23-89_spec_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
146    # emis ratio anomaly AMSUA89
147    print 'map emis ratio anomaly AMSUA89'
148    map_cartesian_grid.draw_map_cartes_l(x_coast, y_coast, z_coast, volume, xvec, yvec, ratio_anom89[imo, :, :], -2, 2, 0.1, cm.s3pcpn_l_r, 'monthly emis ratio anomaly')
149    title('AMSUA 89GHz - ' + month[imo] + ' 2009')
150    plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/ice_class_AMSUA/sub_classification/maps/emiss_anomaly/ratio/anomaly_ratio_map_AMSUA89_' + MONTH[imo] + month[imo] + '_2009_arctic_sea_ice.png')
151    '''
Note: See TracBrowser for help on using the repository browser.