source: trunk/src/scripts_Laura/ARCTIC/Travail_CEN/compare_ice_area_different_data.py

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

other_scripts

File size: 8.1 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########################
22# Time characteristics #
23########################
24MONTH = np.array(['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'])
25month = np.array(['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'])
26month_day = np.array([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])
27M = len(month)
28
29
30frequ = np.array([23, 30, 50, 89]) # frequencies of AMSUA used for the study
31
32
33#################################
34# read .dat files of AMSUA data #
35#################################
36AS = np.zeros([len(frequ), M], float)
37AL = np.zeros([len(frequ), M], float)
38for ifr in range (0, len(frequ)):
39    fichier = open('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/AMSUA' + str(frequ[ifr]) + '_data_classification_parameters_ice_no-ice_2009.dat','r')
40    numlines = 0
41    for line in fichier: numlines += 1
42    fichier.close()
43    fichier = open('/net/argos/data/parvati/lahlod/ARCTIC/AMSUA_ice_class/AMSUA' + str(frequ[ifr]) + '_data_classification_parameters_ice_no-ice_2009.dat','r')
44    nbtotal = numlines - 1
45    iligne = 0
46    tot_area_spec = np.zeros([nbtotal],float)
47    tot_area_lamb = np.zeros([nbtotal],float)
48    while (iligne < nbtotal) :
49         line=fichier.readline()
50         # exemple : line = "0.22 2.3 5.0 6"
51         liste = line.split()
52         # exemple : listeCoord ['0.22', '2.3', '5.0', '6'] (liste de chaine de caract?es)
53         tot_area_spec[iligne] = float(liste[9]) # total sea ice area defined with emis_spec threshold
54         tot_area_lamb[iligne] = float(liste[10]) # total sea ice area defined with emis_lamb threshold
55         iligne=iligne+1
56    fichier.close()
57    vec = np.arange(0, nbtotal + 51, 50)
58    area_s = np.zeros([M], float) # vector of monthly mean total ice area defined with emis_spec threshold
59    area_l = np.zeros([M], float) # vector of monthly mean total ice area defined with emis_spec threshold
60    for imo in range (0, M):
61        area_s[imo] = tot_area_spec[imo + vec[imo]]
62        area_l[imo] = tot_area_lamb[imo + vec[imo]]
63    AS[ifr, :] = area_s[:] # create 2D-array of monthly mean total sea ice area defined with emis_spec threshold, for each frequency
64    AL[ifr, :] = area_l[:] # create 2D-array of monthly mean total sea ice area defined with emis_lamb threshold, for each frequency
65
66
67
68#################################
69# read .dat files of AMSUB data #
70#################################
71fichier_B = open('/net/argos/data/parvati/lahlod/ARCTIC/AMSUB_ice_class/AMSUB89_data_classification_parameters_ice_no-ice_2009.dat','r')
72numlines = 0
73for line in fichier_B: numlines += 1
74
75fichier_B.close()
76fichier_B = open('/net/argos/data/parvati/lahlod/ARCTIC/AMSUB_ice_class/AMSUB89_data_classification_parameters_ice_no-ice_2009.dat','r')
77nbtotal = numlines - 1
78iligne = 0
79tot_area_spec_B = np.zeros([nbtotal],float)
80tot_area_lamb_B = np.zeros([nbtotal],float)
81while (iligne < nbtotal) :
82         line=fichier_B.readline()
83         # exemple : line = "0.22 2.3 5.0 6"
84         liste = line.split()
85         # exemple : listeCoord ['0.22', '2.3', '5.0', '6'] (liste de chaine de caract?es)
86         tot_area_spec_B[iligne] = float(liste[9])
87         tot_area_lamb_B[iligne] = float(liste[10])
88         iligne=iligne+1
89
90fichier_B.close()
91area_s_B = np.zeros([M], float)
92area_l_B = np.zeros([M], float)
93for imo in range (0, M):
94    area_s_B[imo] = tot_area_spec_B[imo + vec[imo]]
95    area_l_B[imo] = tot_area_lamb_B[imo + vec[imo]]
96
97
98
99#################################
100# read .dat file of OSISAF data #
101#################################
102fichier_osi = open('/net/argos/data/parvati/lahlod/ARCTIC/OSISAF_Ice_Types/OSISAF_daily_ice_no-ice_2009.dat','r')
103numlines = 0
104for line in fichier_osi: numlines += 1
105
106fichier_osi.close()
107fichier_osi = open('/net/argos/data/parvati/lahlod/ARCTIC/OSISAF_Ice_Types/OSISAF_daily_ice_no-ice_2009.dat','r')
108nbtotal = numlines - 1
109iligne = 0
110mo = np.zeros([nbtotal],object)
111tot_area_osi = np.zeros([nbtotal],float)
112while (iligne < nbtotal) :
113         line=fichier_osi.readline()
114         # exemple : line = "0.22 2.3 5.0 6"
115         liste = line.split()
116         # exemple : listeCoord ['0.22', '2.3', '5.0', '6'] (liste de chaine de caract?es)
117         mo[iligne] = str(liste[0])
118         tot_area_osi[iligne] = float(liste[2])
119         iligne=iligne+1
120
121fichier_osi.close()
122vec_osi = np.array([0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334])
123area_osi = np.zeros([M], float)
124for imo in range (0, M):
125    area_osi[imo] = tot_area_osi[imo + vec_osi[imo]]
126
127
128
129###################################
130# plot time evolution of ice area #
131###################################
132# plot various total sea ice areas for each data, monthly in 2009
133ion()
134figure()
135plot(AS[0, :], 'c', label = 'AMSUA spec_23GHz')
136plot(AL[0, :], 'c--', label = 'AMSUA lamb_23GHz')
137plot(AS[1, :], 'r', label = 'AMSUA spec_30GHz')
138plot(AL[1, :], 'r--', label = 'AMSUA lamb_30GHz')
139plot(AS[2, :], 'm', label = 'AMSUA spec_50GHz')
140plot(AL[2, :], 'm--', label = 'AMSUA lamb_50GHz')
141plot(AS[3, :], 'g', label = 'AMSUA spec_89GHz')
142plot(AL[3, :], 'g--', label = 'AMSUA lamb_89GHz')
143plot(area_s_B[:], 'b', label = 'AMSUB spec_89GHz')
144plot(area_l_B[:], 'b--', label = 'AMSUB lamb_89GHz')
145plot(area_osi + 1500000, 'k', label = 'OSISAF + 1.5e7 (correction)') # '+1500000' corresponds to translation of OSISAF curve due to constant bias between OSISAF and AMSU total sea ice areas - quantity of translation is arbitrary
146fontP = FontProperties()
147fontP.set_size('small')
148legend(loc = 3, prop = fontP)
149ylabel('total ice area (in square km)')
150xticks(np.arange(0, M, 1), month, rotation = 25)
151xlim(-1, M)
152grid()
153plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/total_ice_area/compar_total_ice_area_AMSUA_AMSUB_SPEC_LAMB_corrected_OSISAF_2009.png')
154
155
156'''
157##################################################################################
158# calculation of bias between each AMSU total ice area and OSISAF total ice area #
159##################################################################################
160a = np.zeros([M], float)
161b = np.zeros([M], float)
162c = np.zeros([M], float)
163d = np.zeros([M], float)
164e = np.zeros([M], float)
165f = np.zeros([M], float)
166g = np.zeros([M], float)
167h = np.zeros([M], float)
168i = np.zeros([M], float)
169j = np.zeros([M], float)
170for imo in range (0, M):
171    a[imo] = (AS[0, imo] - area_osi[imo]) / area_osi[imo]
172    b[imo] = (AL[0, imo] - area_osi[imo]) / area_osi[imo]
173    c[imo] = (AS[1, imo] - area_osi[imo]) / area_osi[imo]
174    d[imo] = (AL[1, imo] - area_osi[imo]) / area_osi[imo]
175    e[imo] = (AS[2, imo] - area_osi[imo]) / area_osi[imo]
176    f[imo] = (AL[2, imo] - area_osi[imo]) / area_osi[imo]
177    g[imo] = (AS[3, imo] - area_osi[imo]) / area_osi[imo]
178    h[imo] = (AL[3, imo] - area_osi[imo]) / area_osi[imo]
179    i[imo] = (area_s_B[imo] - area_osi[imo]) / area_osi[imo]
180    j[imo] = (area_l_B[imo] - area_osi[imo]) / area_osi[imo]
181
182
183figure()
184plot(a, 'c', label = 'AMSUA spec 23GHz')
185plot(b, 'c--', label = 'AMSUA lamb 23GHz')
186plot(c, 'r', label = 'AMSUA spec 30GHz')
187plot(d, 'r--', label = 'AMSUA lamb 30GHz')
188plot(e, 'm', label = 'AMSUA spec 50GHz')
189plot(f, 'm--', label = 'AMSUA lamb 50GHz')
190plot(g, 'g', label = 'AMSUA spec 89GHz')
191plot(h, 'g--', label = 'AMSUA lamb 89GHz')
192plot(i, 'b', label = 'AMSUB spec 89GHz')
193plot(j, 'b--', label = 'AMSUB lamb 89GHz')
194plot(np.arange(0, M, 1), np.zeros([M], float), 'k')
195fontP = FontProperties()
196fontP.set_size('small')
197legend(loc = 3, prop = fontP)
198ylabel('bias of total ice area')
199xticks(np.arange(0, M, 1), month, rotation = 25)
200xlim(-1, M)
201grid()
202plt.savefig('/usr/home/lahlod/twice_d/fig_output_ARCTIC/fig_output_sea_ice_study/total_ice_area/bias_total_ice_area_AMSU_OSI_2009.png')
203'''
204
205
206
207
Note: See TracBrowser for help on using the repository browser.