def test_project_export_only_apr_may(self): print "" print "" print "test_project_export_only_apr_may..." pulse_limit = RegularTimeSeries("///////","31MAR1980 2400", "1MON",[0,2500,2000,0]) delta_inflow = RegularTimeSeries("///////","31MAR1980 2400", "1MON",[20000,10000,8000,8000]) ei_ratio = RegularTimeSeries("///////","31MAR1980 2400", "1MON",[0.35,0.35,0.35,0.35]) #delta_inflow*ei_ratio = [7000, 3500, 2800, 2800] cvp_out = [3500, 1250, 1000, 1400] swp_out = [3500, 1250, 1000, 1400] swp_out_from_function, cvp_out_from_function = prep_vamp.project_export_limits(pulse_limit, ei_ratio, delta_inflow) swp_array = swp_out_from_function.getYArray() cvp_array = cvp_out_from_function.getYArray() for i in range(0, len(cvp_array)): self.assertEqual(cvp_out[i], round(cvp_array[i], 0)), 'project_export function returned wrong cvp_limit value' self.assertEqual(swp_out[i], round(swp_array[i], 0)), 'project_export function returned wrong swp_limit value'
def test_compare_with_spreadsheet(self): print "" print "" print "test_compare_with_spreadsheet..." cvp_file_name = "cvp_exports.txt" swp_file_name = "swp_exports.txt" fpart = "2020D09D" calsimfile = "2020D09DDV.dss" #read in spreadsheet data f_cvp = open(cvp_file_name) cvp_start_year_ss, cvp_end_year_ss, cvp_pre_vamp_ss, cvp_vamp_apr_ss, cvp_vamp_may_ss, \ cvp_post_vamp_ss = self.read_spreadsheet(f_cvp) f_swp = open(swp_file_name) swp_start_year_ss, swp_end_year_ss, swp_pre_vamp_ss, swp_vamp_apr_ss, swp_vamp_may_ss, \ swp_post_vamp_ss = self.read_spreadsheet(f_swp) if cvp_start_year_ss != swp_start_year_ss: raise ValueError("cvp and swp exports have different start time from the spreadsheet.") #read in dss data and do the calculation using the script path="/CALSIM/D419/FLOW-DELIVERY//1MON/fpart/".replace("fpart",fpart) swp_average_exports=prep_vamp.dss_retrieve_ts(calsimfile,path) path="/CALSIM/D418/FLOW-DELIVERY//1MON/fpart/".replace("fpart",fpart) cvp_average_exports=prep_vamp.dss_retrieve_ts(calsimfile,path) path="/CALSIM/EXPRATIO_/EI-RATIO-STD//1MON/fpart/".replace("fpart",fpart) ei_ratio=prep_vamp.dss_retrieve_ts(calsimfile,path) path="/CALSIM/DINFLOW/INFLOW-PULSE//1MON/fpart/".replace("fpart",fpart) delta_inflow=prep_vamp.dss_retrieve_ts(calsimfile,path) path="/CALSIM/PULSEVAMPEXP/EXPORT//1MON/fpart/".replace("fpart",fpart) total_export_limit=prep_vamp.dss_retrieve_ts(calsimfile,path) swp_limit,cvp_limit=prep_vamp.project_export_limits( total_export_limit,ei_ratio,delta_inflow) swp_from_script=prep_vamp.calculate_exports(swp_limit,swp_average_exports) cvp_from_script=prep_vamp.calculate_exports(cvp_limit,cvp_average_exports) tsmonth_cvp=prep_vamp.month_numbers(cvp_from_script) tsmonth_swp=prep_vamp.month_numbers(swp_from_script) is_april_cvp=(tsmonth_cvp==4) is_april_swp=(tsmonth_swp==4) is_may_cvp=(tsmonth_cvp==5) is_may_swp=(tsmonth_swp==5) cvp_apr_script = is_april_cvp*cvp_from_script swp_apr_script = is_april_swp*swp_from_script cvp_may_script = is_may_cvp*cvp_from_script swp_may_script = is_may_swp*swp_from_script cvp_start_year_script = int(cvp_apr_script.getStartTime().toString()[5:9]) swp_start_year_script = int(swp_apr_script.getStartTime().toString()[5:9]) if cvp_start_year_script != swp_start_year_script: raise ValueError("cvp and swp exports have different start time from the script.") if cvp_start_year_ss < cvp_start_year_script: raise ValueError("start time of cvp exports from the spreadsheet is ahead ofthe start time from the script.") cvp_array_apr_script = cvp_apr_script.getYArray() cvp_array_may_script = cvp_may_script.getYArray() swp_array_apr_script = swp_apr_script.getYArray() swp_array_may_script = swp_may_script.getYArray() # get rid of days that are not in the spreadsheet (1920,1921) # also get rid of days that is not Apr or May n = 0 cvp_start_year_script_mod = cvp_start_year_script while cvp_start_year_script_mod < cvp_start_year_ss: if calendar.isleap(cvp_start_year_script_mod): n += 366 else: n += 365 cvp_start_year_script_mod += 1 #print "cvp_start_year_script_mod:%s, n:%s" % (cvp_start_year_script_mod, n) cvp_pre_vamp_script, cvp_vamp_apr_script = self.get_vamp(cvp_array_apr_script) cvp_vamp_may_script, cvp_post_vamp_script = self.get_vamp(cvp_array_may_script, 1) swp_pre_vamp_script, swp_vamp_apr_script = self.get_vamp(swp_array_apr_script) swp_vamp_may_script, swp_post_vamp_script = self.get_vamp(swp_array_may_script, 1) f_out = open("spcript_out.txt", "w") f_out.write("Tracy Exports (cfs)\n") f_out.write(" \tpre_vamp\t \tvamp_apr\t \tvamp_may\t \tpost_vamp\n") f_out.write("year\tspreadsheet\tscript\tspreadsheet\tscript\tspreadsheet\tscript\tspreadsheet\tscript\n") year = cvp_start_year_ss for i in range(len(cvp_pre_vamp_script)): f_out.write("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n" % (year,cvp_pre_vamp_ss[i],cvp_pre_vamp_script[i],\ cvp_vamp_apr_ss[i],cvp_vamp_apr_script[i],cvp_vamp_may_ss[i],cvp_vamp_may_script[i], \ cvp_post_vamp_ss[i],cvp_post_vamp_script[i])) year += 1 f_out.write("\n") f_out.write("Banks Exports (cfs)\n") f_out.write(" \tpre_vamp\t \tvamp_apr\t \tvamp_may\t \tpost_vamp\n") f_out.write("year\tspreadsheet\tscript\tspreadsheet\tscript\tspreadsheet\tscript\tspreadsheet\tscript\n") year = cvp_start_year_ss for i in range(len(cvp_pre_vamp_script)): f_out.write("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n" % (year,swp_pre_vamp_ss[i],swp_pre_vamp_script[i],\ swp_vamp_apr_ss[i],swp_vamp_apr_script[i],swp_vamp_may_ss[i],swp_vamp_may_script[i], \ swp_post_vamp_ss[i],swp_post_vamp_script[i])) year += 1 f_out.close() for i in range(len(cvp_pre_vamp_ss)): self.assertEqual(round(cvp_pre_vamp_ss[i], 0), round(cvp_pre_vamp_script[i], 0)), \ 'cvp pre_vamp export from script is different from spreadsheet' self.assertEqual(round(cvp_vamp_apr_ss[i], 0), round(cvp_vamp_apr_script[i], 0)), \ 'cvp April vamp export from script is different from spreadsheet' self.assertEqual(round(cvp_vamp_may_ss[i], 0), round(cvp_vamp_may_script[i], 0)), \ 'cvp May vamp export from script is different from spreadsheet' self.assertEqual(round(cvp_post_vamp_ss[i], 0), round(cvp_post_vamp_script[i], 0)), \ 'cvp post vamp export from script is different from spreadsheet' self.assertEqual(round(swp_pre_vamp_ss[i], 0), round(swp_pre_vamp_script[i], 0)), \ 'swp pre_vamp export from script is different from spreadsheet' self.assertEqual(round(swp_vamp_apr_ss[i], 0), round(swp_vamp_apr_script[i], 0)), \ 'swp April vamp export from script is different from spreadsheet' self.assertEqual(round(swp_vamp_may_ss[i], 0), round(swp_vamp_may_script[i], 0)), \ 'swp May vamp export from script is different from spreadsheet' self.assertEqual(round(swp_post_vamp_ss[i], 0), round(swp_post_vamp_script[i], 0)), \ 'swp post vamp export from script is different from spreadsheet'