
    IyjT              
          d dl Z d dlZd dlZd dlZd dlZd dlZd dl	Z
d dlmZmZ d dlmZ d dlmZ d dlmZ  e       Zej+                         Z e
j.                  d        e
j.                  dd	        ej0                  d
d dgdg      Zej4                  Zde_         e       Zej;                         d    j=                         Zej;                         d   j=                         Z  e e!ed d        e!edd        e!edd        e!edd             Z" e e!ed d        e!edd        e!edd        e!edd             Z# e e!e d d        e!e dd        e!e dd        e!e dd             Z$ e e!e d d        e!e dd        e!e dd        e!e dd             Z%e"e$fZ&e
jN                  jQ                  de&dd      Z)egZ*dgZ+g dZ,g dZ-g dZ.e)j^                  Z0e
jN                  jc                  de*d    j6                  ge*D  cg c]  } | j6                   c} dd      Z2e
jN                  jg                  de*d    j6                  e*D  cg c]  } | j6                   c} dd      Z4e
jN                  jg                  de,d    e,d      Z5e
jN                  jm                  d e-d!   e-dd"      Z7e
jN                  jg                  d#e.d    e.d      Z8d$ Z9d%Z: e
jv                  e5e2e7e8e)jx                  j^                        d&        Z= e
jv                  e5e4e7e8e)jx                  j^                        d'        Z>d( Z?d) Z@yc c} w c c} w )*    N)datetime	timedelta)pyplot)MonitoringAppDates)MonitoringAppTexts
floatpanelstretch_widthT)sizing_modenotificationszmhttps://dataserver.cptec.inpe.br/dataserver_dimnt/das/carlos.bastarz/SMNAMonitoringApp/jo/jo_table_series.csv   )
df_preOperDate)headerparse_datesr            
   z
Date RangeF   )namevalueenable_timewidth)zsurface pressuretemperaturewindmoisturegpsradiance)00Z06Z12Z18Z	00Z e 12Z	06Z e 18Z00Z, 06Z, 12Z e 18Z)OMFzOMF (1st INNER LOOP)zOMF (2nd INNER LOOP)zOMA (AFTER 1st OUTER LOOP)zOMA (1st INNER LOOP)zOMA (2nd INNER LOOP)zOMA (AFTER 2nd OUTER LOOP)zExperiments (Plots))r   r   optionssolidr   zExperiment (Table))r   r   r'   disabledr   Variable)r   r   r'   r   zSynoptic Time)r   r   r'   inliner   	Iterationc                 2   |t         kD  r3t        }|r+t        j                  j                  j                  dd       |t         kD  r3t         }|r+t        j                  j                  j                  dd       | d   |k\  | d   |k  z  }| j                  |   S )NuE   Seleção da data inicial é maior do que a data final no arquivo CVSi  )durationuC   Seleção da data final é maior do que a data final no arquivo CVSr   )end_date_fixedstart_date_fixedpnstater   errorloc)df
start_dateend_datesend_notificationmasks        3/home/carlos/GitHub/SMNAMonitoringApp/monitor_jo.pysubset_dataframer<   h   s    N"%
HH""(()p{(  A. !HH""(()ny}(~vJ*$Fx)?@D66$<       c                 0   t        |      D ]  \  }}|dk(  rnt               |   }t        j                  |j                  d      }d}	|\  }
}t        ||
||	      }|dk(  rd}d}|dk(  rd}d}|d	k(  rd
}d
}|dk(  rd}d}|dk(  rd}d
}|dk(  rd}d}|dk(  rd}d}|dk(  rd
}d}|dk(  rd}d}k(  r^|j                  |d   | k(     j                  |d   |k(     j                  d      j                  t        |            j                         }n|j                  |d   | k(     j                  |d   |k(     j                  d      j                  t        |      t        |      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|dk(  r9|j                  |j                  d
      j                        j                         }n|dk(  r|j                         }t        |d   j                        }|j                   j#                  dddt        d      dddt        |      dt$        d      }|j                   j#                  dddt        d      dddt        |      dt$        d      }|j                   j#                  dddt        d      dddt        |      dt$        d      }|j                   j'                  ddt$        t        |      dd      j)                  dd       }|j                   j'                  ddt$        t        |      dd      j)                  dd       }|j                   j'                  ddt$        t        |      dd      j)                  dd       }{t               |   }t        j                  |j                  d      }d!}	|\  }
}t        ||
||	      }|dk(  rd}d}|dk(  rd}d}|d	k(  rd
}d
}|dk(  rd}d}|dk(  rd}d
}|dk(  rd}d}|dk(  rd}d}k(  r^|j                  |d   | k(     j                  |d   |k(     j                  d      j                  t        |            j                         }n|j                  |d   | k(     j                  |d   |k(     j                  d      j                  t        |      t        |      d      }|dk(  r9|j                  |j                  d      j                        j                         }nS|dk(  r9|j                  |j                  d
      j                        j                         }n|dk(  r|j                         }t        |d   j                        }|j                   j#                  dddt        d      dddt        |      dt$        d      z  }|j                   j#                  dddt        d      dddt        |      dt$        d      z  }|j                   j#                  dddt        d      dddt        |      dt$        d      z  }|j                   j'                  ddt$        t        |      dd      j)                  dd       z  }|j                   j'                  ddt$        t        |      dd      j)                  dd       z  }|j                   j'                  ddt$        t        |      dd      j)                  dd       z  } t+        j,                  z  z  z  d"#      S )$Nr   r   axisTr   00:00:00r    06:00:00r!   12:00:00r"   18:00:00r#   r$   	00Z e 06Z	12Z e 18Zr%   Observation TypeIterr   both	inclusiveNobsZ      )xyxlabelylabelpersistrotgridlabel
line_widthheight
responsiveJozJo/n)rP   rQ   rY   rW   rT   rZ      o)sizemarkerFr	   r
   )	enumerateglobalsdfsxsr   r<   r5   	set_indexat_timestrreset_indexbetween_timedropindexlenvalueshvplotlinerY   scatteroptsr2   Column)variable
