Пример #1
0
from netCDF4 import Dataset

matplotlib.rcParams['font.family'] = 'sans-serif'
matplotlib.rcParams['font.sans-serif'] = 'Helvetica'

gdp_year = _env.year
sgdp_year = str(gdp_year)

p_scen = 'No-Sulfate'  #aerosol removal scenario
ds = 'ERA-Interim'

if_temp = _env.odir_root + '/summary_' + ds + '/country_specific_statistics_Temp_' + ds + '_' + p_scen + '.csv'
if_gdp = _env.odir_root + '/summary_' + ds + '/country_specific_statistics_GDP_' + ds + '_' + p_scen + '_Burke.xls'

odir_plot = _env.odir_root + '/plot/'
_env.mkdirs(odir_plot)

of_plot = odir_plot + 'SOM_F1.Scatter_Changes_in_Temp_and_GDP_Sulfate.png'

itbl_temp = pd.read_csv(if_temp, index_col=0)
itbl_gdp = pd.read_excel(if_gdp, 'country-lag0')

mtbl_tg = itbl_temp[[
    'Temp_mean_climatological', 'Temp_mean_noaero', 'Temp_Changes'
]].copy()
for gc in [
        'iso', sgdp_year + '_gdp', sgdp_year + '_pop',
        'GDP_median_benefit_ratio'
]:
    mtbl_tg[gc] = itbl_gdp[gc].copy()
gdp_year = year
sgdp_year = str(gdp_year)

par = 'TREFHT'
ds = 'ERA-Interim'

rean_ttag = '2001-2018'

if_base = _env.idir_root + '/reanalysis/ERA-Interim_Surface_Temp_' + rean_ttag + '_Regridded.nc'
if_sim = _env.odir_root + '/sim_temperature/Simulated_Global_Gridded_' + par + '.nc'

if_boot_par = _env.idir_root + 'Burke2018_Replication/data/output/bootstrap.csv'
if_pop = _env.idir_root + '/pop/GPW_POP_25x19deg_2000.nc'

odir_gdp = _env.odir_root + '/gdp_' + ds + '/'
_env.mkdirs(odir_gdp)

scenarios = ['With-Aerosol', 'No-Aerosol']
#read gridded temperature

##base temperature from reanalysis data (ERA-Interim)
i_base = xr.open_dataset(if_base)
i_base = i_base.expand_dims({'ensembles': 8})

i_base.transpose('ensembles', 'lat', 'lon')
T_grid_base = i_base['t2m_mean'] - 273.15  #K to C

i_sim = xr.open_dataset(if_sim)

T_grid_wa = i_sim[par + '_' + scenarios[0] + '_ensemble']  #With-Aerosol
T_grid_na = i_sim[par + '_' + scenarios[1] + '_ensemble']  #No-Aerosol
Пример #3
0
    ax.set_yticks(np.arange(-90,91,45))
    ax.set_yticklabels('')
    
    parallels = np.arange(-90.,91,45.)
    m.drawparallels(parallels,labels=[True,False,False,False],dashes=[3,3],xoffset=5,linewidth = 0)
    meridians = np.arange(-160,161,40.)
    m.drawmeridians(meridians,labels=[True,False,False,True],dashes=[3,3],yoffset=5,linewidth = 0)



matplotlib.rcParams['font.family'] = 'sans-serif'
matplotlib.rcParams['font.sans-serif'] = 'Helvetica'

odir_plot = _env.odir_root + '/plot/'

_env.mkdirs(odir_plot)

of_plot = odir_plot + 'ED_F4.Map_Climatic_Economic_Impacts_Sulfate.png'

p_scen = 'No-Sulfate' #aerosol removal scenario
ds = 'ERA-Interim'

fig = plt.figure(figsize=(21,20))

##=========================MAP: changes in AOD=====================#        
if_aod = _env.odir_root + '/sim_aodvis/Simulated_Global_Gridded_AODVIS.nc'

arr_aod = -Dataset(if_aod)['AODVIS_d_' + p_scen + '_With-Aerosol'][:]

ax = fig.add_subplot(411)    
matplotlib.rcParams['font.sans-serif'] = 'Helvetica'
###main

ds = 'ERA-Interim'
p_scen = 'No-Sulfate'
b_m = 'country-lag0'

gdp_year = _env.year

sgdp_year = str(gdp_year)
idir_temp = _env.odir_root + '/sim_temperature/'              

idir_gdp = _env.odir_root + '/gdp_'+ds+'/'        
odir_summary = _env.odir_root + '/summary_'+ds+'/'  
odir_plot = _env.odir_root + '/plot/'
_env.mkdirs(odir_summary)

of_plot = odir_plot + 'ED_F10.Box_Changes_in_Inequality_Sulfate.png'

itbl_gdp_baseline = pd.read_csv(_env.odir_root  + 'basic_stats' + '/Country_Basic_Stats.csv')
itbl_gdp_baseline.sort_values([sgdp_year + '_gdpcap'],inplace=True)
tot_pop = itbl_gdp_baseline[sgdp_year + '_pop'].sum()

