Skip to content

Commit 4a69304

Browse files
authored
RA Toolkit support for not printing default availability values of 1 (#1365)
1 parent 7a3ceee commit 4a69304

21 files changed

Lines changed: 3373 additions & 2 deletions

data_toolkit/project/availability/outages/create_availability_iteration_input_csvs.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,14 @@ def parse_arguments(args):
158158
help="The number of projects to simulate in parallel. Defaults to 1.",
159159
)
160160

161+
parser.add_argument(
162+
"-print_ones",
163+
"--print_ones",
164+
default=False,
165+
action="store_true",
166+
help="Include rows where derate values equal 1. Defaults to False.",
167+
)
168+
161169
parser.add_argument("-q", "--quiet", default=False, action="store_true")
162170

163171
parsed_arguments = parser.parse_known_args(args=args)[0]
@@ -268,6 +276,7 @@ def simulate_project_availability(
268276
stage_id,
269277
study_year,
270278
filepath,
279+
print_ones,
271280
):
272281

273282
stage_tmp_dict = get_temporal_structure(study_year)
@@ -294,6 +303,31 @@ def simulate_project_availability(
294303
}
295304
)
296305

306+
# Filter out rows where derate values are 1, unless print_ones is True
307+
if not print_ones:
308+
# For non-hybrids, find rows with (!=1, None)
309+
export_df_non_hyb = export_df[
310+
(
311+
(export_df["availability_derate_independent"] != 1)
312+
& (export_df["hyb_stor_cap_availability_derate"].isna())
313+
)
314+
]
315+
316+
# For hybrids, find rows where either column is not 1
317+
# First, skip the rows where the storage derate is NA (so that we
318+
# don't end up including the ones for non-hybrids)
319+
export_df_hyb = export_df[
320+
(
321+
(export_df["hyb_stor_cap_availability_derate"].notna())
322+
& (
323+
(export_df["availability_derate_independent"] != 1)
324+
| ((export_df["hyb_stor_cap_availability_derate"] != 1))
325+
)
326+
)
327+
]
328+
329+
export_df = pd.concat([export_df_non_hyb, export_df_hyb]).drop_duplicates()
330+
297331
export_df.to_csv(
298332
filepath,
299333
mode="a",
@@ -401,6 +435,7 @@ def simulate_project_availability_pool(pool_datum):
401435
stage_id,
402436
study_year,
403437
filepath,
438+
print_ones,
404439
] = pool_datum
405440

406441
simulate_project_availability(
@@ -414,6 +449,7 @@ def simulate_project_availability_pool(pool_datum):
414449
stage_id=stage_id,
415450
study_year=study_year,
416451
filepath=filepath,
452+
print_ones=print_ones,
417453
)
418454

419455

@@ -520,6 +556,7 @@ def main(args=None):
520556
parsed_args.stage_id,
521557
int(parsed_args.study_year),
522558
filepath,
559+
parsed_args.print_ones,
523560
]
524561
)
525562

data_toolkit/project/availability/weather_derates/create_monte_carlo_gen_weather_derate_input_csvs.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ def parse_arguments(args):
153153
help="The number of projects to simulate in parallel. Defaults to 1.",
154154
)
155155

156+
parser.add_argument(
157+
"-ones",
158+
"--print_ones",
159+
default=False,
160+
action="store_true",
161+
help="Include rows where derate values equal 1. " "Defaults to False.",
162+
)
163+
156164
parser.add_argument("-q", "--quiet", default=False, action="store_true")
157165

158166
parsed_arguments = parser.parse_known_args(args=args)[0]
@@ -203,6 +211,8 @@ def main(args=None):
203211
param_name="availability_derate_weather",
204212
raw_data_table="raw_data_availability_profiles",
205213
study_year=int(parsed_args.study_year),
214+
print_default_values=parsed_args.print_ones,
215+
default_value=1,
206216
no_hydro_iteration=True,
207217
)
208218

data_toolkit/project/availability/weather_derates/create_sync_gen_weather_derate_input_csvs.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
from db.common_functions import connect_to_database
5454
from data_toolkit.load_raw_data import read_and_import_csv
5555
from data_toolkit.project.create_sync_gen_input_csvs_common import (
56-
create_project_profile_csv,
5756
get_sync_project_pool_and_make_profile_csvs,
5857
)
5958

@@ -125,6 +124,14 @@ def parse_arguments(args):
125124
help="The number of projects to simulate in parallel. Defaults to 1.",
126125
)
127126

127+
parser.add_argument(
128+
"-ones",
129+
"--print_ones",
130+
default=False,
131+
action="store_true",
132+
help="Include rows where derate values equal 1. Defaults to False.",
133+
)
134+
128135
parser.add_argument("-q", "--quiet", default=False, action="store_true")
129136

130137
parsed_arguments = parser.parse_known_args(args=args)[0]
@@ -175,6 +182,8 @@ def main(args=None):
175182
varies_by_hydro=0,
176183
include_hydro_iteration_column=False,
177184
n_parallel_projects=parsed_args.n_parallel_projects,
185+
print_default_values=parsed_args.print_ones,
186+
default_value=1,
178187
)
179188

