lat = prep.getvarxls(data,'Lat',Cave14C[:,3],0) vegid = prep.getvarxls(data, 'VegTypeCode_Local', Cave14C[:,3], 0) vegiduniq = np.unique(vegid[~np.isnan(vegid)]) botD14C = prep.getvarxls(data, 'D14C_BulkLayer',Cave14C[:,3], -1) clayon = 0 nppon = 0 if clayon == 1: sclayfn = 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\S_CLAY.nc4' tclayfn = 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\T_CLAY.nc4' scecclayfn= 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\S_CEC_CLAY.nc4' tcecclayfn= 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\T_CEC_CLAY.nc4' tbulkdenfn= 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\T_BULK_DEN.nc4' sbulkdenfn= 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\S_BULK_DEN.nc4' nppfn = 'AncillaryData\\NPP\\2000_2012meannpp_gCm2yr.nc' sclay = prep.getHWSD(sclayfn, lon, lat) # % weight tclay = prep.getHWSD(tclayfn, lon, lat) # % weight scecclay = prep.getHWSD(scecclayfn, lon, lat) # cmol/kg clay tcecclay = prep.getHWSD(tcecclayfn, lon, lat) # cmol/kg clay sbulkden = prep.getHWSD(sbulkdenfn, lon, lat) # g/cm3 tbulkden = prep.getHWSD(tbulkdenfn, lon, lat) # g/cm3 clay = tbulkden*tclay*0.3 + sbulkden*sclay*0.7 cecclay = tbulkden*tcecclay*0.3 + sbulkden*scecclay*0.7 if nppon == 1: npp = prep.getnpp(nppfn, lon, lat) # gC/m2/yr dummy = (vegid[:, None] == vegiduniq).astype(float) # dummy[:,1:] #x = np.c_[mat.astype(float),mapp.astype(float),dummy[:,1:]] x = np.c_[mat.astype(float),mapp.astype(float),dummy[:,1:]] sel = np.logical_and(~np.isnan(Cave14C[:,4]), Cave14C[:,2]==cutdep)
ave14C = pd.Series(dum[:,5], index=dum[:,2]) aa['ave14C'] = pd.Series(ave14C, index=aa.index) aa.to_csv('./prof4modelinglist.csv') # median sample year filename = 'Non_peat_data_synthesis.csv' data = pd.read_csv(filename,encoding='iso-8859-1', skiprows=[1]) profid = data[data['Start_of_Profile']==1].index # index of profile start sampleyr = prep.getvarxls(data, 'SampleYear', profid, 0) print 'median sample year is: ', np.median(sampleyr) print 'mean sample year is: ', np.nanmean(sampleyr) #%% extract HWSD soc of the 48 profiles, this file needs to be updated once profile change sawtcfn = 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\AWT_S_SOC.nc4' tawtcfn = 'AncillaryData\\HWSD\\Regridded_ORNLDAAC\\AWT_T_SOC.nc4' totprof = np.loadtxt('tot48prof.txt', unpack=True, delimiter=',').T sawtc = prep.getHWSD(sawtcfn, totprof[:,0], totprof[:,1]) tawtc = prep.getHWSD(tawtcfn, totprof[:,0], totprof[:,1]) hwsdsoc = sawtc + tawtc outf = open('hwsd48profsoc.txt',"w") for item in hwsdsoc: outf.write("%.2f\n" % item) outf.close() #%% --------- plot global 14C modeling D14C histogram vs synthesized data pathh = "C:\\download\\work\\!manuscripts\\14Cboxmodel\\CMIP5_dataAnalysis\\" + \ "twobox_modeling\\esmFixClim1" #glbfn = "C:\\download\work\\!manuscripts\\14Cboxmodel\\CMIP5_dataAnalysis\\" + \ # "RadioC_onebox_modeling\\Extrapolation\\D14Ctot_equrun_fixmodel.out" #glbfn = pathh + "\\CESM\\glb_sitescalar_extraD14CSOC\\extratot.out_6.6_0.16" glbfn = pathh + "\\CESM\\Extrapolate_D14CSOC\\D14C.out" glbD14C = np.loadtxt(glbfn,unpack=True,delimiter=',',skiprows=1)[2,:].T #glbD14C = np.loadtxt(glbfn,unpack=True,skiprows=0)[1,:].T
8:[36, 23, 18, 13, 10]} # biome code in my xlsx. pctC from jobaggy cutdep = 100. filename = 'Non_peat_data_synthesis.csv' Cave14C = prep.getCweightedD14C2(filename, cutdep=cutdep) data = pd.read_csv(filename,encoding='iso-8859-1',index_col='ProfileID', skiprows=[1]) tot1mprofid = Cave14C[np.logical_and(Cave14C[:,1]==0.,Cave14C[:,2]==100.),3] tot1mprofidlon = prep.getvarxls(data, 'Lon', tot1mprofid, 0) tot1mprofidlat = prep.getvarxls(data, 'Lat', tot1mprofid, 0) sitefilename = 'sitegridid2.txt' dum = np.loadtxt(sitefilename, delimiter=',') profid4modeling = dum[:,2] extraprofid = list(set(tot1mprofid) - set(profid4modeling)) sawtcfn = '..\\AncillaryData\\HWSD\\Regridded_ORNLDAAC\\AWT_S_SOC.nc4' tawtcfn = '..\\AncillaryData\\HWSD\\Regridded_ORNLDAAC\\AWT_T_SOC.nc4' sawtc = prep.getHWSD(sawtcfn, tot1mprofidlon, tot1mprofidlat) tawtc = prep.getHWSD(tawtcfn, tot1mprofidlon, tot1mprofidlat) hwsdsoc = sawtc + tawtc #%% compare jobaggy soc vs. obs soc, linear interpolation, using pctC out = [] obss = [] depthh = [] for i in profid4modeling: print 'profile is :',i obs = 10. * data.loc[i:i,'BulkDensity'] * (data.loc[i:i,'Layer_bottom'] - \ data.loc[i:i,'Layer_top']) * data.loc[i:i,'pct_C']/100. # kgC/m2 jobgypctC = np.array(csvbiome[data.loc[i:i,'VegTypeCode_Local'].values[0]])/100. f_i = interp1d(np.r_[0,jobgydepth], np.r_[jobgypctC[0],jobgypctC]) f_x = prep.extrap1d(f_i) layerbot = data.loc[i:i,'Layer_bottom'].values