obs_seasonal_phases = obs_data.variables['seasonal_max_phase'][:] model_seasonal_waveforms = model_data.variables['seasonal_waveform'][:] model_seasonal_amplitudes = model_data.variables['seasonal_amplitude'][:] model_seasonal_phases = model_data.variables['seasonal_max_phase'][:] test = obs_seasonal_waveforms < 0 obs_seasonal_waveforms[test] = np.NaN test = obs_seasonal_amplitudes < 0 obs_seasonal_amplitudes[test] = np.NaN test = model_seasonal_waveforms < 0 model_seasonal_waveforms[test] = np.NaN area_boundaries,area_tags,area_labels = modules.area_dicts() tags = modules.get_tags(refs) areas = ['ANT','S_O','AF','N_O','S_EU','C_EU','NE_NA','ARC'] obsn_linspace = np.linspace(0, 1, len(areas)) fig, axes = plt.subplots(nrows=2, ncols=4,figsize=(19,13)) fig.patch.set_facecolor('white') count = 0 for ax in axes.flat: try: area = areas[count] except: ax.axis('off') continue
obs_co_alt = np.append(obs_co_alt,obs_site_group.altitude) obs_co_date = obs_site_group.variables['date'][:] obs_co_time = obs_site_group.variables['time'][:] for i in range(len(obs_o3_refs)): obs_o3_refs[i] = obs_o3_refs[i].lower() for i in range(len(obs_no2_refs)): obs_no2_refs[i] = obs_no2_refs[i].lower() for i in range(len(obs_co_refs)): obs_co_refs[i] = obs_co_refs[i].lower() #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia obs_o3_tags = modules.get_tags(obs_o3_refs) obs_no2_tags = modules.get_tags(obs_no2_refs) obs_co_tags = modules.get_tags(obs_co_refs) obs_o3_data = np.array(obs_o3_data) obs_no2_data = np.array(obs_no2_data) obs_co_data = np.array(obs_co_data) #convert all -99999's to nans test = obs_o3_data == -99999 obs_o3_data[test] = np.NaN test = obs_no2_data == -99999 obs_no2_data[test] = np.NaN test = obs_co_data == -99999 obs_co_data[test] = np.NaN
#get species from current directory present_dir = os.getcwd() obs_fname,species,start_year,end_year,vres,timeres = modules.get_obs_info(present_dir) model_fname,species,start_year,end_year = modules.get_model_info(present_dir) obs_refs,obs_raw_time,obs_ref_time,obs_datetime_time,obs_std_var,obs_lats,obs_lons,obs_alt,obs_gap_inds = modules.read_obs_all(obs_fname,species,start_year,end_year) model_raw_time,model_ref_time,model_datetime_time,model_std_var,lat_e,lon_e,lat_c,lon_c,grid_size,gridbox_count = modules.read_model_all(model_fname,species,start_year,end_year) #get obs lat_lon grid central points obs_lats_centre, obs_lons_centre, model_indices = modules.grid_obs_centre_convergance(lat_e,lon_e,obs_lats,obs_lons) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia tags = modules.get_tags(np.copy(obs_refs)) #-------------------------------------------------------- #load in periodic lsp data obs_period_grp = Dataset('../obs_%s_%s/obs_sig_periods.nc'%(vres,timeres)) model_period_grp = Dataset('model_sig_periods.nc') obs_daily_waveforms = [] obs_seasonal_waveforms = [] model_daily_waveforms = [] model_seasonal_waveforms = [] obs_seasonal_amp = [] model_seasonal_amp = [] for ref in obs_refs: site_group_obs = obs_period_grp.groups[ref]
fig.patch.set_facecolor('white') #m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,\ # llcrnrlon=-180,\ # urcrnrlon=180,\ # resolution='c') m = Basemap(projection='moll',lon_0 = 0,resolution='c') m.fillcontinents(color='#cc9966',lake_color='#99ffff',alpha=0.7,zorder=0.5) m.drawmapboundary(fill_color='#99ffff') color_dict = {'GAW':'Crimson','EMEP':'pink','CASTNET':'blue','NAPS':'purple','AQS':'orange','CAPMON':'yellow','EANET':'green','AIRBASE':'black'} zorders = {'GAW':4,'EMEP':2,'CASTNET':2,'NAPS':3,'AQS':1,'CAPMON':5,'EANET':6,'AIRBASE':1} tags = modules.get_tags(valid_refs) cut = (tags == 'O') print valid_refs[cut] cut = (tags == 'AF') print valid_refs[cut] cut = (tags == 'OC') print valid_refs[cut] cut = (tags == 'SA') print valid_refs[cut] for site_ref in valid_refs: site_group = root_grp.groups[site_ref] obs_lat = site_group.latitude obs_lon = site_group.longitude obs_group = site_group.process_group
minute_val.append(0) elif np.float64(time) == 30: hour_val.append(0) minute_val.append(30) else: hour_val.append(int(time[0:-2])) minute_val.append(int(time[-2:])) obs_datetimes = [datetime.datetime(year = year_val[i], month = month_val[i], day = day_val[i], hour = hour_val[i], minute = minute_val[i]) for i in range(len(year_val))] #get obs lat_lon grid central points obs_lats_centre, obs_lons_centre, model_indices = modules.grid_obs_centre_convergance(lat_e,lon_e,obs_lats,obs_lons) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia tags = modules.get_tags(obs_refs) #-------------------------------------------------------- #load in periodic lsp data root_grp_obs = Dataset('../obs/obs_sig_periods.nc') root_grp_mod = Dataset('model_sig_periods.nc') model_daily_mag = [] model_daily_phase = [] obs_daily_mag = [] obs_daily_phase = [] model_ave = [] obs_ave = [] model_seasonal_mag = [] model_seasonal_phase = [] obs_seasonal_mag = []
end_year = 2011 #read in obs ts data obs_fname = '/work/home/db876/observations/surface/%s/process/GLOBAL_SURFACE_%s_2009_2011_H_HP.nc' % ( species, species) obs_refs, raw_time, ref_time, datetime_time, std_var, obs_lats, obs_lons, obs_alt, obs_groups, obs_raw_class, obs_anthrome_class, gap_inds = modules.read_obs_all( obs_fname, species, start_year, end_year) #read in std model data model_fname = '/work/home/db876/plotting_tools/model_files/GEOSCHEM_SURFACE_2009_2011_v1001_4x5_GEOS5_H_STD.nc' model_raw_time, model_ref_time, model_datetime_time, model_std_var, lat_e, lon_e, lat_c, lon_c, grid_size, gridbox_count = modules.read_model_all( model_fname, species, start_year, end_year) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia tags = modules.get_tags(obs_refs) #-------------------------------------------------------- #load in periodic lsp data obs_grp = Dataset('../obs_SURFACE_H/LSP_stats.nc') alt_model_dirs_a = [ 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.25ANMVOC0.25', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.25ANMVOC0.5', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.25NMVOC1.0', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.25ANMVOC2.0', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.25ANMVOC4.0', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.5ANMVOC0.25', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.5ANMVOC0.5', 'GEOSCHEM_SURFACE_v1001_4x5_GEOS5_H_NOX0.5NMVOC1.0',
#get species from current directory present_dir = os.getcwd() obs_fname, species, start_year, end_year, vres, timeres = modules.get_obs_info( present_dir) model_fname, species, start_year, end_year = modules.get_model_info( present_dir) obs_refs, obs_raw_time, obs_ref_time, obs_datetime_time, obs_std_var, obs_lats, obs_lons, obs_alt, obs_process_groups, obs_gap_inds = modules.read_obs_all( obs_fname, species, start_year, end_year) model_raw_time, model_ref_time, model_datetime_time, model_std_var, lat_e, lon_e, lat_c, lon_c, grid_size, gridbox_count = modules.read_model_all( model_fname, species, start_year, end_year) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia tags = modules.get_tags(np.copy(obs_refs)) #-------------------------------------------------------- #load in periodic lsp data obs_period_grp = Dataset('../obs_%s_%s/obs_sig_periods.nc' % (vres, timeres)) model_period_grp = Dataset('model_sig_periods.nc') obs_daily_waveforms = [] obs_seasonal_waveforms = [] model_daily_waveforms = [] model_seasonal_waveforms = [] obs_seasonal_amp = [] model_seasonal_amp = [] for ref in obs_refs: site_group_obs = obs_period_grp.groups[ref]
obs_no2_refs[i] = obs_no2_refs[i].lower() for i in range(len(obs_co_refs)): obs_co_refs[i] = obs_co_refs[i].lower() #get obs lat_lon grid central points obs_o3_lats_centre, obs_o3_lons_centre, model_o3_indices = modules.grid_obs_centre_convergance( lat_e, lon_e, obs_o3_lats, obs_o3_lons) obs_no2_lats_centre, obs_no2_lons_centre, model_no2_indices = modules.grid_obs_centre_convergance( lat_e, lon_e, obs_no2_lats, obs_no2_lons) obs_co_lats_centre, obs_co_lons_centre, model_co_indices = modules.grid_obs_centre_convergance( lat_e, lon_e, obs_co_lats, obs_co_lons) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia obs_o3_tags = modules.get_tags(obs_o3_refs) obs_no2_tags = modules.get_tags(obs_no2_refs) obs_co_tags = modules.get_tags(obs_co_refs) #cut model data model_o3_data = model_o3_var[:, model_o3_indices[:, 0], model_o3_indices[:, 1]] model_no2_data = model_no2_var[:, model_no2_indices[:, 0], model_no2_indices[:, 1]] model_co_data = model_co_var[:, model_co_indices[:, 0], model_co_indices[:, 1]] obs_o3_data = np.array(obs_o3_data) obs_no2_data = np.array(obs_no2_data) obs_co_data = np.array(obs_co_data) #convert all -99999's to nans test = obs_o3_data == -99999
obs_lons_o3 = np.append(obs_lons_o3,obs_site_group.longitude) obs_alt_o3 = np.append(obs_alt_o3,obs_site_group.altitude) obs_date = obs_site_group.variables['date'][:] obs_time = obs_site_group.variables['time'][:] obs_date = obs_site_group.variables['date'][:] obs_time = obs_site_group.variables['time'][:] for i in range(len(obs_refs_o3)): obs_refs_o3[i] = obs_refs_o3[i].lower() #get obs lat_lon grid central points obs_lats_centre, obs_lons_centre, geoschem_model_indices = modules.grid_obs_centre_convergance(geoschem_lat_e,geoschem_lon_e,obs_lats_o3,obs_lons_o3) #get observational location tags #EU = europe, AF = africa, NA = north america, SA = south america, ANT = antarctica, ARC = arctic, O = oceanic, OC = oceania, AS = asia tags_o3 = modules.get_tags(obs_refs_o3) #cut model data geoschem_o3 = geoschem_o3[:,geoschem_model_indices[:,0],geoschem_model_indices[:,1]] obs_o3 = np.array(obs_o3) #-------------------------------------------------- areas = ['ANT','S_O','OC','AF','SA','NE_NA','CE_NA','SE_NA','S_NA','SW_NA','NW_NA','C_NA','S_EU','C_EU','NW_EU','N_EU','E_EU','NE_AS','SE_AS','C_AS','S_AS','N_O','AL','ARC'] area_boundaries,area_tags,area_labels = modules.area_dicts() fig, axes = plt.subplots(nrows=5, ncols=5,figsize=(19,13)) fig.patch.set_facecolor('white') count = 0 all_dates = []
'NW_NA': 'pink', 'NE_NA': 'darkblue', 'CE_NA': 'orange', 'SE_NA': 'green', 'C_NA': 'yellow', 'S_EU': 'black', 'SW_EU': 'magenta', 'CW_EU': 'brown', 'CS_EU': 'orangered', 'C_EU': 'lightskyblue', 'E_EU': 'limegreen', 'NW_EU': 'purple', 'N_EU': 'darkgreen' } tags = modules.get_tags(valid_refs) area_boundaries, area_tags, area_labels = modules.area_dicts() for i in range(len(valid_refs)): site_ref = valid_refs[i] site_group = root_grp.groups[site_ref] obs_lat = site_group.latitude obs_lon = site_group.longitude tag = tags[i] obs_area = modules.get_area(area_boundaries, tag, obs_lat, obs_lon, site_ref)