3 Created on Tue May 4 12:43:50 2021
10 from efo.general
import Constants
15 arrSort = -np.sort(-arr)
16 arrRank = np.arange(1, nRows+1)
17 excProb = np.zeros(nRows)
18 excProb = arrRank/(nRows+1)
19 return excProb, arrSort
23 qCumWy = np.empty(dateTime.size)
25 for i
in range(1,dateTime.size):
26 if (dateTime[i].month == 10)
and (dateTime[i].day == 1):
29 qCumWy[i] = qCumWy[i-1] + q[i]
34 constants = Constants(T)
36 years = np.unique(vDate[:, 0])
37 returnDf = pd.DataFrame()
38 wyVol = np.empty(years.size)
39 for j, curScen
in enumerate(scenarios):
40 idxName = np.full(years.size, scenarios[j])
41 curDf = df.xs(curScen)
42 for i, curYr
in enumerate(years):
43 iCurWY = (curDf.index.year == curYr-1) & (curDf.index.month >= 10) | \
44 (curDf.index.year == curYr) & (curDf.index.month <= 9)
45 wyVol[i] = np.sum(curDf.loc[iCurWY][col].to_numpy()*constants.cfs2af)
46 dfIndices = [idxName, years]
47 dfMultiIdx = pd.MultiIndex.from_arrays(dfIndices, names=(
'name_scenario',
'water_year'))
48 curDf = pd.DataFrame({
'wy_vol': wyVol},
49 columns = [
'wy_vol'], index=dfMultiIdx)
50 returnDf = returnDf.append(curDf)
55 storThresh = np.interp(elevThresh, hypso.elev, hypso.stor)
56 returnDf = pd.DataFrame()
57 for j, curScen
in enumerate(scenarios):
58 curScenarioDf = df.xs(curScen)
59 curDateTime = curScenarioDf.index
60 years = np.unique(curDateTime.year)
61 nDays = np.empty(years.size)
62 idxName = np.full(years.size, scenarios[j])
63 for i, curYr
in enumerate(years):
64 iCurWY = (curDateTime.year == curYr-1) & (curDateTime.month >= 10) | \
65 (curDateTime.year == curYr) & (curDateTime.month <= 9)
66 nDays[i] = np.sum(curScenarioDf.loc[iCurWY][col] > storThresh)
67 dfIndices = [idxName, years]
68 dfMultiIdx = pd.MultiIndex.from_arrays(dfIndices, names=(
'name_scenario',
'water_year'))
69 curDf = pd.DataFrame({
'days_abv_elev': nDays},
70 columns = [
'days_abv_elev'], index=dfMultiIdx)
71 returnDf = returnDf.append(curDf)
def calc_cumulative_wy(*q, dateTime)
def calc_ndays_exceed_elev(*hypso, T, df, col, scenarios, elevThresh)
def calc_wy_vol(*T, df, col, scenarios)