experimentsynoptic_time
iter_fcost
date_rangecountisdfr6   r9   r7   r8   df2	time_fmt0	time_fmt1df_sxticksax_nobsax_joax_jonsax_nobssax_josax_jons                          r;   
plotCurvesr   v   s   j) UTqA:)A,Cq)B $#- J"2z8=NOC%:y:y%:y:y%:y:y%:y:y+YQ[Y+YQ[Y+YQ[Y+YQ[Y 55:y[eyI%wws#56(BCGGFWaHabllmst||  ~A  BK  ~L  M  Y  Y  [wws#56(BCGGFWaHabllmst  B  B  CF  GP  CQ  SV  W`  Sa  ms  B  t K/99T\\*%=%C%CDPPRD"k199T\\*%=%C%CDPPRD"&;;++-Df,,-Fkk&&6&QTU[Q\fjpry}  FI  JK  FL  YZ  ci  vz&  {GKK$$vfSQUY`djlsw  @C  DE  @F  ST  ]c  pt$  uE[[%%&PSTZP[eioqx|  EH  IJ  EK  XY  bh  uy%  zF {{**VvfTWXYTZdhuy*z  FG  PS  TH[[((6T&PSTUPV`dqu(v{{  BC  LO{  PFkk))FfVSVWXSYcgtx)y~~  EF  OR~  SG )A,Cq)B %#- J"2z8=NOC%:y:y%:y:y%:y:y%:y:y+YQ[Y+YQ[Y 55:y[eyI%wws#56(BCGGFWaHabllmst||  ~A  BK  ~L  M  Y  Y  [wws#56(BCGGFWaHabllmst  B  B  CF  GP  CQ  SV  W`  Sa  ms  B  t K/99T\\*%=%C%CDPPRD"k199T\\*%=%C%CDPPRD"&;;++-Df,,-Ft{{''&F6RUV\R]gkqsz~  GJ  KL  GM  Z[  dj  w{'  |  |GT[[%%$vcRViaekmtx  AD  EF  AG  TU  ^d  qu%  v  vEdkk&&6&QTU[Q\fjpry}  FI  JK  FL  YZ  ci  vz&  {  {F ++fvUXYZU[eivz+{  A  A  GH  QT  A  U  UHdkk))Fd6QTUVQWaerv)w||  CD  MP|  Q  QFt{{**VvfTWXYTZdhuy*z  FG  PS  T  TGkUTn 99WX%uV|VG^Q`aar=   c           
         t               |   }t        j                  |j                  d      }d}|\  }}	t	        |||	|      }
