def lossModelling(event_loss_table_folder,save_ses_csv,save_elt_csv,total_cost,investigationTime,return_periods): timeSES, ses = parse_ses.parse_ses(event_loss_table_folder,save_ses_csv) event_loss_table = parse_elt.parse_elt(event_loss_table_folder,save_elt_csv) losses, rateOfExceedance = estimateLosses(event_loss_table,investigationTime) maxLoss, aal, aalr, lossLevels = estimateLossStatistics(losses,rateOfExceedance,investigationTime,total_cost,return_periods) plotCurves(losses,rateOfExceedance,return_periods,lossLevels)
def exportInfo(event_loss_table_folder): investigationTime, ses = parse_ses.parse_ses(event_loss_table_folder, False) event_loss_table = parse_elt.parse_elt(event_loss_table_folder, False) losses, rateOfExceedance = estimateLosses(event_loss_table, investigationTime) results = open('results.txt', "w") for loss in event_loss_table: rup = ses[np.where(ses[:, 0] == loss[0]), :][0][0] idrup = rup[0] mag = rup[1] lon = str( (float(rup[6]) + float(rup[9]) + float(rup[12]) + float(rup[15])) / 4) lat = str( (float(rup[7]) + float(rup[10]) + float(rup[13]) + float(rup[16])) / 4) depth = str( (float(rup[8]) + float(rup[11]) + float(rup[14]) + float(rup[17])) / 4) lossValue = loss[2] results.write(idrup + ',' + mag + ',' + lon + ',' + lat + ',' + depth + ',' + lossValue + '\n')
def lossModelling(event_loss_table_folder,save_ses_csv,save_elt_csv,total_cost,return_periods): investigationTime, ses = parse_ses.parse_ses(event_loss_table_folder,save_ses_csv) # investigationTime = 170000 event_loss_table = parse_elt.parse_elt(event_loss_table_folder,save_elt_csv) losses, rateOfExceedance = estimateLosses(event_loss_table,investigationTime) maxLoss, aal, aalr, lossLevels = estimateLossStatistics(losses,rateOfExceedance,investigationTime,total_cost,return_periods) plotCurves(losses,rateOfExceedance,return_periods,lossLevels)
def selectRuptures(event_loss_table_folder,return_periods,rups_for_return_period): investigationTime, ses = parse_ses.parse_ses(event_loss_table_folder,False) event_loss_table = parse_elt.parse_elt(event_loss_table_folder,False) losses, rateOfExceedance = estimateLosses(event_loss_table,investigationTime) if rups_for_return_period > 0: ruptures = captureRuptures(losses,rateOfExceedance,ses,event_loss_table,return_periods,rups_for_return_period) for i in range(len(ruptures)): plotCapturedRuptures(ruptures[i],return_periods[i])
def exportInfo(event_loss_table_folder): investigationTime, ses = parse_ses.parse_ses(event_loss_table_folder,False) event_loss_table = parse_elt.parse_elt(event_loss_table_folder,False) losses, rateOfExceedance = estimateLosses(event_loss_table,investigationTime) results = open('results.txt',"w") for loss in event_loss_table: rup = ses[np.where(ses[:,0]==loss[0]),:][0][0] idrup = rup[0] mag = rup[1] lon = str((float(rup[6])+float(rup[9])+float(rup[12])+float(rup[15]))/4) lat = str((float(rup[7])+float(rup[10])+float(rup[13])+float(rup[16]))/4) depth = str((float(rup[8])+float(rup[11])+float(rup[14])+float(rup[17]))/4) lossValue = loss[2] results.write(idrup+','+mag+','+lon+','+lat+','+depth+','+lossValue+'\n')
print 'Loss for a return period of ' + str( return_periods[i]) + ' years.' print losses[idx] else: print 'Return period of ' + str( return_periods[i] ) + ' years is above the time length of the stochastic event set.' return maxLoss, aal, aalr, lossLevels def estimateLosses(event_loss_table, investigationTime): allLosses = map(float, event_loss_table[:, 2]) allLosses.sort(reverse=True) rates = np.arange(1, len(allLosses) + 1) / investigationTime return allLosses, rates def find_nearest(array, value): return (np.abs(array - value)).argmin() #investigationTime, ses = parse_ses.parse_ses('Turkey',True) event_loss_table = parse_elt.parse_elt('Turkey', True) losses, rateOfExceedance = estimateLosses(event_loss_table, 132000) maxLoss, aal, aalr, lossLevels = estimateLossStatistics( losses, rateOfExceedance, 132000, 1.044E12, [475])
annual_rate_exc = 1.0/np.array(return_periods) for i in range(len(annual_rate_exc)): if annual_rate_exc[i] > min(rateOfExceedance): idx = find_nearest(rateOfExceedance,annual_rate_exc[i]) lossLevels.append(losses[idx]) print 'Loss for a return period of '+str(return_periods[i])+' years.' print losses[idx] else: print 'Return period of '+str(return_periods[i])+' years is above the time length of the stochastic event set.' return maxLoss, aal, aalr, lossLevels def estimateLosses(event_loss_table,investigationTime): allLosses = map(float, event_loss_table[:,2]) allLosses.sort(reverse=True) rates = np.arange(1,len(allLosses)+1)/investigationTime return allLosses, rates def find_nearest(array,value): return (np.abs(array-value)).argmin() #investigationTime, ses = parse_ses.parse_ses('Turkey',True) event_loss_table = parse_elt.parse_elt('Turkey',True) losses, rateOfExceedance = estimateLosses(event_loss_table,132000) maxLoss, aal, aalr, lossLevels = estimateLossStatistics(losses,rateOfExceedance,132000, 1.044E12,[475])