o mg@sdZddlZddlZddlZddlZddlZddlZddlmZm Z ej dZ ej dej e ddlZddlZddZddZd d ZdS) a  Program Name: prune_stat_files.py Contact(s): Marcel Caron, Mallory Row Abstract: This script is run by all scripts in EMC_verif-global/scripts/. This prunes the MET .stat files for the specific plotting job to help decrease wall time. N)datetime timedeltaUSH_DIRccs,|}||kr|V||7}||ksdSdS)N)startendtdcurrrrA/lfs/h1/ops/prod/packages/evs.v1.0.19/ush/cam/prune_stat_files.py dateranges r c CsBt|ttj|tj|fidt|dt| dt| dt|dt| dt| dt|dt| d t| d t|d t| d t| d t|dt| dt| dt|dt| dt| dt| dt|  dt|  d| d| f} | S)NZRUN_CASEZRUN_CASE_UPPERZRUN_CASE_LOWERZRUN_TYPEZRUN_TYPE_UPPERZRUN_TYPE_LOWER LINE_TYPEZLINE_TYPE_UPPERZLINE_TYPE_LOWERVX_MASKZ VX_MASK_UPPERZ VX_MASK_LOWERZVAR_NAMEZVAR_NAME_UPPERZVAR_NAME_LOWERMODELZ MODEL_UPPERZ MODEL_LOWER EVAL_PERIODZEVAL_PERIOD_UPPERZEVAL_PERIOD_LOWERVALIDvalid) np concatenateglobospathjoinstring_template_substitutionZ do_string_substrupperlower) met_stat_filesdata_diroutput_base_templateRUN_caseRUN_type line_typevx_maskvar_namemodel eval_periodrZmet_stat_files_outrrr expand_met_stat_filessp                  r&cCstdtjt| D];}g}t|d|dtddD]}t||||||| | ||| }qtj||d| d| d||}tj |sNt |t |dkrUq t |d }| }Wdn1sjwYd}t| rtd|d|d | d d | d |d tjddd | d| dd| d|dtjddd| d}n8td|d|d | d d | d |d tjdd| dd| d|dtjdd}|D] }tjd|d||dtjtjdd}|d}||}qtj||d}zt |d}|||Wdn 1s9wYWq tyHwtdtjtdS)NzBEGIN: r)days_zPruning z files for model z , vx_mask z , variable /z , line_type z , interp INTERPz, interp points z | grep " z " | grep "z\|z " | grep " z " | grep " "z "z grep -R "z" TzUTF-8)shellstdoutstderrencodingz.statwzEND: )printrrbasename__file__r rr&rexistsmakedirslenopenreadlineanyenviron subprocessPopenPIPESTDOUT communicatewriteOSError)rZ prune_dirZtmp_dirrZ valid_ranger%rr r!r"fcst_var_namesr# model_listZ interp_pntsr$rrZpruned_data_dirZmsfZmet_header_colsZall_grep_outputZ filter_cmdZ met_stat_filepsZ grep_outputZpruned_met_stat_fileZpmsfrrr prune_data<s          rG)__doc__rr=rresysnumpyrrrrr< SETTINGS_DIRrinsertabspathr plot_utilr r&rGrrrr s