L Y^c@sddlZddlZddlmZddlmZddlZddlZddlZ ddl j Z ddl Z ejddkrddlmZeZnddlmZdZdefd YZd dd YZd efd YZdefdYZdefdYZdefdYZdefdYZied6ed6ed6ed6ed6ZdS(iN(t timedelta(tEnumii(tRawConfigParsercCsR||d}||d}||d}||d}|||||fS(Ntymtyptxmtxp((t data_gridtytxtextenttymintymaxtxmintxmax((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyt subset_grids tModelscBs&eZdZdZdZdZdZRS(iiiii(t__name__t __module__tgfstcmctukmtecmtnav(((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs tModelDefinitioncBseZdddZdZedZedZdZedZ edZ edZ edZ d Z d Zedd Zd Zd ZdZdZdZdZdZdZdZdZRS(cCsp||_||_||_||_t|j|_i|_d|_ d|_ d|_ |j |j dS(N(t model_nametbasintrundatetfname_templateRtvaluet model_numt_datatNonet _data_fhrt_latdifft_londifftload_coefficientst load_config(tselfRRRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyt__init__$s         cCstidd6dd6dd6}|jtjjtjjtjjtd|j|j d|_ |j|j dd|_ |j|j d|_ dS( Nitmin_fhritmax_fhrit delta_fhrsmodel_config.cfgi( Rtreadtostpathtjointabspathtdirnamet__file__tgetintRR(R)R*(R&tconfig((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyR%8s !.cCsittd|jdd6ttd|jddd6ttd|jdd6ttd|jddd6S(NiiRiRRR(tinttroundR"R#(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytdeg2boxAs !cCsittd|jdd6ttd|jddd6ttd|jdd6ttd|jddd6S(NiiRiRRR(R4R5R"R#(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytdeg5boxJs !cCsJt}|jtjjtjjtjjtd||_dS(Nscoefficients.cfg( RR+R,R-R.R/R0R1t coefficients(R&R3((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyR$Ss .cCs"|jjdj|j|jS(Ns vthresh.{}(R8tgetfloattformatRR(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytvthreshYscCs"|jjdj|j|jS(Ns ththresh.{}(R8R9R:RR(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytththresh]scCs"|jjdj|j|jS(Ns wsthresh.{}(R8R9R:RR(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytwsthreshascCst|j|j|jS(N(trangeR(R)R*(R&((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytf_hoursescCs|jjd|jd|S(Ntdatetfhr(RR:R(R&RA((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytfilenameiscCstj|jd|S(NRA(tpathlibtPathRB(R&RA((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pytfilepathlsc Cstjt|jd|V}y|j|d}WnAtk r~}tjdjd|d|j||nX|dk r|j |9_ ntj djd|d|dt j |j d t j|j |rt j|j } | j|j||j|d }|j|d}tj|||||j|<|j|S|dkr|j|d }|j|d} t j |j|d|j|d\} } t j || | | dd j d(} | |j|<|j|S|d#kr'|j|d } |j|d}|| |j|<|j|S|d$kr|j|d}|j|d}|j|d}|j|d}||||d%}||j|<|j|St d&jd'|dS()NtmslRRRiRRiRRRiRRRRRRitrh700ttitt1000tt700tgh1000tgh700R`RKRJRRRRi iRtlapseg@s{varname} not recognisedRGi(RR!R RRhRRR[RRRRRRVR:(R&R_RGRRFRRRRRRRRRRtz700tz1000RRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs                  "  %       c Cs|j|d}|j|d}|j|d}tjt||||j}dd|d|}dd|d |d |} d d ||d d||d tj||} || | fS(NRRRKg)SagV?g5u?g%ّQgujigii>(RR[RRR7tlog( R&RmRR trh7RRKtrh7avgRRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs!$cCs|j|d}|j|d}tjt||||j}tjt||||j}tjt||||j}||} dd|d|} tj|dg} ddtj| d tj| tj| d |d |} d d | } | | | fS(NRRg"g<1?g i9 O?igK5g{QqҪ @g̚X+?g;w?g?g?\g7?(RR[RRR7RHRR(R&RmRR RRtciRtrh7maxtrh7pertRt_fhRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs!!! E(RRRRR(((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs g t ECMDefinitioncBs,eZdZdZdZdZRS(cCs]|jtd|}|dkr;|jtdd}n|jjd|jd|d|S(NthoursitminutesiR@RAt valid_time(RRRR:(R&RAR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRBs cCs||jkr)||jkr)|j|S|jdkrD||_n||jkrhi|_||_niidd6d6idd6dd6d6idd6dd6d 6id d6d d6d 6id d6dd6d 6idd6d d6d6idd6dd6d6idd6dd6d6}|j|d}|dk rF|j|||dtS|dks^|dkr||jkr|j|d}n|j|S|dkr|j|d }|j|d}tj|||||j|<|j|S|dkr|j|d }|j|d} t j |j|d|j|d\} } t j || | | ddj d } | |j|<|j|S|dkr|j|d } |j|d}|| |j|<|j|St djd|dS(!NRRRRiRRiRRRiRRRRRRiRR`RKRJRRRRi iRs{varname} not recognisedRGi(RR!R RRhRRR[RRRRRRVR:(R&R_RGRRFRRRRRRRRRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRsr              "  %    c Cs|j|d}tj|dg}dd|}dd|d|tj|}dd |d ||}|||fS( NRJigâ?g|"$k?g]0g9^I?gyvT?g$8`gB)րs ?gA?(RR[RHR( R&RmRR RJRRRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRcs #c Cs|j|d}|j|d}tjt||||j}dd|}dd|}dd|d ||} ||| fS( NRJRg5d?gP$ y?gpk%_b gL?gsԗƫgig ?g9(ag*j'@gg[a/bZ>gF2?(RRR7R[RHR( R&RmRR RRRRrRRRR((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyROs&(RRRRR(((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyRs ] RRRRR((RWRCtdatetimeRtenumRR,tsystnumpyR[t metpy.calctcalcRRRt version_infot ConfigParserRt RuntimeErrorRkt configparserRRRRRRRRtREADERS(((sl/gpfs/dell2/emc/modeling/noscrub/Jiayi.Peng/ens_tracker.v1.1.15.3/tclogg/genesis_guidance/forecast_models.pyts4        kmy