
    ]i                         S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SS	\S
\4S jjr " S S5      r " S S5      rSS jrS\S\R0                  4S jrg)zHiPlot support.    )ProcessPoolExecutorN)	OmegaConf)BaseContainer   )XP)get_mainvalue	precisionc                 j    [         R                  " U 5      (       d  U $ [        U SU-  -  5      SU-  -  $ )zCRound value but returned as float, to make display nicer in Hiplot.
   )mathisfiniteround)r	   r
   s     H/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/dora/hiplot.pyroundfr      s3    ==y()B	M99    c                       \ rS rSrSrS\S\R                  \\R                  4   4S jr
S\S\R                  \R                  \\R                  4      4S jrS\R                  4S	 jrS
rg)HiPlotExplorer   zrYou can inherit this class in order to make custom HiPlotExplorer,
for instance to select a subset of the metrics.xpmetricsc                     U$ N )selfr   r   s      r   process_metricsHiPlotExplorer.process_metrics    s    r   historyc                 N    U Vs/ s H  o0R                  X5      PM     sn$ s  snf r   )r   )r   r   r   ms       r   process_historyHiPlotExplorer.process_history#   s#    5<=W$$R+W===s   "expc                     g)z`Use this method to further tune the `hiplot.Experiment` object,
for instance setting a XY plot.
Nr   )r   r#   s     r   postprocess_expHiPlotExplorer.postprocess_exp&   s     	r   r   N)__name__
__module____qualname____firstlineno____doc__r   tpDictstrAnyr   Listr!   hiplot
Experimentr%   __static_attributes__r   r   r   r   r      sj    7" rwwsBFF{/C >" >rwwrwwsBFF{7K/L >6#4#4 r   r   c                        \ rS rSrSrSrSrSrg)STYLE-   zbadge badge-pill badge-primaryz badge badge-pill badge-secondaryzbadge badge-pill badge-darkr   N)r'   r(   r)   r*   r   internalparamsr3   r   r   r   r5   r5   -   s    .G1H*Fr   r5   c                     Uc  0 OUnU R                  5        H1  u  p4[        U[        5      (       a  [        XAX#-   S-   S9  M+  XAX#-   '   M3     U$ )N.)outprefix)items
isinstancedict_flatten)dctr;   r<   keyr	   s        r   r@   r@   3   sN    "Ciik
eT""UFL3,>? %	 "
 Jr   urireturnc                 *   [        5       n[        5       nSnSnUR                  R                  nUc  UR                  S-   n[
        R                  " U 5       H  nSU;   a>  UR                  SS5      u  pxUS:X  a  UnUc  US-   nOUS:X  a  UnO[        S	U 35      eMG  UR                  R                  UR                  R                  -  U-  n	U	R                  5       (       a4  U	R                  5        H  n
UR                  U
R                  5        M      M  UR                  U5        M     Uc  S
nUS-   U-   n[        R                  " U5      nUc   U5       eU" 5       n[!        S5       n[#        UR%                  UR&                  U5      5      nSSS5        [(        R*                  " 5       nW(       d  U$ UR-                  US   5      n/ n[        5       nU H  nUR-                  U5      nUR/                  5        H;  u  nnUR                  U5        UU;   d  M  UU   U:w  d  M*  UR1                  U5        M=     [        UR3                  5       5      [        UR3                  5       5      -
  nU H  nUR1                  U5        M     UR5                  U5        M     U[        UR3                  5       5      -  n[7        UU5       GH  u  nn0 nUR/                  5        HX  u  pxUU;  d  M  UR9                  Xx5      R                  SS5      S   nUUU'   [:        R<                  UR>                  U   l         MZ     U HF  nUU;  d  M   [C        SU-   SU05      nUR9                  Xx5      R                  SS5      S   nUUU'   MH     UR/                  5        Hh  u  px[G        U[H        5      (       a  [J        RL                  " USS9n[G        U["        5      (       a  SRO                  [%        [P        U5      5      nUUU'   Mj     URR                  US'   SnURT                  RW                  5         URY                  UURT                  RZ                  5      n[        5       n[]        U5       H  u  nn[_        U5      nUUS'   U[a        URT                  RZ                  5      S-
  :H  US'   [c        U5      n URe                  U 5        [(        Rf                  " URR                   SU 3UUS9n!U!Rh                  nURj                  R5                  U!5        U R3                  5        H6  nUR                  U5        [:        Rl                  UR>                  U   l         M8     M     GM     URo                  [(        Rp                  Rr                  5      Re                  SS/SS/[#        W5      -   S.5        URo                  [(        Rp                  Rt                  5      Re                  S// SQ[#        U5      -   S.5        [:        Rv                  UR>                  S   l         [:        Rv                  UR>                  S   l         [:        Rv                  UR>                  S   l         URy                  U5        U$ ! , (       d  f       GN= f! [D         a    Sn GN7f = f)a  Loader for hiplot
Running: python -m hiplot dora.hiplot.load --port=XXXX
will run an hiplot server. You can provide there a list of sigs or grid names, separated
by spaces.

To select metrics or further tune the display, you should inherit from
`HiPlotExplorer`, very similar in spirit to the grid explorers.

To specify the explorer, using `explorer=MyExplorer`.
You can also change the module to look into with `explorer_module=` (default is
`yourproject.grids._hiplot`).
Nr   z.grids=r   explorerz._hiplotexplorer_modulezInvalid param zdora.hiplotr:   r   r   zxp.cfg.r   T)resolvez, sigepochlast_)uidfrom_uidvaluesrO   rN   )hideorder)rJ   rL   rK   )=r   setdoragrid_packagepackageshlexsplit
ValueErrordir_gridsexistsiterdiraddnamepydoclocater   listmapget_xp_from_sigr1   r2   get_name_partsr=   popkeysappendzipshort_name_partr5   r8   parameters_definition	label_cssevalAttributeErrorr>   r   r   to_containerjoinr.   rJ   linkloadr!   r   	enumerater?   lenr@   update	DatapointrN   
datapointsr   display_dataDisplaysPARALLEL_PLOTTABLEr7   r%   )"rC   mainsigsrH   explorer_name
grids_nametokenrB   r	   grid_folderchildexplorer_qualifiedexplorer_klassrG   poolxpsr#   	referencexps_name_partsall_columnsr   partsvalmissingrP   snamerO   r   metric_nameskr   point_valuesflat_metricsdps"                                     r   rr   rr   =   s    :D5D(,O$M''J\\H,
S!%<S!,JCj  %"*&0:&=O))"' >#!788iimmdii&6&66>$,,.$ / HHUO# "$ '(3.>\\"45N%9'99%H	R	 D488D00$78 
! 


C
 ##CF+IN%K##B'HCOOC iIcNc$9c" &
 inn&'#ejjl*;;CMM# e$  3y~~'((Kn-	E')++-JC)#,,S8>>sAFqI %u=B\\))%0:	 (
 C%! S4*=E ,,S8>>sAFqI %u  !,,.JC%//!..udC%&&		#c5/2F3K ) u%)
**2rww?u#G,JAw<L$%L!#$BGGOO(<q(@#@L #G,L-!!vvhasO!#%B vvHNN!!"%#((*  %;@==))#.8 + -5 .T V__223::U#'"T,%77<  V__**+22)D,>>4  49>>Cg&027..Cf%/16Ce$.S!J[ 
!	 D & ! E!s   +&Y0	Z0
Y?ZZ)   )N )r+   concurrent.futuresr   r   r`   rW   typingr,   r1   	omegaconfr   omegaconf.basecontainerr   r   r   _utilsr   floatintr   r   r5   r@   r.   r/   rr   r   r   r   <module>r      sn     2       1  :% :C :  + +|c |bff |r   