180189

data_toolkit/project/create_monte_carlo_gen_input_csvs_common.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ def get_monte_carlo_timeseries_project_pool_and_make_profile_csvs(
4343
param_name,
4444
raw_data_table,
4545
study_year,
46+
print_default_values,
47+
default_value,
4648
no_hydro_iteration=False,
4749
):
4850
conn = connect_to_database(db_path=db_path)
@@ -100,6 +102,8 @@ def get_monte_carlo_timeseries_project_pool_and_make_profile_csvs(
100102
param_name,
101103
raw_data_table,
102104
study_year,
105+
print_default_values,
106+
default_value,
103107
no_hydro_iteration,
104108
]
105109
for timeseries_name in timeseries_project_unit_dict.keys()
@@ -130,6 +134,8 @@ def create_project_profile_csv(
130134
param_name,
131135
raw_data_table,
132136
study_year,
137+
print_default_values,
138+
default_value,
133139
no_hydro_iteration=False,
134140
):
135141
# Connect to database
@@ -194,6 +200,11 @@ def create_project_profile_csv(
194200
# Put into a dataframe and add to file
195201
df = pd.read_sql(project_query, con=conn)
196202

203+
# Filter out rows where the value is the default, unless
204+
# print_default_values is True
205+
if not print_default_values:
206+
df = df[df[param_name] != default_value]
207+
197208
filename = os.path.join(
198209
output_directory,
199210
f"{project}-{profile_scenario_id}-" f"{profile_scenario_name}.csv",
@@ -244,6 +255,8 @@ def create_project_profile_csv_pool(pool_datum):
244255
param_name,
245256
raw_data_table,
246257
study_year,
258+
print_default_values,
259+
default_value,
247260
no_hydro_iteration,
248261
] = pool_datum
249262

@@ -261,5 +274,7 @@ def create_project_profile_csv_pool(pool_datum):
261274
param_name=param_name,
262275
raw_data_table=raw_data_table,
263276
study_year=study_year,
277+
print_default_values=print_default_values,
278+
default_value=default_value,
264279
no_hydro_iteration=no_hydro_iteration,
265280
)

data_toolkit/project/create_sync_gen_input_csvs_common.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ def get_sync_project_pool_and_make_profile_csvs(
3737
varies_by_hydro,
3838
include_hydro_iteration_column,
3939
n_parallel_projects,
40+
print_default_values,
41+
default_value,
4042
):
4143

4244
conn = connect_to_database(db_path=db_path)
@@ -65,6 +67,8 @@ def get_sync_project_pool_and_make_profile_csvs(
6567
varies_by_weather,
6668
varies_by_hydro,
6769
include_hydro_iteration_column,
70+
print_default_values,
71+
default_value,
6872
]
6973
for prj in projects
7074
]
@@ -93,6 +97,8 @@ def create_project_profile_csv(
9397
varies_by_weather,
9498
varies_by_hydro,
9599
include_hydro_iteration_column,
100+
print_default_values,
101+
default_value,
96102
):
97103
conn = connect_to_database(db_path=db_path)
98104

@@ -133,6 +139,11 @@ def create_project_profile_csv(
133139
# Put into a dataframe and add to file
134140
df = pd.read_sql(query, con=conn)
135141

142+
# Filter out rows where the value is at the default, unless
143+
# print_default_values is True
144+
if not print_default_values:
145+
df = df[df[param_name] != default_value]
146+
136147
filename = os.path.join(
137148
output_directory,
138149
f"{project}-{profile_scenario_id}-" f"{profile_scenario_name}.csv",
@@ -183,6 +194,8 @@ def create_project_profile_csv_pool(pool_datum):
183194
varies_by_weather,
184195
varies_by_hydro,
185196
include_hydro_iteration_column,
197+
print_default_values,
198+
default_value,
186199
] = pool_datum
187200

188201
create_project_profile_csv(
@@ -199,4 +212,6 @@ def create_project_profile_csv_pool(pool_datum):
199212
varies_by_weather=varies_by_weather,
200213
varies_by_hydro=varies_by_hydro,
201214
include_hydro_iteration_column=include_hydro_iteration_column,
215+
print_default_values=print_default_values,
216+
default_value=default_value,
202217
)

data_toolkit/project/opchar/var_profiles/create_monte_carlo_var_gen_input_csvs.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ def main(args=None):
173173
param_name="cap_factor",
174174
raw_data_table="raw_data_var_profiles",
175175
study_year=parsed_args.study_year,
176+
print_default_values=True,
177+
default_value=None,
176178
)
177179

178180
conn.close()

data_toolkit/project/opchar/var_profiles/create_sync_var_gen_input_csvs.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ def main(args=None):
173173
varies_by_hydro=0,
174174
include_hydro_iteration_column=True,
175175
n_parallel_projects=parsed_args.n_parallel_projects,
176+
print_default_values=True,
177+
default_value=None,
176178
)
177179

178180

0 commit comments

Comments
 (0)