Loading examples/dev/reservoirs/Cordell_Hull.csv +1 −1 Original line number Diff line number Diff line datetime,inflow,release datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 Loading examples/dev/reservoirs/Old_Hickory.csv 0 → 100644 +169 −0 Original line number Diff line number Diff line datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 2007-07-01T03:00:00Z,8.416219997951998,4.69492170871826 2007-07-01T04:00:00Z,8.416219997951998,7.706239199319716 2007-07-01T05:00:00Z,8.416219997951998,7.990713481248751 2007-07-01T06:00:00Z,8.416219997951998,6.5661771721100175 2007-07-01T07:00:00Z,8.416219997951998,9.935104640736169 2007-07-01T08:00:00Z,8.416219997951998,5.639826578089164 2007-07-01T09:00:00Z,8.416219997951998,12.563627525443023 2007-07-01T10:00:00Z,8.416219997951998,11.584503491140607 2007-07-01T11:00:00Z,8.416219997951998,6.077601571866892 2007-07-01T12:00:00Z,8.416219997951998,11.737633073185977 2007-07-01T13:00:00Z,8.416219997951998,8.38507969393619 2007-07-01T14:00:00Z,8.416219997951998,7.619851998289994 2007-07-01T15:00:00Z,8.416219997951998,12.434177345803144 2007-07-01T16:00:00Z,8.416219997951998,11.008058928101974 2007-07-01T17:00:00Z,8.416219997951998,8.357046750588287 2007-07-01T18:00:00Z,8.416219997951998,7.405026674311733 2007-07-01T19:00:00Z,8.416219997951998,5.387243195547386 2007-07-01T20:00:00Z,8.416219997951998,6.852892272530108 2007-07-01T21:00:00Z,8.416219997951998,10.553381927405157 2007-07-01T22:00:00Z,8.416219997951998,10.02883979860741 2007-07-01T23:00:00Z,8.416219997951998,6.868997854030686 2007-07-02T00:00:00Z,11.401042206527999,14.054787807022644 2007-07-02T01:00:00Z,11.401042206527999,5.902827103261581 2007-07-02T02:00:00Z,11.401042206527999,14.003312776612573 2007-07-02T03:00:00Z,11.401042206527999,10.94137548175276 2007-07-02T04:00:00Z,11.401042206527999,12.895656096416177 2007-07-02T05:00:00Z,11.401042206527999,9.136423608521048 2007-07-02T06:00:00Z,11.401042206527999,10.739237591999839 2007-07-02T07:00:00Z,11.401042206527999,10.797371343642494 2007-07-02T08:00:00Z,11.401042206527999,9.862119505029126 2007-07-02T09:00:00Z,11.401042206527999,13.723634491758803 2007-07-02T10:00:00Z,11.401042206527999,16.945001527530458 2007-07-02T11:00:00Z,11.401042206527999,5.875427320699803 2007-07-02T12:00:00Z,11.401042206527999,10.132310890516774 2007-07-02T13:00:00Z,11.401042206527999,8.177132004921228 2007-07-02T14:00:00Z,11.401042206527999,9.34136653171742 2007-07-02T15:00:00Z,11.401042206527999,7.5673836474405975 2007-07-02T16:00:00Z,11.401042206527999,12.813150635716573 2007-07-02T17:00:00Z,11.401042206527999,15.340632217692422 2007-07-02T18:00:00Z,11.401042206527999,12.016126802056146 2007-07-02T19:00:00Z,11.401042206527999,14.55522651409827 2007-07-02T20:00:00Z,11.401042206527999,9.968457206276415 2007-07-02T21:00:00Z,11.401042206527999,14.453030369193442 2007-07-02T22:00:00Z,11.401042206527999,7.330188586663013 2007-07-02T23:00:00Z,11.401042206527999,11.309488390425475 2007-07-03T00:00:00Z,11.547836741375999,7.422719276247288 2007-07-03T01:00:00Z,11.547836741375999,8.234758831802045 2007-07-03T02:00:00Z,11.547836741375999,12.632208893855806 2007-07-03T03:00:00Z,11.547836741375999,7.983690914077474 2007-07-03T04:00:00Z,11.547836741375999,6.33869304796781 2007-07-03T05:00:00Z,11.547836741375999,9.034371699225565 2007-07-03T06:00:00Z,11.547836741375999,7.993384938418182 2007-07-03T07:00:00Z,11.547836741375999,15.559806979147687 2007-07-03T08:00:00Z,11.547836741375999,11.781531205701594 2007-07-03T09:00:00Z,11.547836741375999,5.999557392622285 2007-07-03T10:00:00Z,11.547836741375999,8.832920936111671 2007-07-03T11:00:00Z,11.547836741375999,9.6497887529109 2007-07-03T12:00:00Z,11.547836741375999,8.251524928891824 2007-07-03T13:00:00Z,11.547836741375999,17.156341060796755 2007-07-03T14:00:00Z,11.547836741375999,8.05256349503374 2007-07-03T15:00:00Z,11.547836741375999,15.889597594082352 2007-07-03T16:00:00Z,11.547836741375999,17.281486396368674 2007-07-03T17:00:00Z,11.547836741375999,8.85589766303425 2007-07-03T18:00:00Z,11.547836741375999,8.517858232415993 2007-07-03T19:00:00Z,11.547836741375999,9.513993864743691 2007-07-03T20:00:00Z,11.547836741375999,13.633153020177176 2007-07-03T21:00:00Z,11.547836741375999,13.603812617794745 2007-07-03T22:00:00Z,11.547836741375999,11.323390188525575 2007-07-03T23:00:00Z,11.547836741375999,10.34184746292146 2007-07-04T00:00:00Z,7.046137672703999,10.239888389463848 2007-07-04T01:00:00Z,7.046137672703999,5.8784575587597905 2007-07-04T02:00:00Z,7.046137672703999,6.699313828046055 2007-07-04T03:00:00Z,7.046137672703999,3.8763640212433454 2007-07-04T04:00:00Z,7.046137672703999,10.270730097154722 2007-07-04T05:00:00Z,7.046137672703999,6.884325747504043 2007-07-04T06:00:00Z,7.046137672703999,8.024286796074879 2007-07-04T07:00:00Z,7.046137672703999,4.246655323410585 2007-07-04T08:00:00Z,7.046137672703999,5.3747206751583025 2007-07-04T09:00:00Z,7.046137672703999,4.638618646274563 2007-07-04T10:00:00Z,7.046137672703999,5.599888592896644 2007-07-04T11:00:00Z,7.046137672703999,6.305863373281562 2007-07-04T12:00:00Z,7.046137672703999,6.752502973655714 2007-07-04T13:00:00Z,7.046137672703999,9.998363613800459 2007-07-04T14:00:00Z,7.046137672703999,4.381925489429517 2007-07-04T15:00:00Z,7.046137672703999,5.151558428301431 2007-07-04T16:00:00Z,7.046137672703999,6.694808550732034 2007-07-04T17:00:00Z,7.046137672703999,6.296073846207062 2007-07-04T18:00:00Z,7.046137672703999,5.722975234610012 2007-07-04T19:00:00Z,7.046137672703999,8.050572370832432 2007-07-04T20:00:00Z,7.046137672703999,4.807977690404024 2007-07-04T21:00:00Z,7.046137672703999,4.420120502313691 2007-07-04T22:00:00Z,7.046137672703999,9.777711686211843 2007-07-04T23:00:00Z,7.046137672703999,4.889619945545822 2007-07-05T00:00:00Z,3.4007400573119995,1.8042197759638163 2007-07-05T01:00:00Z,3.4007400573119995,1.8729954761869594 2007-07-05T02:00:00Z,3.4007400573119995,4.683962726142156 2007-07-05T03:00:00Z,3.4007400573119995,2.3090915499655638 2007-07-05T04:00:00Z,3.4007400573119995,3.664052614057873 2007-07-05T05:00:00Z,3.4007400573119995,4.7638146023022205 2007-07-05T06:00:00Z,3.4007400573119995,3.7189444350938747 2007-07-05T07:00:00Z,3.4007400573119995,4.425378938807732 2007-07-05T08:00:00Z,3.4007400573119995,2.29067517900868 2007-07-05T09:00:00Z,3.4007400573119995,2.2316398758216387 2007-07-05T10:00:00Z,3.4007400573119995,1.7564834911278588 2007-07-05T11:00:00Z,3.4007400573119995,4.895290940962358 2007-07-05T12:00:00Z,3.4007400573119995,1.8450568093307163 2007-07-05T13:00:00Z,3.4007400573119995,4.60778050527373 2007-07-05T14:00:00Z,3.4007400573119995,4.172667259981488 2007-07-05T15:00:00Z,3.4007400573119995,2.923381973983738 2007-07-05T16:00:00Z,3.4007400573119995,4.953433195092381 2007-07-05T17:00:00Z,3.4007400573119995,2.789986372082994 2007-07-05T18:00:00Z,3.4007400573119995,3.6987611773813462 2007-07-05T19:00:00Z,3.4007400573119995,2.233252789038789 2007-07-05T20:00:00Z,3.4007400573119995,5.063621725470027 2007-07-05T21:00:00Z,3.4007400573119995,3.4400249866408794 2007-07-05T22:00:00Z,3.4007400573119995,4.311490701294223 2007-07-05T23:00:00Z,3.4007400573119995,3.293195344937536 2007-07-06T00:00:00Z,2.3976440691839995,1.223197735488137 2007-07-06T01:00:00Z,2.3976440691839995,3.329055776361745 2007-07-06T02:00:00Z,2.3976440691839995,2.0571508386883943 2007-07-06T03:00:00Z,2.3976440691839995,3.4169549252081364 2007-07-06T04:00:00Z,2.3976440691839995,3.1156904699136327 2007-07-06T05:00:00Z,2.3976440691839995,1.9960102249601634 2007-07-06T06:00:00Z,2.3976440691839995,3.011091877064751 2007-07-06T07:00:00Z,2.3976440691839995,2.325782490073682 2007-07-06T08:00:00Z,2.3976440691839995,1.5331152592156267 2007-07-06T09:00:00Z,2.3976440691839995,3.2747248585864432 2007-07-06T10:00:00Z,2.3976440691839995,1.3373158058680792 2007-07-06T11:00:00Z,2.3976440691839995,3.3380054331123583 2007-07-06T12:00:00Z,2.3976440691839995,2.217973057253805 2007-07-06T13:00:00Z,2.3976440691839995,2.796016510394889 2007-07-06T14:00:00Z,2.3976440691839995,2.693261548493505 2007-07-06T15:00:00Z,2.3976440691839995,1.974522532619386 2007-07-06T16:00:00Z,2.3976440691839995,3.0257938818958254 2007-07-06T17:00:00Z,2.3976440691839995,3.1182110695144227 2007-07-06T18:00:00Z,2.3976440691839995,1.8129309932536324 2007-07-06T19:00:00Z,2.3976440691839995,3.2347684417158304 2007-07-06T20:00:00Z,2.3976440691839995,2.5260321358859166 2007-07-06T21:00:00Z,2.3976440691839995,3.2102582043300747 2007-07-06T22:00:00Z,2.3976440691839995,3.3220542562578332 2007-07-06T23:00:00Z,2.3976440691839995,2.7016829854402014 2007-07-07T00:00:00Z,1.9572604646400003,1.3679207225444083 2007-07-07T01:00:00Z,1.9572604646400003,1.7825000996164175 2007-07-07T02:00:00Z,1.9572604646400003,1.4507102542160224 2007-07-07T03:00:00Z,1.9572604646400003,2.21589206380837 2007-07-07T04:00:00Z,1.9572604646400003,1.5733548376999111 2007-07-07T05:00:00Z,1.9572604646400003,1.4081392447218022 2007-07-07T06:00:00Z,1.9572604646400003,2.6673300964136697 2007-07-07T07:00:00Z,1.9572604646400003,2.708883822174827 2007-07-07T08:00:00Z,1.9572604646400003,2.4303522434156126 2007-07-07T09:00:00Z,1.9572604646400003,1.5086885229908662 2007-07-07T10:00:00Z,1.9572604646400003,2.8095854616853457 2007-07-07T11:00:00Z,1.9572604646400003,1.0948007280936083 2007-07-07T12:00:00Z,1.9572604646400003,1.0324641803572616 2007-07-07T13:00:00Z,1.9572604646400003,1.1169703696699251 2007-07-07T14:00:00Z,1.9572604646400003,2.9055189118084868 2007-07-07T15:00:00Z,1.9572604646400003,1.1909804977900813 2007-07-07T16:00:00Z,1.9572604646400003,2.2305085045466684 2007-07-07T17:00:00Z,1.9572604646400003,2.0787625662123737 2007-07-07T18:00:00Z,1.9572604646400003,2.503711672491426 2007-07-07T19:00:00Z,1.9572604646400003,2.533236773585508 2007-07-07T20:00:00Z,1.9572604646400003,2.4168857623377273 2007-07-07T21:00:00Z,1.9572604646400003,2.4045215973288245 2007-07-07T22:00:00Z,1.9572604646400003,2.8805597467947033 2007-07-07T23:00:00Z,1.9572604646400003,2.501509904036444 examples/dev/reservoirs/Wolf_Creek.csv +1 −1 Original line number Diff line number Diff line datetime,inflow,release datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 Loading examples/dev/reservoirs/reservoir_config.yaml +8 −2 Original line number Diff line number Diff line Loading @@ -6,5 +6,11 @@ Wolf_Creek: Cordell_Hull: capacity: 80.0 initial_storage: 40.0 max_release: 12.0 max_release: 8 min_release: 2.0 Old_Hickory: capacity: 200.0 initial_storage: 40.0 max_release: 8 min_release: 2.0 No newline at end of file examples/dev/script.qmd +35 −27 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ library(lubridate) library(readr) library(ggplot2) library(patchwork) library(purrr) setwd("examples/dev/") use_condaenv("powersheds") ``` Loading @@ -23,7 +24,6 @@ from dataclasses import dataclass from pathlib import Path ``` ```{python} @dataclass Loading @@ -32,8 +32,9 @@ class ReservoirData: initial_storage: float max_release: float min_release: float inflow: list[float] release: list[float] catchment_inflow: list[float] target_release: list[float] simulation_order: int @dataclass class CascadeData: Loading @@ -43,11 +44,19 @@ class CascadeData: with open('reservoirs/reservoir_config.yaml', 'r') as file: config_dict = yaml.safe_load(file) simulation_orders = { "Wolf_Creek": 1, "Cordell_Hull": 2, "Old_Hickory": 3 } cascade_data = CascadeData(reservoirs={ name: ReservoirData( **config_dict[name], # Unpacks the specifications from YAML inflow=pd.read_csv(f"reservoirs/{name}.csv")['inflow'].tolist(), release=pd.read_csv(f"reservoirs/{name}.csv")['release'].tolist() catchment_inflow=pd.read_csv(f"reservoirs/{name}.csv")['catchment_inflow'].tolist(), target_release=pd.read_csv(f"reservoirs/{name}.csv")['target_release'].tolist(), simulation_order = simulation_orders[name] ) for name in config_dict.keys() }) Loading @@ -64,25 +73,22 @@ results = powersheds.simulate_cascade( ``` ```{r} names(py$simulation_orders) -> reservoirs_ordered reservoirs_ordered |> map_dfr(function(reservoir){ py$results[[reservoir]] -> reservoir_results tibble( reservoir = "Wolf Creek", inflow = py$results$Wolf_Creek$inflow, release_target = py$results$Wolf_Creek$release_target, storage = py$results$Wolf_Creek$storage, release_implemented = py$results$Wolf_Creek$release, spill = py$results$Wolf_Creek$spill ) |> bind_rows( tibble( reservoir = "Cordell Hull", inflow = py$results$Cordell_Hull$inflow, release_target = py$results$WolfCordell_Hull_Creek$release_target, storage = py$results$Cordell_Hull$storage, release_implemented = py$results$Cordell_Hull$release, spill = py$results$Cordell_Hull$spill ) ) |> mutate(hr_index = 1:n()) -> reservoir = !!reservoir, inflow = reservoir_results$total_inflow, target_release = reservoir_results$target_release, storage = reservoir_results$storage, release_implemented = reservoir_results$release, spill = reservoir_results$spill ) |> mutate(hr_index = 1:n()) }) |> mutate(reservoir = factor(reservoir, levels = reservoirs_ordered)) -> ts_data_for_plot powersheds_plot_theme <- function(){ Loading @@ -94,20 +100,22 @@ powersheds_plot_theme <- function(){ legend.position = "top") } plot_cols <- length(reservoirs_ordered) ts_data_for_plot |> select(reservoir, hr_index, inflow, release_target, release_implemented, spill) |> select(reservoir, hr_index, inflow, target_release, release_implemented, spill) |> tidyr::pivot_longer(-c(hr_index, reservoir), names_to = "variable") |> ggplot(aes(hr_index, value, col = variable)) + geom_line() + powersheds_plot_theme() + facet_wrap(~reservoir, ncol = 2) -> flows_plot facet_wrap(~reservoir, ncol = plot_cols) -> flows_plot ts_data_for_plot |> select(reservoir, hr_index, storage) |> ggplot(aes(hr_index, storage)) + geom_line() + powersheds_plot_theme() + facet_wrap(~reservoir, ncol = 2) -> storage_plot facet_wrap(~reservoir, ncol = plot_cols) -> storage_plot flows_plot + storage_plot + plot_layout(ncol = 1) Loading Loading
examples/dev/reservoirs/Cordell_Hull.csv +1 −1 Original line number Diff line number Diff line datetime,inflow,release datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 Loading
examples/dev/reservoirs/Old_Hickory.csv 0 → 100644 +169 −0 Original line number Diff line number Diff line datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 2007-07-01T03:00:00Z,8.416219997951998,4.69492170871826 2007-07-01T04:00:00Z,8.416219997951998,7.706239199319716 2007-07-01T05:00:00Z,8.416219997951998,7.990713481248751 2007-07-01T06:00:00Z,8.416219997951998,6.5661771721100175 2007-07-01T07:00:00Z,8.416219997951998,9.935104640736169 2007-07-01T08:00:00Z,8.416219997951998,5.639826578089164 2007-07-01T09:00:00Z,8.416219997951998,12.563627525443023 2007-07-01T10:00:00Z,8.416219997951998,11.584503491140607 2007-07-01T11:00:00Z,8.416219997951998,6.077601571866892 2007-07-01T12:00:00Z,8.416219997951998,11.737633073185977 2007-07-01T13:00:00Z,8.416219997951998,8.38507969393619 2007-07-01T14:00:00Z,8.416219997951998,7.619851998289994 2007-07-01T15:00:00Z,8.416219997951998,12.434177345803144 2007-07-01T16:00:00Z,8.416219997951998,11.008058928101974 2007-07-01T17:00:00Z,8.416219997951998,8.357046750588287 2007-07-01T18:00:00Z,8.416219997951998,7.405026674311733 2007-07-01T19:00:00Z,8.416219997951998,5.387243195547386 2007-07-01T20:00:00Z,8.416219997951998,6.852892272530108 2007-07-01T21:00:00Z,8.416219997951998,10.553381927405157 2007-07-01T22:00:00Z,8.416219997951998,10.02883979860741 2007-07-01T23:00:00Z,8.416219997951998,6.868997854030686 2007-07-02T00:00:00Z,11.401042206527999,14.054787807022644 2007-07-02T01:00:00Z,11.401042206527999,5.902827103261581 2007-07-02T02:00:00Z,11.401042206527999,14.003312776612573 2007-07-02T03:00:00Z,11.401042206527999,10.94137548175276 2007-07-02T04:00:00Z,11.401042206527999,12.895656096416177 2007-07-02T05:00:00Z,11.401042206527999,9.136423608521048 2007-07-02T06:00:00Z,11.401042206527999,10.739237591999839 2007-07-02T07:00:00Z,11.401042206527999,10.797371343642494 2007-07-02T08:00:00Z,11.401042206527999,9.862119505029126 2007-07-02T09:00:00Z,11.401042206527999,13.723634491758803 2007-07-02T10:00:00Z,11.401042206527999,16.945001527530458 2007-07-02T11:00:00Z,11.401042206527999,5.875427320699803 2007-07-02T12:00:00Z,11.401042206527999,10.132310890516774 2007-07-02T13:00:00Z,11.401042206527999,8.177132004921228 2007-07-02T14:00:00Z,11.401042206527999,9.34136653171742 2007-07-02T15:00:00Z,11.401042206527999,7.5673836474405975 2007-07-02T16:00:00Z,11.401042206527999,12.813150635716573 2007-07-02T17:00:00Z,11.401042206527999,15.340632217692422 2007-07-02T18:00:00Z,11.401042206527999,12.016126802056146 2007-07-02T19:00:00Z,11.401042206527999,14.55522651409827 2007-07-02T20:00:00Z,11.401042206527999,9.968457206276415 2007-07-02T21:00:00Z,11.401042206527999,14.453030369193442 2007-07-02T22:00:00Z,11.401042206527999,7.330188586663013 2007-07-02T23:00:00Z,11.401042206527999,11.309488390425475 2007-07-03T00:00:00Z,11.547836741375999,7.422719276247288 2007-07-03T01:00:00Z,11.547836741375999,8.234758831802045 2007-07-03T02:00:00Z,11.547836741375999,12.632208893855806 2007-07-03T03:00:00Z,11.547836741375999,7.983690914077474 2007-07-03T04:00:00Z,11.547836741375999,6.33869304796781 2007-07-03T05:00:00Z,11.547836741375999,9.034371699225565 2007-07-03T06:00:00Z,11.547836741375999,7.993384938418182 2007-07-03T07:00:00Z,11.547836741375999,15.559806979147687 2007-07-03T08:00:00Z,11.547836741375999,11.781531205701594 2007-07-03T09:00:00Z,11.547836741375999,5.999557392622285 2007-07-03T10:00:00Z,11.547836741375999,8.832920936111671 2007-07-03T11:00:00Z,11.547836741375999,9.6497887529109 2007-07-03T12:00:00Z,11.547836741375999,8.251524928891824 2007-07-03T13:00:00Z,11.547836741375999,17.156341060796755 2007-07-03T14:00:00Z,11.547836741375999,8.05256349503374 2007-07-03T15:00:00Z,11.547836741375999,15.889597594082352 2007-07-03T16:00:00Z,11.547836741375999,17.281486396368674 2007-07-03T17:00:00Z,11.547836741375999,8.85589766303425 2007-07-03T18:00:00Z,11.547836741375999,8.517858232415993 2007-07-03T19:00:00Z,11.547836741375999,9.513993864743691 2007-07-03T20:00:00Z,11.547836741375999,13.633153020177176 2007-07-03T21:00:00Z,11.547836741375999,13.603812617794745 2007-07-03T22:00:00Z,11.547836741375999,11.323390188525575 2007-07-03T23:00:00Z,11.547836741375999,10.34184746292146 2007-07-04T00:00:00Z,7.046137672703999,10.239888389463848 2007-07-04T01:00:00Z,7.046137672703999,5.8784575587597905 2007-07-04T02:00:00Z,7.046137672703999,6.699313828046055 2007-07-04T03:00:00Z,7.046137672703999,3.8763640212433454 2007-07-04T04:00:00Z,7.046137672703999,10.270730097154722 2007-07-04T05:00:00Z,7.046137672703999,6.884325747504043 2007-07-04T06:00:00Z,7.046137672703999,8.024286796074879 2007-07-04T07:00:00Z,7.046137672703999,4.246655323410585 2007-07-04T08:00:00Z,7.046137672703999,5.3747206751583025 2007-07-04T09:00:00Z,7.046137672703999,4.638618646274563 2007-07-04T10:00:00Z,7.046137672703999,5.599888592896644 2007-07-04T11:00:00Z,7.046137672703999,6.305863373281562 2007-07-04T12:00:00Z,7.046137672703999,6.752502973655714 2007-07-04T13:00:00Z,7.046137672703999,9.998363613800459 2007-07-04T14:00:00Z,7.046137672703999,4.381925489429517 2007-07-04T15:00:00Z,7.046137672703999,5.151558428301431 2007-07-04T16:00:00Z,7.046137672703999,6.694808550732034 2007-07-04T17:00:00Z,7.046137672703999,6.296073846207062 2007-07-04T18:00:00Z,7.046137672703999,5.722975234610012 2007-07-04T19:00:00Z,7.046137672703999,8.050572370832432 2007-07-04T20:00:00Z,7.046137672703999,4.807977690404024 2007-07-04T21:00:00Z,7.046137672703999,4.420120502313691 2007-07-04T22:00:00Z,7.046137672703999,9.777711686211843 2007-07-04T23:00:00Z,7.046137672703999,4.889619945545822 2007-07-05T00:00:00Z,3.4007400573119995,1.8042197759638163 2007-07-05T01:00:00Z,3.4007400573119995,1.8729954761869594 2007-07-05T02:00:00Z,3.4007400573119995,4.683962726142156 2007-07-05T03:00:00Z,3.4007400573119995,2.3090915499655638 2007-07-05T04:00:00Z,3.4007400573119995,3.664052614057873 2007-07-05T05:00:00Z,3.4007400573119995,4.7638146023022205 2007-07-05T06:00:00Z,3.4007400573119995,3.7189444350938747 2007-07-05T07:00:00Z,3.4007400573119995,4.425378938807732 2007-07-05T08:00:00Z,3.4007400573119995,2.29067517900868 2007-07-05T09:00:00Z,3.4007400573119995,2.2316398758216387 2007-07-05T10:00:00Z,3.4007400573119995,1.7564834911278588 2007-07-05T11:00:00Z,3.4007400573119995,4.895290940962358 2007-07-05T12:00:00Z,3.4007400573119995,1.8450568093307163 2007-07-05T13:00:00Z,3.4007400573119995,4.60778050527373 2007-07-05T14:00:00Z,3.4007400573119995,4.172667259981488 2007-07-05T15:00:00Z,3.4007400573119995,2.923381973983738 2007-07-05T16:00:00Z,3.4007400573119995,4.953433195092381 2007-07-05T17:00:00Z,3.4007400573119995,2.789986372082994 2007-07-05T18:00:00Z,3.4007400573119995,3.6987611773813462 2007-07-05T19:00:00Z,3.4007400573119995,2.233252789038789 2007-07-05T20:00:00Z,3.4007400573119995,5.063621725470027 2007-07-05T21:00:00Z,3.4007400573119995,3.4400249866408794 2007-07-05T22:00:00Z,3.4007400573119995,4.311490701294223 2007-07-05T23:00:00Z,3.4007400573119995,3.293195344937536 2007-07-06T00:00:00Z,2.3976440691839995,1.223197735488137 2007-07-06T01:00:00Z,2.3976440691839995,3.329055776361745 2007-07-06T02:00:00Z,2.3976440691839995,2.0571508386883943 2007-07-06T03:00:00Z,2.3976440691839995,3.4169549252081364 2007-07-06T04:00:00Z,2.3976440691839995,3.1156904699136327 2007-07-06T05:00:00Z,2.3976440691839995,1.9960102249601634 2007-07-06T06:00:00Z,2.3976440691839995,3.011091877064751 2007-07-06T07:00:00Z,2.3976440691839995,2.325782490073682 2007-07-06T08:00:00Z,2.3976440691839995,1.5331152592156267 2007-07-06T09:00:00Z,2.3976440691839995,3.2747248585864432 2007-07-06T10:00:00Z,2.3976440691839995,1.3373158058680792 2007-07-06T11:00:00Z,2.3976440691839995,3.3380054331123583 2007-07-06T12:00:00Z,2.3976440691839995,2.217973057253805 2007-07-06T13:00:00Z,2.3976440691839995,2.796016510394889 2007-07-06T14:00:00Z,2.3976440691839995,2.693261548493505 2007-07-06T15:00:00Z,2.3976440691839995,1.974522532619386 2007-07-06T16:00:00Z,2.3976440691839995,3.0257938818958254 2007-07-06T17:00:00Z,2.3976440691839995,3.1182110695144227 2007-07-06T18:00:00Z,2.3976440691839995,1.8129309932536324 2007-07-06T19:00:00Z,2.3976440691839995,3.2347684417158304 2007-07-06T20:00:00Z,2.3976440691839995,2.5260321358859166 2007-07-06T21:00:00Z,2.3976440691839995,3.2102582043300747 2007-07-06T22:00:00Z,2.3976440691839995,3.3220542562578332 2007-07-06T23:00:00Z,2.3976440691839995,2.7016829854402014 2007-07-07T00:00:00Z,1.9572604646400003,1.3679207225444083 2007-07-07T01:00:00Z,1.9572604646400003,1.7825000996164175 2007-07-07T02:00:00Z,1.9572604646400003,1.4507102542160224 2007-07-07T03:00:00Z,1.9572604646400003,2.21589206380837 2007-07-07T04:00:00Z,1.9572604646400003,1.5733548376999111 2007-07-07T05:00:00Z,1.9572604646400003,1.4081392447218022 2007-07-07T06:00:00Z,1.9572604646400003,2.6673300964136697 2007-07-07T07:00:00Z,1.9572604646400003,2.708883822174827 2007-07-07T08:00:00Z,1.9572604646400003,2.4303522434156126 2007-07-07T09:00:00Z,1.9572604646400003,1.5086885229908662 2007-07-07T10:00:00Z,1.9572604646400003,2.8095854616853457 2007-07-07T11:00:00Z,1.9572604646400003,1.0948007280936083 2007-07-07T12:00:00Z,1.9572604646400003,1.0324641803572616 2007-07-07T13:00:00Z,1.9572604646400003,1.1169703696699251 2007-07-07T14:00:00Z,1.9572604646400003,2.9055189118084868 2007-07-07T15:00:00Z,1.9572604646400003,1.1909804977900813 2007-07-07T16:00:00Z,1.9572604646400003,2.2305085045466684 2007-07-07T17:00:00Z,1.9572604646400003,2.0787625662123737 2007-07-07T18:00:00Z,1.9572604646400003,2.503711672491426 2007-07-07T19:00:00Z,1.9572604646400003,2.533236773585508 2007-07-07T20:00:00Z,1.9572604646400003,2.4168857623377273 2007-07-07T21:00:00Z,1.9572604646400003,2.4045215973288245 2007-07-07T22:00:00Z,1.9572604646400003,2.8805597467947033 2007-07-07T23:00:00Z,1.9572604646400003,2.501509904036444
examples/dev/reservoirs/Wolf_Creek.csv +1 −1 Original line number Diff line number Diff line datetime,inflow,release datetime,catchment_inflow,target_release 2007-07-01T00:00:00Z,8.416219997951998,5.308050825937269 2007-07-01T01:00:00Z,8.416219997951998,5.101331614130994 2007-07-01T02:00:00Z,8.416219997951998,6.406875581125612 Loading
examples/dev/reservoirs/reservoir_config.yaml +8 −2 Original line number Diff line number Diff line Loading @@ -6,5 +6,11 @@ Wolf_Creek: Cordell_Hull: capacity: 80.0 initial_storage: 40.0 max_release: 12.0 max_release: 8 min_release: 2.0 Old_Hickory: capacity: 200.0 initial_storage: 40.0 max_release: 8 min_release: 2.0 No newline at end of file
examples/dev/script.qmd +35 −27 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ library(lubridate) library(readr) library(ggplot2) library(patchwork) library(purrr) setwd("examples/dev/") use_condaenv("powersheds") ``` Loading @@ -23,7 +24,6 @@ from dataclasses import dataclass from pathlib import Path ``` ```{python} @dataclass Loading @@ -32,8 +32,9 @@ class ReservoirData: initial_storage: float max_release: float min_release: float inflow: list[float] release: list[float] catchment_inflow: list[float] target_release: list[float] simulation_order: int @dataclass class CascadeData: Loading @@ -43,11 +44,19 @@ class CascadeData: with open('reservoirs/reservoir_config.yaml', 'r') as file: config_dict = yaml.safe_load(file) simulation_orders = { "Wolf_Creek": 1, "Cordell_Hull": 2, "Old_Hickory": 3 } cascade_data = CascadeData(reservoirs={ name: ReservoirData( **config_dict[name], # Unpacks the specifications from YAML inflow=pd.read_csv(f"reservoirs/{name}.csv")['inflow'].tolist(), release=pd.read_csv(f"reservoirs/{name}.csv")['release'].tolist() catchment_inflow=pd.read_csv(f"reservoirs/{name}.csv")['catchment_inflow'].tolist(), target_release=pd.read_csv(f"reservoirs/{name}.csv")['target_release'].tolist(), simulation_order = simulation_orders[name] ) for name in config_dict.keys() }) Loading @@ -64,25 +73,22 @@ results = powersheds.simulate_cascade( ``` ```{r} names(py$simulation_orders) -> reservoirs_ordered reservoirs_ordered |> map_dfr(function(reservoir){ py$results[[reservoir]] -> reservoir_results tibble( reservoir = "Wolf Creek", inflow = py$results$Wolf_Creek$inflow, release_target = py$results$Wolf_Creek$release_target, storage = py$results$Wolf_Creek$storage, release_implemented = py$results$Wolf_Creek$release, spill = py$results$Wolf_Creek$spill ) |> bind_rows( tibble( reservoir = "Cordell Hull", inflow = py$results$Cordell_Hull$inflow, release_target = py$results$WolfCordell_Hull_Creek$release_target, storage = py$results$Cordell_Hull$storage, release_implemented = py$results$Cordell_Hull$release, spill = py$results$Cordell_Hull$spill ) ) |> mutate(hr_index = 1:n()) -> reservoir = !!reservoir, inflow = reservoir_results$total_inflow, target_release = reservoir_results$target_release, storage = reservoir_results$storage, release_implemented = reservoir_results$release, spill = reservoir_results$spill ) |> mutate(hr_index = 1:n()) }) |> mutate(reservoir = factor(reservoir, levels = reservoirs_ordered)) -> ts_data_for_plot powersheds_plot_theme <- function(){ Loading @@ -94,20 +100,22 @@ powersheds_plot_theme <- function(){ legend.position = "top") } plot_cols <- length(reservoirs_ordered) ts_data_for_plot |> select(reservoir, hr_index, inflow, release_target, release_implemented, spill) |> select(reservoir, hr_index, inflow, target_release, release_implemented, spill) |> tidyr::pivot_longer(-c(hr_index, reservoir), names_to = "variable") |> ggplot(aes(hr_index, value, col = variable)) + geom_line() + powersheds_plot_theme() + facet_wrap(~reservoir, ncol = 2) -> flows_plot facet_wrap(~reservoir, ncol = plot_cols) -> flows_plot ts_data_for_plot |> select(reservoir, hr_index, storage) |> ggplot(aes(hr_index, storage)) + geom_line() + powersheds_plot_theme() + facet_wrap(~reservoir, ncol = 2) -> storage_plot facet_wrap(~reservoir, ncol = plot_cols) -> storage_plot flows_plot + storage_plot + plot_layout(ncol = 1) Loading