itbl_gdp_baseline[sgdp_year + '_gdpsum'] = 0
itbl_gdp_baseline[sgdp_year + '_popsum'] = 0

for irow, row in enumerate(itbl_gdp_baseline.index):
    if irow == 0:
        itbl_gdp_baseline.loc[row,sgdp_year + '_gdpsum'] = itbl_gdp_baseline.loc[row,sgdp_year + '_gdp']
        itbl_gdp_baseline.loc[row, sgdp_year + '_popsum'] = itbl_gdp_baseline.loc[row,sgdp_year + '_pop']
    else:
itbl_ctry_gdpcap.set_index(['Country Code'], inplace=True)
itbl_ctry_pop.set_index(['Country Code'], inplace=True)

itbl_ctry_info = itbl_ctry.copy()
itbl_ctry_info.set_index(['iso'], inplace=True)

for year in range(gdp_year, gdp_year + 1):
    itbl_ctry_info[str(year) + '_gdpcap'] = itbl_ctry_gdpcap[str(year)]
    itbl_ctry_info[str(year) + '_pop'] = itbl_ctry_pop[str(year)]
    itbl_ctry_info[str(year) + '_gdp'] = itbl_ctry_info[
        str(year) + '_gdpcap'] * itbl_ctry_info[str(year) + '_pop']

itbl_ctry_info.drop(['meantemp', 'gdp', 'growth', 'gdpcap', 'pop'],
                    axis=1,
                    inplace=True)
_env.mkdirs(_env.odir_root + '/basic_stats/')
itbl_ctry_info.to_csv(_env.odir_root + '/basic_stats/' +
                      'Country_Basic_Stats.csv')

omtrxs_gdp_all = {}

#calculate changes in gdp and gdp growth rate from aerosol-induced cooling
for ds in datasets:
    omtrxs_gdp_all[ds] = {}

    itbl_clim_temp = pd.read_csv(if_clim_temp, index_col=0)[['iso', ds]]

    odir_gdp = _env.odir_root + '/gdp_' + ds + '/'
    _env.mkdirs(odir_gdp)

    scenarios = _env.scenarios[0:2]  #['With-Aerosol', 'No-Aerosol']
Пример #6
0
    'Percent changes in 80:20 ratio', 'Probability of reduced inequality'
]

models = ['Burke et al.', 'Dell et al.', 'Pretis et al.', 'DICE']
apply2s = ['GDP growth', 'GDP growth', 'GDP growth', 'GDP levels']

speciations = {
    'Burke et al.':
    ['country-lag0', 'country-lag1', 'country-lag5', 'year', 'year-blocks'],
    'Dell et al.': ['Dell'],
    'Pretis et al.': ['M1', 'M2', 'M3'],
    'DICE': ['DICE-2013R', 'DICE-2016R']
}

odir_tbl = _env.odir_root + '/table/'
_env.mkdirs(odir_tbl)

of_tbl = odir_tbl + 'SOM_Table1.xls'
writer = pd.ExcelWriter(of_tbl)


#===================applied functions====================
def text_fmt(median, p5, p95, digits=2):
    #formating text for output table cells

    tp_min = np.min([p5, p95])
    tp_max = np.max([p5, p95])

    return str(np.around(median, digits)) + ' (' + str(
        np.around(tp_min, digits)) + ', ' + str(np.around(tp_max,
                                                          digits)) + ')'
    ttag = '1950-2019'

    for ens in np.arange(1, nens + 1):
        if_nc = idir_cesm + par + '_' + scen + '-' + str(
            ens) + '_' + ttag + '.nc'

        print(if_nc)
        inc = Dataset(if_nc)
        par_val = (inc[par][:].data + parameters_info[par]['delta']
                   ) * parameters_info[par]['scale']
        inc.close()

        i_pars[ens] = np.append(i_pars[ens], par_val, axis=0)

    ####output concatenated gridded parameter
    _env.mkdirs(_env.odir_root + '/' + parameters_info[par]['dir'] + '/')
    of_nc = _env.odir_root + '/' + parameters_info[par][
        'dir'] + '/' + par + '_' + scen + '_1850-2019_ensemble' + '.nc'
    _env.rmfile(of_nc)

    onc = Dataset(of_nc, 'w', format='NETCDF4')

    d_yr = onc.createDimension('years', (2020 - 1850))
    d_lat = onc.createDimension('lat', len(lat))
    d_lon = onc.createDimension('lon', len(lon))

    v_d_yr = onc.createVariable('years', 'f4', ('years'))
    v_d_yr[:] = np.arange(1850, 2020)

    v_d_lat = onc.createVariable('lat', 'f4', ('lat'))
    v_d_lat[:] = lat.data
sgdp_year = str(gdp_year)

par = 'TREFHT'

