
    mi                         d Z ddlm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
 ddlmZ ddlmZ ddlmZ dd	ed
efdZ G d d      Z G d d      ZddZdedej0                  fdZy)zHiPlot support.    )ProcessPoolExecutorN)	OmegaConf)BaseContainer   )XP)get_mainvalue	precisionc                 ^    t        j                  |       s| S t        | d|z  z        d|z  z  S )zCRound value but returned as float, to make display nicer in Hiplot.
   )mathisfiniteround)r	   r
   s     E/var/www/stems/demucs_env/lib/python3.12/site-packages/dora/hiplot.pyroundfr      s0    ==y()B	M99    c                       e Zd ZdZdedej                  eej                  f   fdZ	dedej                  ej                  eej                  f      fdZdej                  fdZy	)
HiPlotExplorerzvYou can inherit this class in order to make custom HiPlotExplorer,
    for instance to select a subset of the metrics.xpmetricsc                     |S N )selfr   r   s      r   process_metricszHiPlotExplorer.process_metrics    s    r   historyc                 L    |D cg c]  }| j                  ||       c}S c c}w r   )r   )r   r   r   ms       r   process_historyzHiPlotExplorer.process_history#   s#    5<=$$R+===s   !expc                      y)zpUse this method to further tune the `hiplot.Experiment` object,
        for instance setting a XY plot.
        Nr   )r   r    s     r   postprocess_expzHiPlotExplorer.postprocess_exp&   s     	r   N)__name__
__module____qualname____doc__r   tpDictstrAnyr   Listr   hiplot
Experimentr"   r   r   r   r   r      sj    7" rwwsBFF{/C >" >rwwrwwsBFF{7K/L >6#4#4 r   r   c                       e Zd ZdZdZdZy)STYLEzbadge badge-pill badge-primaryz badge badge-pill badge-secondaryzbadge badge-pill badge-darkN)r#   r$   r%   r   internalparamsr   r   r   r/   r/   -   s    .G1H*Fr   r/   c                     |i n|}| j                         D ]2  \  }}t        |t              rt        ||||z   dz          +||||z   <   4 |S )N.)outprefix)items
isinstancedict_flatten)dctr4   r5   keyr	   s        r   r9   r9   3   sZ    "Ciik &
UeT"UFSL3,>? %C	&
 Jr   urireturnc                    t               }t               }d}d}|j                  j                  }||j                  dz   }t        j                  |       D ]  }d|v r;|j                  dd      \  }}|dk(  r
|}||dz   }n|dk(  r|}nt        d	|       B|j                  j                  |j                  j                  z  |z  }	|	j                         r1|	j                         D ]  }
|j                  |
j                          |j                  |        |d
}|dz   |z   }t        j                  |      }|J |        |       }t!        d      5 }t#        |j%                  |j&                  |            }ddd       t)        j*                         }s|S |j-                  |d         }g }t               }|D ]  }|j-                  |      }|j/                         D ]5  \  }}|j                  |       ||v s||   |k7  s%|j1                  |       7 t        |j3                               t        |j3                               z
  }|D ]  }|j1                  |        |j5                  |        |t        |j3                               z  }t7        ||      D ]  \  }}i }|j/                         D ]V  \  }}||vs|j9                  ||      j                  dd      d   }|||<   t:        j<                  |j>                  |   _         X |D ]C  }||vs	 tC        d|z   d|i      }|j9                  ||      j                  dd      d   }|||<   E |j/                         D ]`  \  }}tG        |tH              rtK        jL                  |d      }tG        |t"              rdjO                  t%        tP        |            }|||<   b |jR                  |d<   d}|jT                  jW                          |jY                  ||jT                  jZ                        }t               }t]        |      D ]  \  }}t_        |      }||d<   |ta        |jT                  jZ                        dz
  k(  |d<   tc        |      } |je                  |        t)        jf                  |jR                   d| ||      }!|!jh                  }|jj                  j5                  |!       | j3                         D ]5  }|j                  |       t:        jl                  |j>                  |   _         7   |jo                  t(        jp                  jr                        je                  ddgddgt#              z   d       |jo                  t(        jp                  jt                        je                  dgg dt#        |      z   d       t:        jv                  |j>                  d   _         t:        jv                  |j>                  d   _         t:        jv                  |j>                  d   _         |jy                  |       |S # 1 sw Y   xY w# tD        $ r d}Y #w xY w)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.hiplotr3   r   r   zxp.cfg.r   T)resolvez, sigepochlast_)uidfrom_uidvaluesrH   rG   )hideorder)rC   rE   rD   )=r   setdoragrid_packagepackageshlexsplit
ValueErrordir_gridsexistsiterdiraddnamepydoclocater   listmapget_xp_from_sigr,   r-   get_name_partsr6   popkeysappendzipshort_name_partr/   r1   parameters_definition	label_cssevalAttributeErrorr7   r   r   to_containerjoinr)   rC   linkloadr   r   	enumerater8   lenr9   update	DatapointrG   
datapointsr   display_dataDisplaysPARALLEL_PLOTTABLEr0   r"   )"r<   mainsigsrA   explorer_name
grids_nametokenr;   r	   grid_folderchildexplorer_qualifiedexplorer_klassr@   poolxpsr    	referencexps_name_partsall_columnsr   partsvalmissingrI   snamerH   r   metric_nameskr   point_valuesflat_metricsdps"                                     r   rk   rk   =   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	  9D488D00$789 


C
 ##CF+IN%K 
%##B' 	#HCOOC iIcNc$9c"	#
 inn&'#ejjl*;; 	CMM#	e$
% 3y~~'((Kn- (I	E')++- 	JJC)#,,S%8>>sAFqI %u=B\\))%0:		J
  	&C%! S4*=E ,,S%8>>sAFqI %u	& !,,. 	 JC%/!..udC%&		#c5/2F3K	  u%)
**2rww?u#G, 	IJAw<L$%L!#$BGGOO(<q(@#@L #G,L-!!vvhasO!#%B vvHNN!!"%#((* I  %;@==))#.8I	I5(I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[9 9D & ! E!s   &X7Y7YYY)   )N )r&   concurrent.futuresr   r   rY   rP   typingr'   r,   	omegaconfr   omegaconf.basecontainerr   r   r   _utilsr   floatintr   r   r/   r9   r)   r*   rk   r   r   r   <module>r      sn     2       1  :% :C :  + +|c |bff |r   