@@ -161,7 +161,8 @@ def set_var(
161161 valid_vars : List [str ],
162162 invalid_vars : List [str ],
163163 rgn : str ,
164- ) -> None :
164+ ) -> List [Variable ]:
165+ new_var_list : List [Variable ] = []
165166 if exp [exp_key ] != "" :
166167 try :
167168 dataset_wrapper : DatasetWrapper = DatasetWrapper (exp [exp_key ])
@@ -177,7 +178,8 @@ def set_var(
177178 data_array : xarray .core .dataarray .DataArray
178179 units : str
179180 data_array , units = dataset_wrapper .globalAnnual (var )
180- valid_vars .append (str (var_str ))
181+ valid_vars .append (str (var_str )) # Append the name
182+ new_var_list .append (var ) # Append the variable itself
181183 except Exception as e :
182184 logger .error (e )
183185 logger .error (f"globalAnnual failed for { var_str } " )
@@ -210,6 +212,7 @@ def set_var(
210212 ].values
211213 exp ["annual" ]["year" ] = [x .year for x in years ]
212214 del dataset_wrapper
215+ return new_var_list
213216
214217
215218def process_data (
@@ -222,27 +225,29 @@ def process_data(
222225 for exp in exps :
223226 exp ["annual" ] = {}
224227
225- set_var (
228+ requested_variables . vars_original = set_var (
226229 exp ,
227230 "atmos" ,
228231 requested_variables .vars_original ,
229232 valid_vars ,
230233 invalid_vars ,
231234 rgn ,
232235 )
233- set_var (
236+ requested_variables . vars_atm = set_var (
234237 exp , "atmos" , requested_variables .vars_atm , valid_vars , invalid_vars , rgn
235238 )
236- set_var (exp , "ice" , requested_variables .vars_ice , valid_vars , invalid_vars , rgn )
237- set_var (
239+ requested_variables .vars_ice = set_var (
240+ exp , "ice" , requested_variables .vars_ice , valid_vars , invalid_vars , rgn
241+ )
242+ requested_variables .vars_land = set_var (
238243 exp ,
239244 "land" ,
240245 requested_variables .vars_land ,
241246 valid_vars ,
242247 invalid_vars ,
243248 rgn ,
244249 )
245- set_var (
250+ requested_variables . vars_ocn = set_var (
246251 exp , "ocean" , requested_variables .vars_ocn , valid_vars , invalid_vars , rgn
247252 )
248253
@@ -283,12 +288,15 @@ def run(parameters: Parameters, requested_variables: RequestedVariables, rgn: st
283288 invalid_plots : List [str ] = []
284289
285290 # Use list of tuples rather than a dict, to keep order
291+ # Note: we use `parameters.plots_original` rather than `requested_variables.vars_original`
292+ # because the "original" plots are expecting plot names that are not variable names.
293+ # The model components however are expecting plot names to be variable names.
286294 mapping : List [Tuple [str , List [str ]]] = [
287295 ("original" , parameters .plots_original ),
288- ("atm" , parameters . plots_atm ),
289- ("ice" , parameters . plots_ice ),
290- ("lnd" , parameters . plots_lnd ),
291- ("ocn" , parameters . plots_ocn ),
296+ ("atm" , list ( map ( lambda v : v . variable_name , requested_variables . vars_atm )) ),
297+ ("ice" , list ( map ( lambda v : v . variable_name , requested_variables . vars_ice )) ),
298+ ("lnd" , list ( map ( lambda v : v . variable_name , requested_variables . vars_land )) ),
299+ ("ocn" , list ( map ( lambda v : v . variable_name , requested_variables . vars_ocn )) ),
292300 ]
293301 for component , plot_list in mapping :
294302 make_plot_pdfs (
@@ -332,11 +340,27 @@ def coupled_global(parameters: Parameters) -> None:
332340 # In this case, we don't want the summary PDF.
333341 # Rather, we want to construct a viewer similar to E3SM Diags.
334342 title_and_url_list : List [Tuple [str , str ]] = []
335- for component in ["original" , "atm" , "ice" , "lnd" , "ocn" ]:
343+ for component in [
344+ "atm" ,
345+ "ice" ,
346+ "lnd" ,
347+ "ocn" ,
348+ ]: # Don't create viewer for original component
336349 vars = get_vars (requested_variables , component )
337350 if vars :
338351 url = create_viewer (parameters , vars , component )
339352 logger .info (f"Viewer URL for { component } : { url } " )
340353 title_and_url_list .append ((component , url ))
354+ # Special case for original plots: always use user-provided dimensions.
355+ vars = get_vars (requested_variables , "original" )
356+ if vars :
357+ logger .info ("Using user provided dimensions for original plots PDF" )
358+ title_and_url_list .append (
359+ (
360+ "original" ,
361+ f"{ parameters .figstr } _glb_original.pdf" ,
362+ )
363+ )
364+
341365 index_url : str = create_viewer_index (parameters .results_dir , title_and_url_list )
342366 logger .info (f"Viewer index URL: { index_url } " )
0 commit comments