#new code for preparing the NARCLIM data for use in the rma_preprocessing.py

code= it's fullly working!
Development
Valentin Heimhuber 7 years ago
parent 46ade05763
commit 342f4f3bc0

@ -0,0 +1,107 @@
# -*- coding: utf-8 -*-
"""
Created on Fri Jun 08 14:34:51 2018
@author: z5025317
"""
#####################################----------------------------------
#Last Updated - March 2018
#@author: z5025317 Valentin Heimhuber
#code for generating P and ET time series as input to the HUNTER AWBM and RMA models
#Inputs: Uses CSV files that contain all 12 NARCLIM model runs time series for 1 grid cell created with: P1_NARCliM_NC_to_CSV_CCRC_SS.py
#####################################----------------------------------
#####################################----------------------------------
#Load packages
#####################################----------------------------------
import numpy as np
import os
import pandas as pd
import glob
import matplotlib
import matplotlib.pyplot as plt
from datetime import datetime
from datetime import timedelta
from matplotlib.backends.backend_pdf import PdfPages
from ggplot import *
matplotlib.style.use('ggplot')
#
# Set working direcotry (where postprocessed NARClIM data is located)
os.chdir('C:/Users/z5025317/OneDrive - UNSW/Hunter_CC_Modeling/07_Modelling/01_Input/BC_Generation/ClimateData/')
#set directory path for output files
output_directory = 'NARCLIM_Processed/Rainfall/'
#output_directory = 'J:/Project wrl2016032/NARCLIM_Raw_Data/Extracted'
if not os.path.exists(output_directory):
os.makedirs(output_directory)
print('-------------------------------------------')
print("output directory folder didn't exist and was generated")
print('-------------------------------------------')
print('-------------------')
#####################################----------------------------------
#set input parameters
Model_site = 'HUNTER' # 'Belongil'
Clim_var_type = "pracc" # '*' will create pdf for all variables in folder "pracc*|tasmax*"
Bias_Corrected = True
#####################################----------------------------------
Scenarios = ["NNRP_R1_1950", "NNRP_R2_1950", "NNRP_R3_1950", 'CCCMA3.1_R1_2020', 'CCCMA3.1_R2_2020', 'CCCMA3.1_R3_2020',
'CSIRO-MK3.0_R1_2020', 'CSIRO-MK3.0_R2_2020', 'CSIRO-MK3.0_R3_2020', 'ECHAM5_R1_2020','ECHAM5_R2_2020',
'ECHAM5_R3_2020','MIROC3.2_R1_2020', 'MIROC3.2_R2_2020', 'MIROC3.2_R3_2020']
#write the key plots to a single pdf document
pdf_out_file_name = Clim_var_type + '_summary_time_series_plots_NARCliM_summary_.pdf'
pdf_out_path = output_directory +'/' + pdf_out_file_name
#open pdf and add the plots
with PdfPages(pdf_out_path) as pdf:
for scenario in Scenarios:
#scenario = 'CCCMA3.1_R1_2020'
print scenario[:-5]
Catchment_directories = glob.glob('./NARCLIM/*')
Output_df = pd.DataFrame()
for Catchment_dir in Catchment_directories:
Filename = os.path.basename(os.path.normpath(Catchment_dir))
Catchment = 'Catchment' + '_' + Filename.split('_', 2)[1]
if Bias_Corrected:
Catchment_dir = Catchment_dir + '/Bias_corrected'
if scenario[:4] == 'NNRP':
clim_var_csv_path = glob.glob(Catchment_dir + '/' + Clim_var_type + '_NNRP*')
Full_df = pd.read_csv(clim_var_csv_path[0], index_col=0, parse_dates = True)
Full_df.index = Full_df.index.to_period('D')
IVM_df = Full_df.filter(regex= scenario[:-5])
IVM_df = IVM_df.iloc[:,:].loc[(IVM_df.index < '2010-01-01')]
#calculate daily ETo from the NARCLIM ET flux
if Clim_var_type == 'evspsblmean' or Clim_var_type == 'potevpmean':
IVM_df = IVM_df.multiply(86400)
IVM_df.columns = [Catchment]
Output_df = pd.concat([Output_df, IVM_df], axis=1)
else:
clim_var_csv_path = glob.glob(Catchment_dir + '/' + Clim_var_type + '_GCMS*')
Full_df = pd.read_csv(clim_var_csv_path[0], index_col=0, parse_dates = True)
Full_df.index = Full_df.index.to_period('D')
IVM_df = Full_df.filter(regex= scenario[:-5])
IVM_df = IVM_df.iloc[:,:].loc[(IVM_df.index > '1989-12-31')]
if Clim_var_type == 'evspsblmean' or Clim_var_type == 'potevpmean':
IVM_df = IVM_df.multiply(86400)
IVM_df.columns = [scenario[:-5],scenario[:-5], scenario[:-5]]
dfa1 = pd.DataFrame(IVM_df.iloc[:,0]).dropna(axis=0)
dfa2 = pd.DataFrame(IVM_df.iloc[:,1]).dropna(axis=0)
dfa3 = pd.DataFrame(IVM_df.iloc[:,2]).dropna(axis=0)
IVM_df = pd.concat([dfa1, dfa2], axis=0)
IVM_df = pd.concat([IVM_df, dfa3], axis=0)
IVM_df.columns = [Catchment]
Output_df = pd.concat([Output_df, IVM_df], axis=1)
Output_df.index.name = 'datetime'
Output_df_annual = Output_df.resample('A').sum()
Output_df_annual = Output_df_annual.replace(0, np.nan)
# time series plot annual ALL models
plt.title(Clim_var_type + ' - Time series - for all catchments')
Output_df_annual.plot(legend=False)
pdf.savefig(bbox_inches='tight', pad_inches=0.4)
plt.close()
#export the pandas data frame as a CSV file within the output directory
out_file_name = scenario[:-5] + '_' + Clim_var_type + '_NARCliM.csv'
out_path = output_directory +'/' + out_file_name
Output_df.to_csv(out_path)
Loading…
Cancel
Save