ds = 'ERA-Interim'
p_scen = 'No-Aerosol'

if_temp = _env.odir_root + '/sim_temperature/Simulated_Global_and_Country_' + par + '_20yravg.nc'
if_ctry_list = _env.idir_root + '/regioncode/Country_List.xls'
if_ctry_pr = _env.idir_root + '/historical_stat/Ctry_Poor_Rich_from_Burke.csv'  #adopt country list from Burke et al. 2018

if_ctry_gdpcap = _env.idir_root + '/historical_stat/' + '/API_NY.GDP.PCAP.KD_DS2_en_csv_v2.csv'
if_ctry_pop = _env.idir_root + '/historical_stat/' + '/API_SP.POP.TOTL_DS2_en_csv_v2.csv'

odir_gdp = _env.odir_root + '/gdp_' + ds + '/'
_env.mkdirs(odir_gdp)

#climatological temperature from three datasets
if_clim_temp = _env.odir_root + 'sim_temperature/Climatological_Temp_Ctry_3ds.csv'
itbl_clim_temp = pd.read_csv(if_clim_temp, index_col=0)[['iso', ds]]

#country list
itbl_ctry_info = pd.read_csv(_env.odir_root + '/basic_stats/' +
                             'Country_Basic_Stats.csv')

#read global and country-level temperature
T_glob = Dataset(if_temp)['TREFHT_Global'][:, [0, 1]]
T_ctry_full = Dataset(if_temp)['TREFHT_Country'][:, :, [0, 1]]

#extract temperature for analyzed countries
T_ctry = T_ctry_full[((
sgdp_year = str(gdp_year)

par = 'TREFHT'

ds = 'ERA-Interim'
p_scen = 'No-Aerosol'

if_temp = _env.odir_root + '/sim_temperature/Simulated_Global_and_Country_' + par + '_20yravg.nc'
if_ctry_list = _env.idir_root + '/regioncode/Country_List.xls'
if_ctry_pr = _env.idir_root + '/historical_stat/Ctry_Poor_Rich_from_Burke.csv'  #adopt country list from Burke et al. 2018

if_ctry_gdpcap = _env.idir_root + '/historical_stat/' + '/API_NY.GDP.PCAP.KD_DS2_en_csv_v2.csv'
if_ctry_pop = _env.idir_root + '/historical_stat/' + '/API_SP.POP.TOTL_DS2_en_csv_v2.csv'

odir_gdp = _env.odir_root + '/gdp_' + ds + '/'
_env.mkdirs(odir_gdp)

#climatological temperature from three datasets
if_clim_temp = _env.odir_root + 'sim_temperature/Climatological_Temp_Ctry_3ds.csv'
itbl_clim_temp = pd.read_csv(if_clim_temp, index_col=0)[['iso', ds]]

#country list
itbl_ctry_info = pd.read_csv(_env.odir_root + '/basic_stats/' +
                             'Country_Basic_Stats.csv')

#read global and country-level temperature
T_glob = Dataset(if_temp)['TREFHT_Global'][:, [0, 1]]
T_ctry_full = Dataset(if_temp)['TREFHT_Country'][:, :, [0, 1]]

#extract temperature for analyzed countries
T_ctry = T_ctry_full[((
for ctry in i_ctry_grid:
    ind_ctry[int(ctry)] = _env.grid_ind_2d(i_ctry_grid[ctry])

o_ctry_pars = {}
for par in parameters:
    o_ctry_pars[par] = np.zeros([len(itbl_ctry.index), nens, nscen])
    for iscen, scen in enumerate(scenarios):
        i_par = i_pars[par][scen].copy()
        for ctry in itbl_ctry.index:
            ipar_ctry = i_par[:, ind_ctry[ctry][0, :], ind_ctry[ctry][1, :]]
            pop_ctry = pop[ind_ctry[ctry][0, :], ind_ctry[ctry][1, :]]
            o_ctry_pars[par][ctry, :, iscen] = _env.cal_cty_mean(
                ipar_ctry, pop_ctry, ctry)

    #output global and country-level results#
    _env.mkdirs(_env.odir_root + '/' + parameters_info[par]['dir'] + '/')
    of_nc = _env.odir_root + '/' + parameters_info[par][
        'dir'] + '/Simulated_Global_and_Country_' + par + '_20yravg.nc'
    _env.rmfile(of_nc)

    onc = Dataset(of_nc, 'w', format='NETCDF4')

    d_ctry = onc.createDimension('countries', len(itbl_ctry.index))
    d_year = onc.createDimension('ensembles', nens)
    d_ens = onc.createDimension('scenarios', nscen)

    v_par_global = onc.createVariable(par + '_Global', 'f4',
                                      ('ensembles', 'scenarios'))
    v_par_global_pw = onc.createVariable(par + '_Global_PW', 'f4',
                                         ('ensembles', 'scenarios'))
    v_par_ctry = onc.createVariable(par + '_Country', 'f4',