77from pathlib import Path
88import sys
99sys .path .append ('../utilities' )
10- from utils import load_path_from_df , load_output_path_from_row
10+ from utils import load_output_path_from_row , require_single_row
1111
1212logging .basicConfig (level = logging .INFO , format = '%(asctime)s - %(levelname)s - %(message)s' )
1313
@@ -19,27 +19,26 @@ def main():
1919 derived_variables_list = derived_variables .tolist ()
2020 for var in derived_variables_list :
2121 logging .info (f"Calculating { var } " )
22- input_row = df_parameters [(df_parameters ['filename_variable' ] == var ) & (df_parameters ['product_type' ] == 'raw' )]
23- var_row = df_parameters [(df_parameters ['filename_variable' ] == var ) & (df_parameters ['product_type' ] == 'derived' )]
22+ mask_input = (df_parameters ['filename_variable' ] == var ) & (df_parameters ['product_type' ] == 'raw' )
23+ input_row = require_single_row (df_parameters , mask_input , f"{ var } /raw" )
24+
25+ mask_var = (df_parameters ['filename_variable' ] == var ) & (df_parameters ['product_type' ] == 'derived' )
26+ var_row = require_single_row (df_parameters , mask_var , f"{ var } /derived" )
2427
2528 # Create a list of years from start to end
2629 year_list = list (range (var_row ["cds_years_start" ].squeeze () , var_row ["cds_years_end" ].squeeze () + 1 ))
2730 for year in year_list :
2831
29- if var == "sfcwind" :
30-
31-
32-
33- input_row_u10 = df_parameters [(df_parameters ['filename_variable' ] == "u10" ) & (df_parameters ['product_type' ] == 'raw' )]
34- input_row_v10 = df_parameters [(df_parameters ['filename_variable' ] == "v10" ) & (df_parameters ['product_type' ] == 'raw' )]
32+ if var == "sfcwind" :
33+ input_row_u10 = require_single_row (df_parameters , (df_parameters ['filename_variable' ] == "u10" ) & (df_parameters ['product_type' ] == 'raw' ), "u10/raw" )
34+ input_row_v10 = require_single_row (df_parameters , (df_parameters ['filename_variable' ] == "v10" ) & (df_parameters ['product_type' ] == 'raw' ), "v10/raw" )
3535 # Use utility function to load input paths
36- u10_download_path = load_output_path_from_row (input_row_u10 . iloc [ 0 ] , dataset )
36+ u10_download_path = load_output_path_from_row (input_row_u10 , dataset )
3737 u_10_file = glob .glob (f"{ u10_download_path } /*{ year } *.nc" )[0 ]
38- v10_download_path = load_output_path_from_row (input_row_v10 . iloc [ 0 ] , dataset )
38+ v10_download_path = load_output_path_from_row (input_row_v10 , dataset )
3939 v_10_file = glob .glob (f"{ v10_download_path } /*{ year } *.nc" )[0 ]
40-
4140 # Use utility function to build output path
42- dest_dir = load_output_path_from_row (var_row . iloc [ 0 ] , dataset )
41+ dest_dir = load_output_path_from_row (var_row , dataset )
4342 os .makedirs (dest_dir , exist_ok = True )
4443 sfcwind_file = os .path .basename (u_10_file ).replace ("u10" , "sfcwind" )
4544 output_file = Path (f"{ dest_dir } /{ sfcwind_file } " )
@@ -54,7 +53,6 @@ def main():
5453 sfcwind = operations .sfcwind_from_u_v (ds_merge )
5554 sfcwind_daily = operations .resample_to_daily (sfcwind ,"valid_time" )
5655
57-
5856 logging .info (f"Saving calculated sfcwind to { dest_dir } " )
5957 sfcwind_daily .to_netcdf (output_file )
6058
0 commit comments