o

����n�g�����������������������@���sx���d�dl�m�Z�mZ�d�dlZd�dlZG�dd��d�ZG�dd��d�ZG�dd��d�ZG�d	d
��d
�Z	G�dd��d�Z
G�d
d��d�ZdS�)�����)�datetime�	timedeltaNc�������������������@�������e�Zd�Zdd��ZdS�)�Togglec�����������������C���sx���i�dd�dd�dd�dd�dd�d	d�d
d�dd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�ddi�|�_�dS�)zx
        Dictionary with values that can be adjusted by the user to change a
        particular plot setting.  
        Zx_min_limitg��������Zx_max_limitg�������@Z
x_lim_lockF�y_min_limit�y_max_limit�
y_lim_lock�ci_levgffffff�?�bs_nrepi����	bs_methodZ	FORECASTS�bs_min_samp�����display_averages�sample_equalizationT�keep_shared_events_only�clear_prune_directory�plot_logo_left�plot_logo_right�zoom_logo_leftg�������?�zoom_logo_rightN)�
plot_settings��self��r����;/lfs/h1/ops/prod/packages/evs.v1.0.19/ush/rtofs/settings.py�__init__���sJ�����������	�
���
������zToggle.__init__N��__name__�
__module__�__qualname__r���r���r���r���r���r�����������r���c�������������������@���r���)�	Templatesc�����������������C���s
���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                         LAST30DAYS
        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}*"
        z�{MODEL_LOWER}.{valid?fmt=%Y%m%d}/evs.stats.{MODEL_LOWER}.{OBTYPE_LOWER}.{RUN_CASE_LOWER}_{VAR_NAME_LOWER}.v{valid?fmt=%Y%m%d}.statN)�output_base_templater���r���r���r���r���#���s���
zTemplates.__init__Nr���r���r���r���r���r!���"���r ���r!���c�������������������@���r���)�Pathsc�����������������C���s0���t�j�t�jd�d�|�_t�j�t�jd�d�|�_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
        �FIX_DIRznoaa.pngznws.pngN)�os�path�join�environ�logo_left_path�logo_right_pathr���r���r���r���r���E���s���zPaths.__init__Nr���r���r���r���r���r#���D���r ���r#���c�������������������@���r���)�Presetsc�����������������C���s���t����tdd���d�t����tdd���d�t����tdd���d�t����tdd���d�d�t����tdd���d�t����tdd���d�t����tdd���d�t����tdd���d�d�t����tdd���d�t����tdd���d�t����tdd���d�t����tdd���d�d�t����tdd���d�t����tdd���d�t����tdd���d�t����tdd���d�d�t����td	d���d�t����tdd���d�t����td	d���d�t����tdd���d�d�d
dd
dd�dd
dd
d�t����tdd���d�t�����d�t����tdd���d�t�����d�d�t�����d�t�����d�t�����d�t�����d�d�t�����d�t�����d�t�����d�t�����d�d�t�����d�t�����d�t�����d�t�����d�d�d�|�_dS�)a���
        Evaluation periods that are requested regularly can be defined here 
        and then requested as the 'EVAL_PERIOD' variable in the plotting 
        configuration file.
        
        Additional presets can be added, but must look like this:
        'NAME_OF_PRESET': {
            'valid_beg': 'YYYYmmdd',
            'valid_end': 'YYYYmmdd',
            'init_beg': 'YYYYmmdd',
            'init_end': 'YYYYmmdd',
        },

        Dates must be in YYYYmmdd format.  A date can be written directly as
        a string, or may be defined using python's built-in datetime and/or 
        timedelta (use td) libraries, which are already imported.  Check 
        the online documentation to learn how to use these libraries.
        �Z���)�daysz%Y%m%d����)�	valid_beg�	valid_end�init_beg�init_end�<���r
