o ng-@sxddlZddlmZmZddlZGdddZGdddZGdddZGd d d Z Gd d d Z Gd ddZ dS)N)datetime timedeltac@eZdZddZdS)TogglecCs|iddddddddddd dd d d d dddddddddddddddddddddd|_dS)zx Dictionary with values that can be adjusted by the user to change a particular plot setting. x_min_limitg x_max_limitg@ x_lim_lockF y_min_limit y_max_limit y_lim_lockci_levgffffff?bs_nrepi bs_methodZ FORECASTS bs_min_sampdisplay_averagesZ include_all_requested_thresholdsTsample_equalizationZkeep_shared_events_onlyclear_prune_directoryplot_logo_leftplot_logo_rightg?)zoom_logo_leftzoom_logo_rightdelete_intermed_dataN) plot_settingsselfr9/lfs/h1/ops/prod/packages/evs.v1.0.19/ush/cam/settings.py__init__sN     zToggle.__init__N__name__ __module__ __qualname__rrrrrr rc@r) TemplatescCs d|_dS)a9 Custom template used to find .stat files in OUTPUT_BASE_DIR. output_base_template must be a string. Use curly braces {} to enclose variable names that will be substituted with the appropriate value according to the plotting request. Current possible variable names: Example substituted values: ================================ =========================== RUN_CASE grid2obs RUN_TYPE conus_sfc LINE_TYPE sl1l2 VX_MASK conus FCST_VAR_NAME VIS VAR_NAME VISsfc MODEL HRRR EVAL_PERIOD PAST30DAYS valid?fmt=%Y%m or VALID?fmt=%Y%m 202206 Additionally, variable names may have the _LOWER or _UPPER suffix to substitute a lower- or upper-case conversion of the desired string. Finally, use asterisk * as a wildcard to match with and use data from several .stat files, or for portions of the .stat file name that vary but are inconsequential. Example: "{RUN_CASE_LOWER}/{MODEL}/{valid?fmt=%Y%m}/{MODEL}_{valid?fmt=%Y%m%d}*" zP{MODEL}.{valid?fmt=%Y%m%d}/evs.stats.{MODEL}.atmos.grid2obs.v{valid?fmt=%Y%m%d}*N)Zoutput_base_templaterrrrr-s zTemplates.__init__Nrrrrrr$,r#r$c@r)PathscCs(tjdd|_tjdd|_dS)z Custom paths to left and right logos. Referenced if plot_logo_left and plot_logo_right, in the Toggle class, are set to True ZFIXevsz/logos/noaa.pngz/logos/nws.pngN)osenvironlogo_left_pathlogo_right_pathrrrrrOszPaths.__init__Nrrrrrr%Nr#r%c@r)Presetsc Cs dddddd|_ ttjddtd d dttjddtd d dttjddtd d dttjddtd d dd ttjddtd d dttjddtd d dttjddtd d dttjddtd d dd ttjddtdd dttjddtd d dttjddtdd dttjddtd d dd ttjddtdd dttjddtd d dttjddtdd dttjddtd d dd ttjddtdd dttjddtd d dttjddtdd dttjddtd d dd dttjddtd d ddttjddtd d dd ddddd ddddd ddddd d |_dS)Nz6P1000,P925,P850,P700,P500,P400,P300,P200,P150,P100,P50zP1000,P925,P850,P700,P500zP100,P75,P50,P30,P20,P10z2P1000,P900,P850,P700,P600,P500,P400,P300,P200,P100z"P500,P400,P300,P250,P200,P150,P100)allZltropZstratZtropZutropZVDATEz%Y%m%dZ)days) valid_beg valid_endinit_beginit_endrZ20200101Z20201231Z20210101Z20211231Z20220101Z20221231) Z LAST90DAYSZ LAST31DAYSZ LAST30DAYSZ LAST7DAYSZ LAST3DAYSZPDYM1Z2020Z2021Z2022) level_presetsrstrptimer&r'tdstrftime date_presetsrrrrrZs  zPresets.__init__Nrrrrrr*Yr#r*c@seZdZddZddZdS) ModelSpecsc Csidddddddddd d dd d d ddddddddddd d ddddddd d ddddddddddd d ddddddd d ddddddddddd d diddddddd dd!d!d"dd#d#d$dd%d%d&dd'd'd(dd)dddd*dd dd+d!d"dd,d#d$dd-d%d&dd.d'd(dd/dddd0dd dd1d!d"dd2d#d$dd3d%d&did4d'd(dd5dddd6dd dd7d!d"dd8d#d$dd9d%d&dd:d'd(dd;ddddd#d$dd?d%d&dd@d'd(ddAdAdBddCddddDddddEd d didFd d ddGddddHddddIddddJd d ddKd d ddLddddMdNdOddPdQdRddSdQdRddTdQdRddUdQdRddVdQdRddWdXdWddYdXdWddZdXdWdd[dXdWdid\dXdWdd]d^d_dd`d^d_ddad^d_ddbd^d_ddcd^d_dddddddddeddfddddgdhdhddidhdhddjdkdkddldmdmddndmdmddododpddqdodrddsdodtddoduddodvddwdxddydyddzdzdd{d{dd||_ id}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddXdddddddNddddddd^dddddddQddddddddddddddddddddiddddddddddddddd dddddddd~ddddddddddddd#ddddddd!ddddddd'd~ddddddhdddddddkddddddddddddddodddddddwdddddddd~ddddddd~ddddddd~ddddddAd~dddddddddddddddddddddddddddddd|_dS)a The model_alias dictionary defines the appropriate key to be used when finding settings and the long name for certain requested models that may have several possible names in MET .stat files and file names. e.g., AKARW and CONUSARW, although they are different, may use the same line/marker settings and the same long name on plots, and so both can be defined here as aliases of the same model settings, if desired. ZARWZHRW_ARWz HiResW ARW) settings_key plot_nameZARW2ZHRW_ARW2z HiResW ARW2ZFV3ZHRW_FV3z HiResW FV3ZNMMBZHRW_NMMBz HiResW NMMBZAKARWZAKARW2ZAKFV3ZAKNESTZNAM_NESTzNAM NestZAKNMMBZCONUSARWZ CONUSARW2ZCONUSFV3Z CONUSNESTZ CONUSNMMBZ hireswarwZ hireswarwmem2Z hireswfv3Z HREF_MEANz HREF MeanZ HREF_AVRGzHREF Average of MEAN and PMMNZ HREF_LPMMz#HREF Local Probability-Matched MeanZ HREF_PMMNzHREF Probability-Matched MeanZ HREF_PROBzHREF ProbabilityZ HREFX_MEANz HREF-X MeanZCONUSHREF_MEANZCONUSHREF_AVRGZCONUSHREF_LPMMZCONUSHREF_PMMNZCONUSHREF_PROBZCONUSHREFX_MEANZ AKHREF_MEANZ AKHREF_AVRGZ AKHREF_LPMMZ AKHREF_PMMNZ AKHREF_PROBZ AKHREFX_MEANZ PRHREF_MEANZ PRHREF_AVRGZ PRHREF_LPMMZ PRHREF_PMMNZ PRHREF_PROBZ PRHREFX_MEANZ HIHREF_MEANZ HIHREF_AVRGZ HIHREF_LPMMZ HIHREF_PMMNZ HIHREF_PROBZ HIHREFX_MEANZ NARRE_MEANz NARRE MeanZHIARWZHIARW2ZHIFV3ZHINMMBZ HAWAIINESTZPRARWZPRARW2ZPRFV3ZPRNMMBZ PRICONESTZFV3LAMDAZLAMDAz FV3LAM-DAZ FV3LAMDAXZLAMDAXz FV3LAM-DAXZ FV3LAMDAXAKZ FV3LAMDAXHIZ FV3LAMDAXNAZ FV3LAMDAXPRZFV3LAMZLAMZFV3LAMAKZFV3LAMHIZFV3LAMNAZFV3LAMPRZFV3LAMXZLAMXzFV3LAM-XZ FV3LAMXAKZ FV3LAMXHIZ FV3LAMXNAZ FV3LAMXPRZNAM_FIREWXNESTzNAM Fire Wx NestZnamnestZHRRRAKZHRRRZhrrrZNAMNAZNAMZRAPAKZRAPZRAPNAZRRFS_AzRRFS-AZ RRFS_A_AKz RRFS-A AlaskaZ RRFS_A_PRzRRFS-A Puerto Ricoz RRFS-A Hawaiiz RRFS-A CONUSZ RRFS_A_NAzRRFS-A N. AmericaZMRMSZCCPAZWAFS)Z RRFS_A_HIZ RRFS_A_CONUSZRRFS_A_NACONUSmrmsccpaZwafsZmodel1z#000000o solidg?)colormarker markersize linestyle linewidthZmodel2z#fb2020^ Zmodel3z#1e3cffXZmodel4z#00dc00PZmodel5z#e69f00Zmodel6z#56b4e9Zmodel7z#696969sZmodel8z#8400c8DZmodel9z#d269c1Zmodel10z#f0e492obsz#aaaaaaNonerdashedZHWRFZHMONZGFSg@Z GFS_DASHEDZGEFS)ZECZCMCZCTCXZOFCLN) model_aliasmodel_settingsrrrrrs(   !%)-159=AEIMQUY]aeimquy} "&*.26:>BFJNRVZ^bfjnrvz~ #'+/37;?CGKOSX q   "%(+.147:=@CFILORUX[^adgzModelSpecs.__init__cCs|j|}|S)N)rS)rnameZ color_dictrrrget_color_dicts zModelSpecs.get_color_dictN)r r!r"rrUrrrrr<s  }r<c@s$eZdZddZ GdddZdS) ReferencecCs4-ddddddi|_ d|jjdd |jjdd |jjdd |jjdd |jjdd |jjdd|jjdd |jj dd|_ iddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d-id/d0d1d2d3d4d5d6d7d8d9d:d;d:dd?d@dAdAdBdCdDdCdEdFdGdHdIdJdKdLidMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d\d^d\d_d\d`d\dadbddcdddedfdgdhdiidjdkdldmdndodpdqdrdsdtdqdudvdwdxdydzd{d|d}d~ddddddddddddddd|_ iddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiddddddddddddddddddddddddddddddddddddddddddddddd dd d d dd d d dddddddddddddiddddddddddddddddddd dd!d"d!dd#d$d#dd%d%d&dd'd'd(dd)d*d)dd+d,d-dd.d.d/dd0d1d0dd2d3d0dd4d4d5dd6d7d8dd9d9d:dd;ddd?d@ddAdBddCdDddE|_ idFgdGdHgdIdJgdKdLgdMdNgdOdPgdQdRgdSdTgdUdVgdWdXgdYdZgd[d\gd]d^gd_d`gdadbgdcddgdedfgdggdIgdKgdhgdigdjgdkdl|_ idmdndogdpdggdqdrdrdggdqdrdrdsdt dggdqdrdrdggdqdrdrdsdt dggdqdrdrdggdqdrdrdsdt dggdqdrdrdggdqdrdrdsdt dggdqdrdrdggdqdrdrdsdt dggdudrdrdggdudrdrdsdt d$ggdudrdrd$ggdudrdrdsdt d&ggdudrdrd&ggdudrdrdsdt d7gdvgdrdrd7gdvgdrdrdsdt dw dxdndogdpd(d(ggdudrdrd(ggdudrdrdsdt idxdydzd{dogdpdggd|drdrdggd|drdrdsdt dggd|drdrdggd|drdrdsdt d$ggd|drdrd$ggd|drdrdsdt d&ggd|drdrd&ggd|drdrdsdt d=ggd}drdrd=ggd}drdrdsdt d~dxd{dogdpd(d(ggd|drdrd(ggd|drdrdsdt idxddd\ddogdiddgdgdrdrdgdgdrdrdsdt ddgdvgdrdrdgdvgdrdrdsdt ddgdgdrddgdgdrddsdt ddgdgdrdrdgdgdrdrdsdt ddgdgdrdrdgdgdrdrdsdt dBdBgdgdrdrdBgdgdrdrdsdt dd5gdvgdrdrd5gdvgdrdrdsdt dd5gdgdrdd5gdgdrddsdt d7d7gdvgdrdrd7gdvgdrdrdsdt dd$gdgdrdrd$gdgdrdrdsdt dd&gdgdrdrd&gdgdrdrdsdt ddEgdgdrdrdEgdgdrdrdsdt ddGgdgdrdrdGgdgdrdrdsdt dIdIgdvgdrdrdIgdvgdrdrddt d/d/gdvgdrdrd/gdvgdrdrddt dadagdgdrdrdagdgdrdrdsdt ddddgdgdrdrddgdgdrdrdsdt dgdgdrddgdgdrddsdt d?gdgdrdrd?gdgdrdrdsdt ddxiddHddgddwgdgddrdgdgddrddt d{gddgddrdgddgddrddt dygddgddrdgddgddrddt ddxidddgddwgdgddrddgdgddrddt d{gddgddrdgddgddrddt dygddgddrdgddgddrdd ddxddgddwgdgddrddgdgddrddt d{gddgddrdgddgddrddt dygddgddrdgddgddrdd ddxddgddwgdgddrddgdgddrddt d{gddgddrdgddgddrddt dygddgddrdgddgddrdd ddxdddddgd}d}gddgddrdgdgddrddt idxdddgd}d}gddgddrdgdgddrddt idxddodgd}d}gddgddrdgdgddrddt idxddddgddggddrdrdggddrdrdsdt dggddrdrdggddrdrdsdt dggddrdrdggddrdrdsdt dggddrdrddggddrdrdsdt ddxddgdd(d(ggddrdrd(ggddrdrdsdt idxddddgd¢dggdâdrdrdggdâdrdrdsdt dggdâdrdrdggdâdrdrdsdt d$ggdâdrdrd$ggdâdrdrdsdt d&ggdâdrdrd&ggdâdrdrdsdt dggdâdrdrdggdâdrdrdsdt d/gdgdrdrd/gdgdrdrddt d/gdgdrdrd3gdgdrdrddt ddBgddDgdrdrdBgdgdrdrdsdt dǜdxddgd¢d(d(ggdâdrdrd(ggdâdrdrdsdt idxddgd¢d/gdgdȐdrd/gdgdȐdrddt d/gdgdȐdrd3gdgdȐdrddt ddBgddDgdɐdrdBgdgdɐdrdsdt dʜdxd˜d̐d͐dgd΢dgdgdrdrdgdgdrdrdsdt d gdgdrdrd gdgdϐdrdsdt dМdxd͐dgd΢dd(gdgdrdrd(gdgdrdrdsdt idxddҐd͐dgd¢dgdgdrdrdgdgdrdrdsdt d gdgdrdrd gdgdӐdrdsdt dgdgdrdrdgdgdԐdrdsdt d;d9gdvgdrdrd7gdvgdrdrdsdt d$gdgdrdrd$gdgdrdrdsdt d&gdgdrdrd&gdgdrdrdsdt d*gdgdrdrd*gdgdrdrdsdt d,gdvgdrdrd,gdvgdrdrdsdt d՜dxd͐dgd¢dd(gdgdrdrd(gdgdrdrdsdt idxd֐dgd¢d gdgdאdrd gdgdאdrdsdt dgdgdؐdrdgdgdؐdrdsdt djgdvgdِdrdjgdvgdِdrdڐdt dgddgdܐdݐddgdgdܐdrdڐdt dfgddgdߐddfgdgdߐdrdsdt ddxddgd¢dfdfgddgdrdrdfgdgdrdrdsdt idxdddNd֐dgdddgdvgddrddgdvgddrddt idxidddgddgdgdrdrdgdgdrdrdsdt dgdgdrdrdgdgdrdrdsdt d gdgdrdrd gdgdrdrdsdt dfgdgdrddfgdgdrdrdsdt d7gdvgdrdrd7gdvgdrdrdsdt djgdgdrdrdjgdgdrdrdڐdt dgdgdrdݐddgdgdrdrdڐdt d/gdgdrdrd/gdgdrdrddt d,gdvgdrdrd,gdvgdrdrdsdt dBgdgdrdrdBgdgdrdrdsdt dgdgdrdrdDgdgdrdrdsdt d$gdgdrdrd$gdgdrdrdsdt d&gdgdrdrd&gdgdrdrdsdt d*gdgdrdrd*gdgdrdrdsdt ddxddgddd(gdgdrdrd(gdgdrdrdsdt idxddgddgdgddrdgdgddrdsdt d gdgdӐdrd gdgdӐdrdsdt djgdgddrdjgdgddrdڐdt dgdgddݐddgdgddrdڐdt d/gdgddrd/gdgddrddt ddxd˜ddHddgddAgdgddrdgdgddrddt dgdgddrdgdgddrddt ddxidd\ddodgdgdgdrdrdgdgdrdrdsdt dgdvgdrdrdgdvgdrdrdsdt d5gdvgdrdrd5gdvgdrdrdsdt ddxidddogddlgdgdrdrdgdgdrdrddt drgdgdrdrdrgdgdrdrddt dngdgdrdrdgdgdrdrddt dpgdgdrdrdgdgdrdrddt ddxdndogddlgdgdrdrdgdgdrdrddt drgdgdrdrdrgdgdrdrddt dngdgdrdrdgdgdrdrddt dpgdgdrdrdgdgdrdrddt ddxd dogddlgdgd drdgdgd drddt dpgdgd drdgdgd drddt d dxd dddogdd[d]gddgdrdrgdddgdrdrddt d[d^gddgdrdrgdddgdrdrddt d[d_gddgdrdrgdddgdrdrddt d[d`gdgdrdrgddgdrdrddt ddxddgdd[d]gddgddrgdddgddrddt d[d^gddgddrgdddgddrddt d[d_gddgddrgdddgddrddt d[d`gdgddrgddgddrddt ddxddogdd[d]gddgddrgdddgddrddt d[d^gddgddrgdddgddrddt d[d_gddgd drgdddgd drddt d[d`gdgd!drgddgd!drddt ddxd"d#ddogd$d[d]gddgdrdrgd%gd&drdrddt d[d^gddgdrdrgd'gd(drdrddt d[d_gddgdrdrgd)gd*drdrddt d[d`gdgdrdrgd+ddvgdrdrddt ddxddgd,d[d]gddgddrgd%gd&ddrddt d[d^gddgddrgd'gd(ddrddt d[d_gddgd drgd)gd*d drddt d[d`gdgd!drgd+ddvgd!drddt ddxddod.gd[d]gddgddrgd%gd&ddrddt d[d^gddgddrgd'gd(ddrddt d[d_gddgd drgd)gd*d drddt d[d`gdgd!drgd+ddvgd!drddt ddxd"ddgddIdKggd-d.drdUdWgddgd.drddt dIdMgdvdgd.drdUdYgdgd.drddt gd/gd-d.drdUdWgddgd.drddt gd0dvdgd.drdUdYgdgd.drddt d1dxddogddIdKggd-d.drdUdWgddgd.drddt dIdMgdvdgd.drdUdYgdgd.drddt gd/gd-d.drdUdWgddgd.drddt gd0dvdgd.drdUdYgdgd.drddt d1dxd2d\d3dogd4dgdvgdrdrdgdvgdrdrdsdt dtgdvgdrdrd5gdvgdrdrdsdt d6dxid\d3dogd4dgdvgdrdrdgdvgdrdrdsdt dtgdvgdrdrd5gdvgdrdrdsdt d6dxidHd7dogd8duduggd9d:drduggd;d:drd<dt idxid=|_d>S(?aY Plotting jobs for the variables in this list will attempt to replace threshold labels with category labels according to the sub-dictionary, if the key of the sub-dictionary matches the value of 'FCST_VAR_NAME' in the input stat file(s). Currently only functional for mctc performance diagrams. ZPTYPEZrainsnowz freezing rainz ice pellets)1234in) convert_toformulaFZktZkftmi%)zkg/m^2KCzm/sgpmmm_snowdecimalTMPZ TemperatureZ TMP_Z0_meanHGTzGeopotential Height HGT_WV1_0-3zGeopotential Height: Waves 0-3 HGT_WV1_4-9zGeopotential Height: Waves 4-9 HGT_WV1_10-20z Geopotential Height: Waves 10-20 HGT_WV1_0-20zGeopotential Height: Waves 0-20RHzRelative HumiditySPFHzSpecific HumidityZDPTzDewpoint TemperatureZTDOzObserved Dew PointUGRDzZonal Wind SpeedVGRDzMeridional Wind SpeedZ UGRD_VGRDz Vector WindZWINDz Wind SpeedZGUSTz Wind GustGUSTsfcZCAPEz%Convective Available Potential EnergySBCAPEz3Surface-Based Convective Available Potential EnergyMLCAPEz1Mixed-Layer Convective Available Potential EnergyZPRESZPressurePRMSLzPressure Reduced to MSLMSLMAzMean Sea Level PressureMSLETMSLPO3MRzOzone Mixing RatioZTOZNEz Total OzoneOZCON1HPBLzPlanetary Boundary Layer HeightPBLTSOILzSoil TemperatureSOILWz Volumetric Soil Moisture ContentWEASDzAccum. Snow Depth Water Equiv.WEASD_06z%6-hour Accum. Snow Depth Water Equiv.WEASD_24z&24-hour Accum. Snow Depth Water Equiv.SNODzAccum. Snow DepthSNOD_06z6-hour Accum. Snow DepthSNOD_24z24-hour Accum. Snow DepthASNOWzTotal SnowfallASNOW_06z6-hour Total SnowfallASNOW_24z24-hour Total SnowfallAPCPzAccumulated PrecipitationAPCP_01APCP_03APCP_06APCP_24ZPWATzPrecipitable WaterzPrecipitation TypeZCWATz Cloud WaterTCDCzCloud Area Fraction HGTCLDCEILzCloud Ceiling HeightVISZ VisibilityZsstzSea Surface TemperatureZsshzSea Surface HeightZ ice_coveragezSea Ice ConcentrationZssszSea Surface SalinityZ ICEC_Z0_meanZICESEVzIcing SeverityREFCzComposite ReflectivityREFDzAbove Ground Level ReflectivityRETOPzEcho Top HeightZProb_MXUPHL25_A24_geHWTz2-5km UH - Surrogate SeverezWIND_ENS_FREQ_ge20.58zWind speed >= 40ktZAPCP_24_ENS_FREQ_gt1zAPCP_24hr > 1 mmZAPCP_24_ENS_FREQ_gt2zAPCP_24hr > 2 mmZAPCP_24_ENS_FREQ_gt5zAPCP_24hr > 5 mmZAPCP_24_ENS_FREQ_gt10zAPCP_24hr > 10 mmZAPCP_24_ENS_FREQ_gt20zAPCP_24hr > 20 mmzAPCP_24hr > 25 mmzAPCP_24hr > 50 mm)ZAPCP_24_ENS_FREQ_gt25ZAPCP_24_ENS_FREQ_gt50NHXzNorthern Hemisphere 20N-80N) long_name save_nameSHXzSouthern Hemisphere 20S-80STROzTropics 20S-20NPNAzPacific North AmericaN60z60N-90NS60z60S-90S North_PacificzNorthern Pacific OceanNPO South_PacificzSouthern Pacific OceanSPOEquatorial_PacificzEquatorial Pacific OceanNorth_AtlanticzNorthern Atlantic OceanNAOSouth_AtlanticzSouthern Atlantic OceanSAOEquatorial_AtlanticzEquatorial Atlantic OceanIndianz Indian OceanSouthernzSouthern Ocean MediterraneanzMediterranean SeaNHzNorthern Hemisphere 20N-90NSHzSouthern Hemisphere 20S-90SAR2ASIAZAsiaAUNZzAustralia and New ZealandNAMRz North AmericaNHMzNorthern HemisphereNPCFzNorth Pacific OceanSHMzSouthern HemisphereTRPZG002GlobalZG003G130zCONUS - NCEP Grid 130ZG211zCONUS - NCEP Grid 211G221zCONUS - NCEP Grid 221G236zCONUS - NCEP Grid 236ZG223zCONUS - NCEP Grid 223CONUSZ buk_conusPOLARzPolar 60-90 N/SARCTICArcticz Arctic Ocean AntarcticzAntarctic OceanEASTz Eastern US CONUS_EastZ buk_conus_eWESTz Western US CONUS_WestZ buk_conus_w CONUS_Centralz Central USZ buk_conus_c CONUS_Southz Southern USZ buk_conus_sNWCzNorthwest Coast PacificNWzPacific NorthwestZbuk_npwSWCzSouthwest Coast PacificSWzPacific SouthwestZbuk_pswNMTzNorthern Mountain RegionNRockieszNorthern Rocky MountainsZbuk_nrkGRBz Great Basin GreatBasinZbuk_grbSMTzSouthern Mountain RegionSRockieszSouthern Rocky MountainsZbuk_srkSWDzSouthwest Desert MezquitalZbuk_mezNPLzNorthern PlainsNPlainsZbuk_nplCPlainszCentral PlainsZbuk_cplSPLzSouthern PlainsSPlainsZbuk_splPrairieZbuk_pra GreatLakesz Great LakesZbuk_grlkMDWZMidwestLMVzLower Mississippi ValleyAPLZ Appalachians AppalachiaZbuk_apl NorthAtlanticZ NortheastZbuk_ne MidAtlanticz Mid-AtlanticZbuk_matlNECzNortheast CoastSECzSoutheast Coast SoutheastZbuk_se SouthwestZbuk_swGACzGulf of America Coast DeepSouthz Deep SouthZbuk_dsAlaskaZalaskaNAKzNorthern AlaskaSAKzSouthern AlaskaHawaiiZhawaii PuertoRicoz Puerto RicoZpricoGuamZguamzFire Weather NestZfirewxzGlobal - Sea IceSEA_ICEzGlobal - Sea Ice Free SEA_ICE_FREEzPolar - Sea Ice SEA_ICE_POLARzPolar - Sea Ice FreeSEA_ICE_FREE_POLAR)FireWxrrrrZFHO)TOTALF_RATEZH_RATEO_RATECTC)rZFY_OYZFY_ONZFN_OYZFN_ONZCTS)]rBASER BASER_NCL BASER_NCUZ BASER_BCLZ BASER_BCUZFMEANZ FMEAN_NCLZ FMEAN_NCUZ FMEAN_BCLZ FMEAN_BCUACCACC_NCLACC_NCUACC_BCLACC_BCUFBIASZ FBIAS_BCLZ FBIAS_BCUZPODYZPODY_NCLZPODY_NCUZPODY_BCLZPODY_BCUZPODNZPODN_NCLZPODN_NCUZPODN_BCLZPODN_BCUZPOFDZPOFD_NCLZPOFD_NCUZPOFD_BCLZPOFD_BCUZFARZFAR_NCLZFAR_NCUZFAR_BCLZFAR_BCUZCSIZCSI_NCLZCSI_NCUZCSI_BCLZCSI_BCUZGSSZGSS_BCLZGSS_BCUHKZHK_NCLZHK_NCUHK_BCLHK_BCUZHSSZHSS_BCLZHSS_BCUZODDSZODDS_NCLZODDS_NCUZODDS_BCLZODDS_BCUZLODDSZ LODDS_NCLZ LODDS_NCUZ LODDS_BCLZ LODDS_BCUZORSSZORSS_NCLZORSS_NCUZORSS_BCLZORSS_BCUZEDSZEDS_NCLZEDS_NCUZEDS_BCLZEDS_BCUZSEDSZSEDS_NCLZSEDS_NCUZSEDS_BCLZSEDS_BCUZEDIZEDI_NCLZEDI_NCUZEDI_BCLZEDI_BCUZSEDIZSEDI_NCLZSEDI_NCUZSEDI_BCLZSEDI_BCUZBAGSSZ BAGSS_BCLZ BAGSS_BCUCNT)arFBARZFBAR_NCLZFBAR_NCUZFBAR_BCLZFBAR_BCUFSTDEVZ FSTDEV_NCLZ FSTDEV_NCUZ FSTDEV_BCLZ FSTDEV_BCUOBARZOBAR_NCLZOBAR_NCUZOBAR_BCLZOBAR_BCUOSTDEVZ OSTDEV_NCLZ OSTDEV_NCUZ OSTDEV_BCLZ OSTDEV_BCUZPR_CORRZ PR_CORR_NCLZ PR_CORR_NCUZ PR_CORR_BCLZ PR_CORR_BCUZSP_CORRZKT_CORRZRANKSZ FRANK_TIESZ ORANK_TIESMEZME_NCLZME_NCUZME_BCLZME_BCUZESTDEVZ ESTDEV_NCLZ ESTDEV_NCUZ ESTDEV_BCLZ ESTDEV_BCUZMBIASZ MBIAS_BCLZ MBIAS_BCUMAEZMAE_BCLZMAE_BCUZMSEZMSE_BCLZMSE_BCUZBCMSEZ BCMSE_BCLZ BCMSE_BCURMSEZRMSE_BCLZRMSE_BCUZE10ZE10_BCLZE10_BCUZE25ZE25_BCLZE25_BCUZE50ZE50_BCLZE50_BCUZE75ZE75_BCLZE75_BCUZE90ZE90_BCLZE90_BCUZIQRZIQR_BCLZIQR_BCUZMADZMAD_BCLZMAD_BCUZ ANOM_CORRZ ANOM_CORR_NCLZ ANOM_CORR_NCUZ ANOM_CORR_BCLZ ANOM_CORR_BCUZME2ZME2_BCLZME2_BCUZMSESSZ MSESS_BCLZ MSESS_BCUZRMSFAZ RMSFA_BCLZ RMSFA_BCUZRMSOAZ RMSOA_BCLZ RMSOA_BCUZANOM_CORR_UNCNTRZANOM_CORR_UNCNTR_BCLZANOM_CORR_UNCNTR_BCUZMCTC)rN_CATZFi_OjZMCTS) rrrrrrrrrrZGERZGER_BCLZGER_BCUZPCT)rN_THRESHTHRESH_iZOY_iZON_iTHRESH_nPSTD)rrrrrZ RELIABILITY RESOLUTIONZ UNCERTAINTYZROC_AUCZBRIERZ BRIER_NCLZ BRIER_NCUZBRIERCLZ BRIERCL_NCLZ BRIERCL_NCUZBSSZBSS_SMPLrZPJC) rrrZOY_TP_iZON_TP_iZ CALIBRATION_iZ REFINEMENT_iZ LIKELIHOOD_iZBASER_irPRC)rrrZPODY_iZPOFD_irZECLV)rrZ VALUE_BASERZN_PNTZCL_iZVALUE_iSL1L2)rrrZFOBARZFFBARZOOBARrSAL1L2)rZFABARZOABARZFOABARZFFABARZOOABARrVL1L2) rZUFBARZVFBARZUOBARZVOBARZUVFOBARZUVFFBARZUVOOBARZ F_SPEED_BARZ O_SPEED_BARVAL1L2)rZUFABARZVFABARZUOABARZVOABARZUVFOABARZUVFFABARZUVOOABARZVCNT)rrrZFS_RMSZOS_RMSZMSVERMSVErrZFDIRZODIR FBAR_SPEEDZ OBAR_SPEED VDIFF_SPEEDZ VDIFF_DIR SPEED_ERRZ SPEED_ABSERRDIR_ERRZ DIR_ABSERRZMPR) rZINDEXZOBS_SIDZOBS_LATZOBS_LONZOBS_LVLZOBS_ELVZFCSTZOBSZOBS_QCZ CLIMO_MEANZ CLIMO_STDEVZ CLIMO_CDF)rZFBSZFBS_BCLZFBS_BCUZFSSZFSS_BCLZFSS_BCUZAFSSZAFSS_BCLZAFSS_BCUZUFSSZUFSS_BCLZUFSS_BCUrZ F_RATE_BCLZ F_RATE_BCUrZ O_RATE_BCLZ O_RATE_BCU)rZN_ENSZCRPSZCRPSSZIGNrrZSPREADZME_OERRZ RMSE_OERRZ SPREAD_OERRZSPREAD_PLUS_OERRZCRPSCLZCRPS_EMPZ CRPSCL_EMPZ CRPSS_EMPZ CRPS_EMP_FAIRZ SPREAD_MDrZMAE_OERRZ BIAS_RATIOZN_GE_OBSZ ME_GE_OBSZN_LT_OBSZ ME_LT_OBS) rZFGBARZOGBARZMGBARZEGBARS1ZS1_OGZ FGOG_RATIOZDXZDY)rZFYZOYrZBADDELEYZ HAUSDORFFZMED_FOZMED_OFZMED_MINZMED_MAXZMED_MEANZFOM_FOZFOM_OFZFOM_MINZFROM_MAXZFOM_MEANZZHU_FOZZHU_OFZZHU_MINZZHU_MAXZZHU_MEAN)NBRCTCZNBRCTSNBRCNTZECNTZGRADZDMAPZgrid2grid_anomaccNEAREST)rrrr)P1000P700P500P250r6 sfc_upper) fcst_var_namesfcst_var_levelsfcst_var_thresholdsfcst_var_options obs_var_namesobs_var_levelsobs_var_thresholdsobs_var_options plot_group)P850rrZ0) rirmrjrkrlrhrprqru)plot_stats_listinterp vx_mask_listvar_dict)r r Zgrid2grid_presz&me, rmse, msess, rsd, rmse_md, rmse_pv) rr&rrP200P100P50P20P10P5P1)r-ZP70r.P30r/r0r1r2)rirhrprqry)r r Z grid2grid_sfcZfbar) rrrrrrrrrrrTMP2mZ2TMPsfcZTMPtropsL0zGRIB_lvl_typ = 7;RH2mZSPFH2mPRESsfcZ PREStropsUGRD10mZZ10VGRD10mZTSOILtopzZ10-0ZSOILWtopZprecipZcape)ZHGTtropsZTOZNEclmZgrid2grid_mrmsz%fss, csi, fbias, pod, faratio, sratiozNEAREST, NBRHD_CIRCLE, BILIN)rrrrrrrrrrrrrrrrDAY1_1200_TSTMZDAY2_1730_TSTMz>=20, >=30, >=40, >=50ZMergedReflectivityQCCompositeZZ500ZradarZZ1000Z EchoTop18Z SeamlessHSR)rrrZ radar_mrmsz csi, fbias, pod, faratio, sratioz*NEAREST, NBRHD_CIRCLE, NBRHD_SQUARE, BILIN)rrrrrrZMergedReflectivityQCompositez>=20, >=30, >=40) rrr#r r!r"r#r$r%zNBRHD_CIRCLE, NBRHD_SQUAREzfss, afss, ufss, frate, oratezNBRHD_SQUARE, NBRHD_CIRCLE)rrrZ severe_lsrA1A24z6>=0.02, >=0.05, >=0.10, >=0.15, >=0.30, >=0.45, >=0.60ZLSR_PPFz*,*Zseverezbs, bsss, bss_smplz6>=0.02,>=0.05,>=0.10,>=0.15,>=0.30,>=0.45,>=0.60,>=1.0Z Fscale_maskz>=1.0)rrrZgrid2obs_upper_airz'me, rmse, bcrmse, fbar_obar, fbar, obarzNEAREST, BILIN) rrrrrrrrrr)rP925r&rrP400P300rr,P150r-r.r0r1r2ZZOB)rhrnroriZ grid2obs_raobz!bcrmse, me, fbar_obar, fbar, obar)rrrrrrrrrrrrrrrrrrrrrrrrrrrr<ZDAY1_0100_TSTM)*rZP975ZP950r?ZP900ZP875r&ZP825P800ZP775ZP750ZP725rZP675ZP650ZP625P600ZP575ZP550ZP525rZP475ZP450ZP425r@ZP375ZP350ZP325rAZP275rZP225r,ZP175rBZP125r-ZP75r.r3r/r0z L100000-0zP90-0zL90000-0)rirhrprqrorsrtr{z4>=250, >=500, >=1000, >=1500, >=2000, >=3000, >=4000z <=500, >=2000)rsrtr{)r r rZheadline_metarz bcrmse, me)rrrrrrz0>=272.039,>=277.594,>=283.15,>=288.706,>=294.261)r4DPT2mZ UGRD_VGRD10mZgrid2obs_metarz&>=277.594,>=283.15,>=288.706,>=294.261z<=15,<=20,<=25,<=30)r4rEr8rxr:r;WIND10mrrz%csi, ets, fbias, pod, faratio, sratioz* >=277.594, >=283.15, >=288.706, >=294.261z0 <=15, >=15, <=20, >=20, <=25, >=25, <=30, >=30zX<805, <=805, <1609, <=1609, <4828, <=4828, <8045, <=8045, >8045, >=8045, <16090, <=16090Zceil_visCEILINGzQ<152, <=152, <305, <=305, >914, >=914, <914, <=914, <1524, <=1524, <3048, <=3048zGRIB_lvl_typ = 215;rz<10, >10, >50, >90zGRIB_lvl_typ = 200;)rEr8rrGrZfss)r r rrZgrid2obs_ptypeZBILINz>=1.0,>=2.0,>=3.0,>=4.0ZPRWEZgrid2obs_conus_sfc)rrG214rrrrrrrrrrrrrrrrrrr)r4r8rErruVISsfc HGTcldceilCAPEsfcrrr{r|r:r;rFz%csi, fbias, fss, pod, faratio, sratio)rrrHrrrrrrrrrrrrrrrrrrrrz <=15, <=20, <=25, <=30zQ<=800, <805, <=1600, <1609, <=4800, <4828, <=8000, <8045, >=8045, <=16000, <16090zK<152, <=152, <305, <=305, <914, >=914, <=916, <1520, <=1524, <3040, <=3048zJ<152, <=152, <305, <=305, <914, >=914, <=916, <1520, <=1524, <3040, <=3048z'>500, >1000, >1500, >2000, >3000, >4000)r8rErIrJrKZ grid2obs_aq)rrrHrrrrrrrrrrrrrrrrrrz,>50, >60, >65, >70,>75, >85, >105,>125, >150ZCOPOZaqOZCON8ZA8)rzrLZgrid2obs_polar_sfczme, rmse, fbar_obar)r4r6r9Zgrid2grid_rtofs_sfczme, rmse, fbar_obar, estdev) rrrrrrrrrrrrz0,*,*Z analysed_sstZ rtofs_sfcz0,0,*,*ZadtZice_conc)SSTZSSSZSSHSIC) rrrrrrrrrrrzsratio, pod, csi, hssz >=0, >=26.5z>=15, >=40, >=80)rMrN)r r rZ precip_ccpa)rrrrrA01)rr APCP_01_Z0A03A3)rrrPA06A6)rrrP)rrrP)rrrrz9>=0.254, >=1.27, >=2.54, >=6.35, >=12.7, >=19.05, >=25.4,zA>=0.254, >=1.27, >=2.54, >=6.35, >=12.7, >=19.05, >=25.4, >=50.8,zQ>=0.254, >=1.27, >=6.35, >=12.7, >=19.05, >=25.4, >=38.1, >=50.8, >=76.2, >=101.6zX>=0.254, >=1.27, >=2.54, >=6.35, >=12.7, >=25.4, >=38.1, >=50.8, >=76.2, >=101.6 >=152.4zBme, ets, fss, csi, fbias, fbar, obar, pod, faratio, farate, sratio)rrrrrrrHrrrrrrrrrrrrrrrrrrzQ>=0.254, >=2.54, >=6.35, >=12.7, >=19.05, >=25.4, >=38.1, >=50.8, >=76.2, >=101.6zP>=0.254, >=2.54, >=6.35, >=12.7, >=25.4, >=38.1, >=50.8, >=76.2, >=101.6 >=152.4)r rrZ precip_mrms)rrr)MultiSensor_QPE_01H_Pass2_Z0rrrPrO)rOr=r')rUrrrPrQ)rQrRr')rUrrrPrS)rSrTr')rUrrrPr>)rrr)r'rSrTz1>=0.0254, >=0.0508, >=0.1016, >=0.2032, >=0.3048,)rrrr)rrrr)rrrr)rrzme, rmse)rrrrrrrrZsea_ice_fraction)rMZICECzBme, ets, fss, csi, fbias, fbar, obar, pod, farate, faratio, sratio) rrrrrrrrr)ZP812zP696.8zP595.2ZP506zP392.7z>=1, >=2, >=3, >=4)rCrrDrr@Zaviation)Zsnowfall_nohrscZsatellite_ghrsst_ncei_avhrr_anlZ"satellite_ghrsst_ospo_geopolar_anlZaviation_analysisN)Zthresh_categ_translatorformulasmm_to_inK_to_FC_to_F mps_to_kt gpm_to_kftm_to_mi m_snow_to_in dec_to_percunit_conversionsvariable_translatordomain_translatorZ linetype_cols case_typerrrrrs   #     !"#$%&()+-./0123579;=>?@ABCDEFGHIJKLMNOPQRS V  $(,048<@DHLPTX\`dhlptx|  !%)-159=AEIMQUY]aeimquy} "&*.26:>BFJNRW k    > ? C E K N P R T V Y \ ae         mTr %.7@IR[dmv  +    \    *    *    Y ! " 8P(             =   1 M ~        W      P Uk                _   ,   0   0 *       0          g          *     /        d        %    G      zReference.__init__c@s\eZdZdddZdddZdddZddd Zdd d Zdd d ZdddZ dddZ dS)zReference.formulasFcCH|rtdd}d}||fS|rt|djdd}|St|d}|S)N?gffffff9@decimalsnpdivideround)Zmm_valsrounding return_termsMrcZ inch_valsrrrrW  zReference.formulas.mm_to_incCs`|rtdd}d}||fS|r!t|dddd}|St|dddd}|S)N"@@gQ|gfffffq@@@rjrkarrayrl)ZK_valsrmrnrorcF_valsrrrrXs zReference.formulas.K_to_FcCsX|rtdd}d}||fS|rt|ddd}|St|ddd}|S)Nrqrrrsru)ZC_valsrmrnrorcrwrrrrYs zReference.formulas.C_to_FcC<|r d}d}||fS|rt|d}|St|d}|S)Ng,?rerjmultiplyrl)Zmps_valsrmrnrorcZkt_valsrrrrZ zReference.formulas.mps_to_ktcCrc)Nrdg s@rerfrgri)Zgpm_valsrmrnrorcZkft_valsrrrr[rpzReference.formulas.gpm_to_kftcCrc)Nrdg(\%@rerfrgri)m_valsrmrnrorcZmi_valsrrrr\rpzReference.formulas.m_to_micCs@|r d}d}||fS|rt|djdd}|St|d}|S)Ngo_C@reg(\C@rfrgry)r|rmrnrorcZin_valsrrrr]s zReference.formulas.m_snow_to_incCrx)NgY@rery)Zdec_valsrmrnrorcZ perc_valsrrrr^r{zReference.formulas.dec_to_percN)FF) r r!r"rWrXrYrZr[r\r]r^rrrrrVs   rVN)r r!r"rrVrrrrrVs:HrV) r&rrr9numpyrjrr$r%r*r<rVrrrrs "