|dk(  rd}d}|dk(  rd}d}|dk(  rd	}d	}|d
k(  rd}d}|dk(  rd}d	}|dk(  rd}d}|dk(  rd}d}|dk(  rd	}d}|dk(  rd}d}k(  r^|
j
                  |
d   | k(     j
                  |
d   |k(     j                  d      j                  t        |            j                         n[|
j
                  |
d   | k(     j
                  |
d   |k(     j                  d      j                  t        |      t        |      d      |dk(  r9j                  j                  d      j                        j                         nS|dk(  r9j                  j                  d	      j                        j                         n|dk(  rj                         d}t        j                  j                  ddddd|gd      }fd}t        j                  j!                  d|dd d!"      }t        j"                  ||d#$      S )%Nr   r@   Fr   rB   r    rC   r!   rD   r"   rE   r#   r$   rF   rG   r%   rH   rI   r   rJ   rK   z>
        .tabulator-cell {
        font-size: 12px;
    }
    
bootstrap4centerr>   toggleT)
show_indextheme
text_alignwidths
selectablestylesheetsr)   c                  x    t        j                         } j                  | d       | j                  d       | S )NF)rk   r   )ioBytesIOto_csvseek)	io_bufferr~   s    r;   get_csvzgetTable.<locals>.get_csv	  s0    JJL	IU+qr=   downloadzjo_table.csvsuccessi6  )iconcallbackfilenamebutton_typer   r	   r`   )rb   rc   rd   r   r<   r5   re   rf   rg   rh   ri   rj   rk   r2   widgets	TabulatorFileDownloadrr   )rs   experiment2ru   rv   rw   rz   r6   r9   r7   r8   r{   r|   r}   
stylesheetgt_tabler   file_downloadr~   s                    @r;   getTabler      s    )K
 C	q	!B%J
2z85F
GC:y:y:y:y:y:y:y:y#YY#YY#YY#YY--:yS]yIwws-.(:;??Fz@YZddeklttux  zC  vD  E  Q  Q  Swws-.(:;??Fz@YZddeklyyz}  H  {I  KN  OX  KY  eky  l#yyj1778DDF	+	%yyj1778DDF	/	/!J zz##D/4*6/7+./7 2<-1 $ 3H JJ++ , 
M 99X}/JJr=   c                  (   t        j                  t        j                  t        t         j                  j                  dd            t        j                  t        t         j                  j                  dd            t        j                  t        t         j                  j                  dd            t        j                  t        t         j                  j                  dd            t        j                  t        t         j                  j                  dd            t        j                  t        j                  t        t         j                  j                  dd            d	
      dd      } t        j                  |       }|S )NzChoose a date rangestart)r   alignzChoose a variablez"Choose the cost function iterationz!Choose one or more synoptic timeszChoose one experimentzChoose one or more experimentsr   )rY   
ParametersF)title	collapsed)r2   CardRowdate_range_sliderr   TooltipIconrs   rv   ru   r   rr   rt   )card_parameterssettingss     r;   monitor_jo_sidebarr   P  s4   ggbff%6

8N8NUjry8N8z{ ffXrzz/E/EL_gn/E/op ffZ1G1GNr  {B1G  2C  D ff]BJJ4J4JQt  }D4J  5E  F ff["**2H2HOfnu2H2vw iiz2::;Q;QXx  AH;Q  <I  )J  SV  W$0ECO yy)HOr=   c                  H   t        j                  dt        fdt        fdd      } t        j                  dt        j                  d|       fd      }t        j                  d	      }d
 }| j
                  j                  |d       t        j                  ||t        d      S )NPLOTSTABLETr   )dynamicactiver[   zJo minimization diagnostics.)r   z
    # Minimization Plots

    Navigate through the tabs to visualize the minimization results. Set the parameters on the left to update the curves. Click on the `TABLE` tab to visualize the tabular data.
    c                 P    | j                   dk(  rdt        _        y dt        _        y )Nr   FT)newr   r)   )events    r;   update_experiment2_widgetz2monitor_jo_main.<locals>.update_experiment2_widgetl  s    99>#(K #'K r=   r   r	   r`   )r2   Tabsr   r   rr   paramwatchmonitor_warning_bottom_main)tabs_contents_jotabs_contents	main_textr   s       r;   monitor_jo_mainr   _  s    ww4w6ISW`abGGT299-KM]#^_imnM 		  	I(   !:HE99Y/JXghhr=   )Ar   osrenumpynppandaspdhvplot.pandasrn   panelr2   r   r   
matplotlibr   pltmonitor_datesr   monitor_textsr   monitor_app_textswarningsr   	extensionread_csvrc   r   r   monitoring_app_datesgetDatesstripsdateedateintr7   r1   r8   r0   rm   r   DatetimeRangePickerr   experiment_listexperiment_list2variable_listsynoptic_time_listiter_fcost_listr   rw   MultiChoicert   Selectr   rs   RadioBoxGroupru   rv   r<   rY   dependsr   r   r   r   r   )ry   s   0r;   <module>r      s  . 
 	 	     ( $ , ,&( /88:  \   = bkk  B  LM  OP  KQ  `v  _w  x ^^

 
 *+ %%'*002%%'*002c%!*os51:E!AJUSTUW[IYZ
Ca
OSq_c%!*osSXYZ[]S^O_` Ca
OSq_c%!*os5QRSU;GWX#eAaj/3uQqz?Ca
OSQVWXY[Q\M]^ h	JJ22F`emp2q  , > Zb  v$$
ZZ##)>WXGYG^G^F_  {J  jKuvjkjpjp  jK  SX  `c#  d
jj%9QRASAXAX  tC  cDnocdcici  cD  OS  [^  _::*M!4Dmcfg

((oEWXZE[ew  AF  NQ(  RZZKq7ISbjmn


 Hj-=N=T=T=Z=Z[Xb \Xbt Hk=*>O>U>U>[>[\EK ]EK|iA jK cDs   MM