�����������Z20200101Z20201231Z20210101Z20211231im��z%Y1201z%Y0228z%Y0301z%Y0531z%Y0601z%Y0831z%Y0901z%Y1130)Z
last90daysZ
last60daysZ
last30daysZ	last7daysZ	last3daysZ2020Z2021ZDJFZMAMZJJAZSONN)r����now�td�strftime�date_presetsr���r���r���r���r���O���sp���������������zPresets.__init__Nr���r���r���r���r���r+���N���r ���r+���c�������������������@���s���e�Zd�Zdd��Zdd��ZdS�)�
ModelSpecsc��������������	���C���s���i�dddd��dddd��dd	d
d��ddd
d��dddd��dddd��dd	d
d��dddd��ddd
d��dddd��dddd��dd	d
d��dddd��ddd
d��dddd��dddd��dd	d
d��i�dddd��ddd d��d!d!d"d��d#d#d$d��d%d%d&d��d'd'd(d��d)ddd��d*dd d��d+d!d"d��d,d#d$d��d-d%d&d��d.d'd(d��d/ddd��d0dd d��d1d!d"d��d2d#d$d��d3d%d&d���i�d4d'd(d��d5ddd��d6dd d��d7d!d"d��d8d#d$d��d9d%d&d��d:d'd(d��d;ddd��d<dd d��d=d!d"d��d>d#d$d��d?d%d&d��d@d'd(d��dAdAdBd��dCddd��dDddd��dEd	d
d���i�dFdd
d��dGddd��dHddd��dIddd��dJd	d
d��dKdd
d��dLddd��dMdNdOd��dPdQdRd��dSdQdRd��dTdQdRd��dUdQdRd��dVdQdRd��dWdXdWd��dYdXdWd��dZdXdWd��d[dXdWd���i�d\dXdWd��d]d^d_d��d`d^d_d��dad^d_d��dbd^d_d��dcd^d_d��dddd��dddded��dfddd��dgdhdhd��didhdhd��djdkdkd��dldmdmd��dndmdmd��dododpd��dqdrdrd���|�_�	�i�dsdtdudvdwdxdy��dzd{d|d}dwdxdy��d~dd�d}dwdxdy��d�d�d�d}dwdxdy��d�d�dudvdwdxdy��d�d�dudvdwdxdy��d�d�d�dvdwdxdy��d�d�d�dvdwdxdy��d�d�d�dvdwdxdy��d�d�dudvdwdxdy��d�d�d�d�dwd�dy��dXd�dudvdwdxdy��dNd�dudvdwdxdy��d^d�d�d}d�dxdy��dQd�d�d}d�dxdy��d�d�dudvdwdxdy��d�d�dudvdwdxdy��i�dd�dudvdwdxdy��dd�dudvdwdxdy��d	d�dudvdwdxdy��ddtdudvdwdxdy��dd�dudvdwdxdy��d#d�dudvdwdxdy��d!d�dudvdwdxdy��d'dtd�d}d�dxdy��dhd{dudvdwdxdy��dkddudvdwdxdy��dddudvdwdxdy��dod�dudvdwdxdy��d�dtdudvdwd�dy��d�dtdudvd�d�dy��d�dtdudvdwd�dy��dAdtdudvdwd�dy��d�d{dudvdwdxdy���ddudvdwdxdy�d�dudvdwdxdy�d�dudvdwdxdy�d���|�_d�S�)�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_ARW2zHiResW ARW2ZFV3ZHRW_FV3z
HiResW FV3ZNMMBZHRW_NMMBzHiResW 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_MEANzHREF-X MeanZCONUSHREF_MEANZCONUSHREF_AVRGZCONUSHREF_LPMMZCONUSHREF_PMMNZCONUSHREF_PROBZCONUSHREFX_MEANZAKHREF_MEANZAKHREF_AVRGZAKHREF_LPMMZAKHREF_PMMNZAKHREF_PROBZAKHREFX_MEANZPRHREF_MEANZPRHREF_AVRGZPRHREF_LPMMZPRHREF_PMMNZPRHREF_PROBZPRHREFX_MEANZHIHREF_MEANZHIHREF_AVRGZHIHREF_LPMMZHIHREF_PMMNZHIHREF_PROBZHIHREFX_MEANZ
NARRE_MEANz
NARRE MeanZHIARWZHIARW2ZHIFV3ZHINMMBZ
HAWAIINESTZPRARWZPRARW2ZPRFV3ZPRNMMBZ	PRICONESTZFV3LAMDAZLAMDAz	FV3LAM-DAZ	FV3LAMDAXZLAMDAXz
FV3LAM-DAXZFV3LAMDAXAKZFV3LAMDAXHIZFV3LAMDAXNAZFV3LAMDAXPRZFV3LAMZLAMZFV3LAMAKZFV3LAMHIZFV3LAMNAZFV3LAMPRZFV3LAMXZLAMXzFV3LAM-XZ	FV3LAMXAKZ	FV3LAMXHIZ	FV3LAMXNAZ	FV3LAMXPRZNAM_FIREWXNESTzNAM Fire Wx NestZnamnestZHRRRAKZHRRRZhrrrZNAMNAZNAMZRAPAKZRAPZRAPNAZRRFS_AzRRFS-AZwafsZWAFSZmodel1z#000000�o�����solidg������@)�color�marker�
markersize�	linestyle�	linewidthZmodel2z#fb2020�^����Zmodel3z#1e3cff�XZmodel4z#00dc00�PZmodel5z#e69f00Zmodel6z#56b4e9Zmodel7z#696969�sZmodel8z#8400c8�DZmodel9z#d269c1Zmodel10z#f0e492�obsz#aaaaaa�Noner���g������@�dashedZHWRFZHMONZGFS�������@Z
GFS_DASHEDZGEFSZEC)ZCMCZCTCXZOFCLN)�model_alias�model_settingsr���r���r���r���r�������s�������	��
����������!��%��)��-��1��5��9��=��A��E��I��M��Q��U��Y��]��a��e��i��m��q��u��y��}�������������
������������������������������"�����&�����*�����.�����2�����6�����:�����>�����B�����F�����J�����N�����R�����V�����Z�����^�����b�����f�����j�����n�����r�����v�����z�����~����������������������������������������������������������������������#��������'��������+��������/��������3��������7��������;��������?��������C��������G��������K��������O��������U������
��
��������������"��%��(��+��.��1��4��7��:��=��@��C��F��I��L��O��R��U��X��[��^��a��d��g����zModelSpecs.__init__c�����������������C���s���|�j�|�}|S�)N)rP���)r����nameZ
color_dictr���r���r����get_color_dict���s���
zModelSpecs.get_color_dictN)r���r���r���r���rR���r���r���r���r���r:�������s�������^r:���c�������������������@���s"���e�Zd�Zdd��ZG�dd��d�ZdS�)�	Referencec�����������������C���s��d|�j�jd�d|�j�jd�d|�j�jd�d�|�_	�i�dd�dd�dd	�d
d�dd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�i�d&d'�d(d)�d*d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d4�d6d4�d7d4�d8d4�d9d:�d;d<�d=d>�d?d@�dAdB��dCdDdEdFdGdHdFdIdJdKdLdM��|�_	�i�dNdO�dPdQ�dRdS�dTdU�dVdW�dXdY�dZd[�d\d]�d^d_�d`da�dbdc�ddde�dfdg�dhdi�djdk�dldm�dndo�i�dpdq�drds�dtdu�dvdw�dxdx�dydz�d{d|�d}d~�dd��d�d[�d�d��d�d��d�d��d�d��d�d��d�d��d�d���i�d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d���i�d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d“d�dēd�dƓd�dȓd�dʓ�d�d�i�|�_i�d�g�d΢�d�g�dТ�d�g�dҢ�d�g�dԢ�d�g�d֢�d�g�dآ�d�g�dڢ�d�g�dܢ�d�g�dޢ�d�g�d��d�g�d��d�g�d��d�g�d��d�g�d��d�g�d��d�g�d��d�g�d��g�dТg�dҢg�d�g�d�g�d�d��|�_	�d�d�g�d��dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	dgg�d��d�d�dgg�d��d�d�d�d��	d$gd�gd�d�d$gd�gd�d�d�d��	d��	d��d�d�g�d��ddgg�d��d�d�dgg�d��d�d�d�d��	id��d��d�d�g�d��dgg��d��d�d�dgg��d��d�d�d�d��	dgg��d��d�d�dgg��d��d�d�d�d��	dgg��d��d�d�dgg��d��d�d�d�d��	dgg��d��d�d�dgg��d��d�d�d�d��	d&gg��d�d�d�d&gg��d�d�d�d�d��	�d�d��d�d�g�d��ddgg��d��d�d�dgg��d��d�d�d�d��	id���d�d�dd�g��d�i��ddg�dgd�d�dg�dgd�d�d�d��	��ddgd�gd�d�dgd�gd�d�d�d��	��d	dg�d
gd��ddg�d
gd��dd�d��	��ddg�dgd�d�dg�dgd�d�d�d��	��d
dg�dgd�d�dg�dgd�d�d�d��	�d+d+g�d
gd�d�d+g�d
gd�d�d�d��	��dd"gd�gd�d�d"gd�gd�d�d�d��	��dd"g�d
gd��dd"g�d
gd��dd�d��	�d$d$gd�gd�d�d$gd�gd�d�d�d��	��ddg�dgd�d�dg�dgd�d�d�d��	��ddg�dgd�d�dg�dgd�d�d�d��	��dd-g�dgd�d�d-g�dgd�d�d�d��	��dd/g�dgd�d�d/g�dgd�d�d�d��	�d1d1gd�gd�d�d1gd�gd�d��dd��	�d d gd�gd�d�d gd�gd�d��dd��	�d9d9g�d
gd�d�d9g�d
gd�d�d�d��	�d;d;g�d
gd�d�d;g�d
gd�d�d�d��	�dg�d
gd��ddg�d
gd��dd�d��	d(g�d
gd�d�d(g�d
gd�d�d�d��	�d��d��idϐd�dg��d��dg�d
g�dd��dg�dg�dd��d d��	�d!g�d
�d"g�dd��d#g�d
�dg�dd��d d��	�d$g�d
�d"g�dd��d%g�d
�dg�dd��d d��	�d&�d��idϐd�dg��d��dg�d
g�dd��dg�dg�dd��d d��	�d!g�d
�d"g�dd��d#g�d
�dg�dd��d d��	�d$g�d
�d"g�dd��d%g�d
�dg�dd��d d��	�d&�d��i�d'�d(g��d)�dgg��d*�d�d�dgg��d*�d�d�d�d��	dgg��d*�d�d�dgg��d*�d�d�d�d��	dgg��d*�d�d�dgg��d*�d�d�d�d��	dgg��d*�d�d�dgg��d*�d�d�d�d��	�d+�d���d'�d(g��d)�ddgg��d*�d�d�dgg��d*�d�d�d�d��	id���d��d'�d(g��d,�dg�dgd�d�dg�dgd�d�d�d��	dg�dgd�d�dg�dgd�d�d�d��	dg�dgd�d�dg�dgd�d�d�d��	d=g�d
gd��d-d=g�d
gd�d�d�d��	d$gd�gd�d�d$gd�gd�d�d�d��	dAg�d
gd�d�dAg�d
gd�d��d.d��	dg�d
gd��d/�d0dg�d
gd�d��d.d��	d g�d
gd�d�d g�d1gd�d��dd��	dgd�gd�d�dgd�gd�d�d�d��	d+g�d
gd�d�d+g�d
gd�d�d�d��	dg�dgd�d�dg�dgd�d�d�d��	dg�dgd�d�dg�dgd�d�d�d��	�d2�d���d'�d(g��d,��d3dg�dgd�d�dg�dgd�d�d�d��	id���d4�d(g��d5�dg�dg�d6d�dg�dg�d6d�d�d��	dg�dg�d7d��d8g�dg�d7d�d�d��	dAg�d
g�d9d�dAg�d
g�d9d��d.d��	dg�d
g�d:�d/�d0dg�d
g�d;d��d.d��	d g�d
g�d<d�d g�d1g�d<d��dd��	�d=�d���d>�dϐd4�d?g��d,�d*g�d@g�dAd��dBg�d@g�dAd��dCd��	�dDg�dEg�dAd��dBg�dEg�dAd��dCd��	�dF�d��id�dGd�d�gdg�dgd�d�dg�dgd�d�d�d��	dgd�gd�d�dgd�gd�d�d�d��	d"gd�gd�d�d"gd�gd�d�d�d��	�dH�d��i�dId�g��dJ��dKgd�gd�d��dLgd�gd�d��dMd��	�dNgd�gd�d��dNgd�gd�d��dMd��	�dOgd�gd�d��dPgd�gd�d��dMd��	�dQgd�gd�d��dRgd�gd�d��dMd��	�dS�d��d�d�g��dJ��dKgd�gd�d��dLgd�gd�d��dMd��	�dNgd�gd�d��dNgd�gd�d��dMd��	�dOgd�gd�d��dPgd�gd�d��dMd��	�dT�d���dUd�g��dJ��dKgd�g�dVd��dLgd�g�dVd��dMd��	�dQgd�g�dWd��dRgd�g�dWd��dMd��	�dX�d���dY��dId�g��dJ��dKgd�gd�d��dZgd�gd�d��dMd��	�d[gg��d\�d�d��d]gg��d^�d�d��d_d��	�d`gg��d\�d�d��dagg��d^�d�d��d_d��	�db�d��d�d�g��dJ��dKgd�gd�d��dZgd�gd�d��dMd��	�d[gg��d\�d�d��d]gg��d^�d�d��d_d��	�d`gg��d\�d�d��dagg��d^�d�d��d_d��	�db�d���dUd�g��dJ��dKgd�g�dVd��dZgd�g�dVd��dMd��	�d[gg��d\��dVd��d]gg��d^��dVd��d_d��	�dc�d���dY��d'd�g��dd�d3d5g�de�d@gd�d�g��df��de�d@gd�d��dd��	d3d6g�dg�dhgd�d�g��di��dg�dhgd�d��dd��	d3d7g�dj�dkgd�d�g��dl��dj�dkgd�d��dd��	d3d8g�dmgd�d�g��dn��dmgd�d��dd��	�do�d���dpd�g��dd�d3d5g�de�d@g�dqd�g��df��de�d@g�dqd��dd��	d3d6g�dg�dhg�drd�g��di��dg�dhg�drd��dd��	d3d7g�dj�dkg�dsd�g��dl��dj�dkg�dsd��dd��	d3d8g�dmg�dtd�g��dn��dmg�dtd��dd��	�do�d���du�d�dvd�g��dw�dgd�gd�d��dLgd�gd�d�d�d��	�dxgd�gd�d��dygd�gd�d�d�d��	�dz�d��id�dvd�g��dw�dgd�gd�d��dLgd�gd�d�d�d��	�dxgd�gd�d��dygd�gd�d�d�d��	�dz�d��i�d{�|�_�d|S�(}��a���
        The plotting scripts will convert MET units if they are listed below.
        The name of the unit must match one of the keys in the 
        unit_conversions dictionary.  The name of the new unit will become the
        value of the 'convert_to' key, and if necessary, the data and axis 
        labels will be converted according to the value of the 'formula' key.
        Formulas are defined as regular functions in the formulas() subclass 
        of the Reference() class (i.e., below...)
        �in)�
convert_to�formula�F)zkg/m^2�K�C�TMPZTemperatureZTMP_Z0_mean�HGTzGeopotential 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-20�RHzRelative Humidity�SPFHzSpecific HumidityZDPTzDewpoint Temperature�UGRDzZonal Wind Speed�VGRDzMeridional Wind SpeedZ	UGRD_VGRDzVector Wind SpeedZGUSTz	Wind GustZCAPEz%Convective Available Potential EnergyZPRESZPressure�PRMSLzPressure Reduced to MSL�O3MRzOzone Mixing RatioZTOZNEzTotal Ozone�OZCON1�HPBLzPlanetary Boundary Layer Height�TSOILzSoil Temperature�SOILWz Volumetric Soil Moisture ContentZWEASDzAccum. Snow Depth Water Equiv.�APCPzAccumulated Precipitation�APCP_01�APCP_03�APCP_06�APCP_24ZPWATzPrecipitable WaterZCWATzCloud Water�TCDCzCloud Area Fraction�
HGTCLDCEILzCloud Ceiling HeightZVISZ
VisibilityzSea Surface TemperaturezSea Surface SalinityzSea Surface HeightzSea Ice ConcentrationzOcean TemperaturezOcean SalinityzIcing SeverityzComposite ReflectivityzAbove Ground Level ReflectivityzEcho Top Height)�sst�sss�ssh�ice_coverage�temperature�salinity�ICEC_Z0_meanZICESEV�REFC�REFD�RETOP�NHXzNorthern Hemisphere 20N-80N�SHXzSouthern Hemisphere 20S-80S�TROzTropics 20S-20N�PNAzPacific North America�N60z60N-90N�S60z60S-90S�NPACzNorth Pacific Ocean�NPOzNorthern Pacific Ocean�SPACzSouth Pacific Ocean�SPOzSouthern Pacific Ocean�EQPACzEquatorial Pacific Ocean�NATLzNorth Atlantic Ocean�NAOzNorthern Atlantic Ocean�SATLzSouth Atlantic Ocean�SAOzSouthern Atlantic Ocean�EQATLzEquatorial Atlantic Ocean�INDzIndian Ocean�SOCzSouthern Ocean�MEDITzMediterranean Sea�NHzNorthern Hemisphere 20N-90N�SHzSouthern Hemisphere 20S-90SZAR2ZASIAZAsiaZAUNZzAustralia and New ZealandZNAMRz
North AmericaZNHMzNorthern HemisphereZNPCFZSHMzSouthern HemisphereZTRPZG002�GlobalZG003�GLBzGlobal Ocean�G130zCONUS - NCEP Grid 130ZG211zCONUS - NCEP Grid 211�G221zCONUS - NCEP Grid 221�G236zCONUS - NCEP Grid 236ZG223zCONUS - NCEP Grid 223�CONUS�POLARzPolar 60-90 N/S�ARCTIC�Arctic�	Antarctic�EASTz
Eastern US�
CONUS_East�WESTz
Western US�
CONUS_West�
CONUS_Centralz
Central US�CONUS_SouthzSouthern US�NWCzNorthwest Coast�SWCzSouthwest Coast�NMTzNorthern Mountain Region�GRBzGreat Basin�SMTzSouthern Mountain Region�SWDzSouthwest Desert�NPLzNorthern Plains�SPLzSouthern Plains�MDWZMidwest�LMVzLower Mississippi Valley�APLZAppalachians�NECzNortheast Coast�SECzSoutheast Coast�GACzGulf of America Coast�Alaska�NAKzNorthern Alaska�SAKzSouthern Alaska�SEA_ICEzGlobal - Sea Ice�SEA_ICE_FREEzGlobal - Sea Ice Free�
SEA_ICE_POLARzPolar - Sea Ice�SEA_ICE_FREE_POLARzPolar - Sea Ice FreeZFHO)�TOTAL�F_RATEZH_RATE�O_RATE�CTC)r����ZFY_OYZFY_ONZFN_OYZFN_ONZCTS)]r�����BASER�	BASER_NCL�	BASER_NCUZ	BASER_BCLZ	BASER_BCUZFMEANZ	FMEAN_NCLZ	FMEAN_NCUZ	FMEAN_BCLZ	FMEAN_BCU�ACC�ACC_NCL�ACC_NCU�ACC_BCL�ACC_BCU�FBIASZ	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_BCU�HKZHK_NCLZHK_NCU�HK_BCL�HK_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_BCUZCNT)ar�����FBARZFBAR_NCLZFBAR_NCUZFBAR_BCLZFBAR_BCU�FSTDEVZ
FSTDEV_NCLZ
FSTDEV_NCUZ
FSTDEV_BCLZ
FSTDEV_BCU�OBARZOBAR_NCLZOBAR_NCUZOBAR_BCLZOBAR_BCU�OSTDEVZ
OSTDEV_NCLZ
OSTDEV_NCUZ
OSTDEV_BCLZ
OSTDEV_BCUZPR_CORRZPR_CORR_NCLZPR_CORR_NCUZPR_CORR_BCLZPR_CORR_BCUZSP_CORRZKT_CORRZRANKSZ
FRANK_TIESZ
ORANK_TIES�MEZME_NCLZME_NCUZME_BCLZME_BCUZESTDEVZ
ESTDEV_NCLZ
ESTDEV_NCUZ
ESTDEV_BCLZ
ESTDEV_BCUZMBIASZ	MBIAS_BCLZ	MBIAS_BCU�MAEZMAE_BCLZMAE_BCUZMSEZMSE_BCLZMSE_BCUZBCMSEZ	BCMSE_BCLZ	BCMSE_BCU�RMSEZRMSE_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)r�����N_CATZFi_OjZMCTS)
r����r����r����r����r����r����r����r����r����r����ZGERZGER_BCLZGER_BCUZPCT)r�����N_THRESH�THRESH_iZOY_iZON_i�THRESH_nZPSTD)r����r����r����r����r����ZRELIABILITY�
RESOLUTIONZUNCERTAINTYZROC_AUCZBRIERZ	BRIER_NCLZ	BRIER_NCUZBRIERCLZBRIERCL_NCLZBRIERCL_NCUZBSSZBSS_SMPLr����ZPJC)
r����r����r����ZOY_TP_iZON_TP_iZ
CALIBRATION_iZREFINEMENT_iZLIKELIHOOD_iZBASER_ir�����PRC)r����r����r����ZPODY_iZPOFD_ir����ZECLV)r����r����ZVALUE_BASERZN_PNTZCL_iZVALUE_i�SL1L2)r����r����r����ZFOBARZFFBARZOOBARr�����SAL1L2)r����ZFABARZOABARZFOABARZFFABARZOOABARr�����VL1L2)
r����ZUFBARZVFBARZUOBARZVOBARZUVFOBARZUVFFBARZUVOOBARZF_SPEED_BARZO_SPEED_BAR�VAL1L2)r����ZUFABARZVFABARZUOABARZVOABARZUVFOABARZUVFFABARZUVOOABARZVCNT)r����r����r����ZFS_RMSZOS_RMSZMSVE�RMSVEr����r����ZFDIRZODIR�
FBAR_SPEEDZ
OBAR_SPEED�VDIFF_SPEEDZ	VDIFF_DIR�	SPEED_ERRZSPEED_ABSERR�DIR_ERRZ
DIR_ABSERRZMPR)
r����ZINDEXZOBS_SIDZOBS_LATZOBS_LONZOBS_LVLZOBS_ELVZFCSTZOBSZOBS_QCZ
CLIMO_MEANZCLIMO_STDEVZ	CLIMO_CDF)r����ZFBSZFBS_BCLZFBS_BCUZFSSZFSS_BCLZFSS_BCUZAFSSZAFSS_BCLZAFSS_BCUZUFSSZUFSS_BCLZUFSS_BCUr����Z
F_RATE_BCLZ
F_RATE_BCUr����Z
O_RATE_BCLZ
O_RATE_BCU)
r����ZFGBARZOGBARZMGBARZEGBAR�S1ZS1_OGZ
FGOG_RATIOZDXZDY)r����ZFYZOYr����ZBADDELEYZ	HAUSDORFFZMED_FOZMED_OFZMED_MINZMED_MAXZMED_MEANZFOM_FOZFOM_OFZFOM_MINZFROM_MAXZFOM_MEANZZHU_FOZZHU_OFZZHU_MINZZHU_MAXZZHU_MEAN)ZNBRCTCZNBRCTSZNBRCNTZGRADZDMAP�acc�NEAREST)r{���r|���r~���r}���)�P1000�P700�P500�P250���	sfc_upper)	�fcst_var_names�fcst_var_levels�fcst_var_thresholdsZfcst_var_options�
obs_var_names�obs_var_levels�obs_var_thresholdsZobs_var_options�
plot_group)�P850r����r�����Z0)	r[���r_���r\���r]���r^���rZ���rb���rc���rd���)�plot_stats_list�interp�vx_mask_list�var_dict)r����r����z&me, rmse, msess, rsd, rmse_md, rmse_pv)r����r����r����r�����P200�P100�P50�P20�P10�P5�P1)r����ZP70r����ZP30r����r����r����r����)r[���rZ���rb���rc���re���)r����r����Zfbar)r{���r|���r���r����r}���r����r����r����r����r����r�����TMP2m�Z2�TMPsfcZTMPtropsZL0zGRIB_lvl_typ = 7;�RH2mZSPFH2m�PRESsfcZ	PREStrops�UGRD10mZZ10�VGRD10mZTSOILtopzZ10-0ZSOILWtopZprecipZcape)ZHGTtropsZTOZNEclmz%fss, csi, fbias, pod, faratio, sratiozNEAREST, NBRHD_CIRCLE, BILIN)r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����ZDAY1_1200_TSTMZDAY2_1730_TSTMrx���z>=20, >=30, >=40, >=50ZMergedReflectivityQCCompositeZZ500Zradarrz����Z1000Z	EchoTop18ry���ZSeamlessHSR)rx���rz���ry���z'me, rmse, bcrmse, fbar_obar, fbar, obarzNEAREST, BILIN)
r����r����r����r����r}���r����r����r����r����r����)r����ZP925r����r����r����ZP400ZP300r����r����ZP150r����r����r����r����r����)rZ���r`���ra���r[���)r����r�����G214r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����zGRIB_lvl_typ = 200;Zceil_viszGRIB_lvl_typ = 215;�CEILINGz	L100000-0)r����r�����DPT2mro���rd����VISsfc�
HGTcldceil�CAPEsfcZGUSTsfcrg���r����r����ZUGRD_VGRD10mz%csi, fbias, fss, pod, faratio, sratio)r����r����r���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����z <=15, <=20, <=25, <=30z >=4.4, >=10, >=15.55, >=21.11ZTDOzQ<=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)r����r��r��r��r��)r����r����r����ZBILIN�A1z,>50, >60, >65, >70,>75, >85, >105,>125, >150ZCOPOZaq�OZCON8ZA8)rf���r��zme, rmse, fbar_obar)r����r����r����z"me, rmse, fsd, osd, esd, rsd, pcor)r����r����r����r����r����r����r����r����r����r����r����r����rq���Zanalysed_sstZ	rtofs_sfcrr���rs���Zadtrt���Zice_conc)�SST�SSS�SSH�SIC)r��r	��r
��zsratio, pod, csi, fbias, hssz>=0, >=26.5z>=15, >=40, >=80)r��r��)r����r����r����ZWTMPru���)r����ZZ50ZZ125ZZ200ZZ400ZZ700r����ZZ1400�TEMP)zZ4-0zZ52-48zZ127-123zZ202-198zZ402-398zZ702-698z	Z1003-997z
Z1403-1397�rtofsrv����PSAL)r��r��r��)r��r��)r����r����r����r����r����r����r����r���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����ZA01)rj���rk����
APCP_01_Z0ZA03ZA3)rj���rl���r��ZA06ZA6)rj���rm���r��ZA24)rj���rn���r��)rk���rl���rm���rn���z:me, ets, fss, csi, fbias, fbar, obar, pod, faratio, sratioz9>=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, >=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����r����zme, rmse)r����r����r����r����r����r����r����r����rw���Zsea_ice_fraction)r��ZICEC)Zgrid2grid_anomZgrid2grid_presZ
grid2grid_sfcZgrid2grid_mrmsZ
radar_mrmsZgrid2obs_upper_airZgrid2obs_conus_sfcZgrid2obs_aqZgrid2obs_polar_sfcZgrid2grid_rtofsZgrid2obs_rtofsZprecip_ccpaZsatellite_ghrsst_ncei_avhrr_anlZ"satellite_ghrsst_ospo_geopolar_anlN)	�formulas�mm_to_in�K_to_F�C_to_F�unit_conversions�variable_translator�domain_translatorZ
linetype_cols�	case_typer���r���r���r���r������s2�����������	���
���������������� �"�$�&�(�)�*�+�,�-
�9��������	�
���
������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�D�F���>�?�C�E�K�N�P�R�T�V�Y�\�a�e��
���
�
�
�
�
�	�	�	���m������������T����o��
������%��.��7��@��I��R��[��d��m��v�����	�����������	�������9��

�

����2��

�

����3������P����q�	�	�	�	�	�	�
�	�	�	�	���z��������������d�
����)�	�	����&�	�	�	���/�	�	���&�	����s�	�	���&�	�	���&�	����j

�	

�	

�	���2

�

�
	
	�		������	�����	�������������������������zReference.__init__c�������������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)zReference.formulasc�����������������C���s���t��|�d�}|S�)Ngffffff9@)�np�divide)Zmm_valsZ	inch_valsr���r���r���r��1	��s���zReference.formulas.mm_to_inc�����������������C���s���t��|��d�d�d�d�}|S�)Ngfffffq@�������"@rN����������@@�r���array)ZK_vals�F_valsr���r���r���r��4	��s���zReference.formulas.K_to_Fc�����������������C���s���t��|��d�d�d�}|S�)Nr��rN���r��r��)ZC_valsr��r���r���r���r��7	��s���zReference.formulas.C_to_FN)r���r���r���r��r��r��r���r���r���r���r��0	��s����r��N)r���r���r���r���r��r���r���r���r���rS������s �����������������4rS���)r���r���r7����numpyr��r%���r���r!���r#���r+���r:���rS���r���r���r���r����<module>���s���"
Z���c