Ë
    @ç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     ú`/Volumes/fast/ai/experiments/voice-extract-mac/.venv/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<Ó=±W°�×$Ñ$ R¨Õ+°WÑ=Ð=ùÒ=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ð "ð ¨r¯w©w°s¸B¿F¹F°{Ñ/Có ð> "ð >¨r¯w©w°r·w±w¸sÀBÇFÁF¸{Ñ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Ø1€HØ*�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   sU   € Ø�‰" €CØ—i‘i–k‰
ˆˆUÜ�eœTÔ"Ü�U ¨F°S©L¸3Ñ,>Ö?à %ˆ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ä‹5€DØ(,€OØ$€Mà—‘×'Ñ'€JØÐØ—\‘\ HÑ,ˆ
Ü—‘˜SÖ!ˆØ�%‰<ØŸ™ S¨!Ó,‰JˆC�Ø�jÒ Ø %�Ø"Ð*Ø&0°:Ñ&=‘OØÐ)Ò)Ø"'‘ä  >°#°Ð!7Ó8Ð8ØØ—i‘i—m‘m d§i¡i×&6Ñ&6Ñ6¸Ñ>ˆØ×ÑÔØ$×,Ñ,Ö.�Ø—‘˜Ÿ™Õ$ñ /ð �H‰H�U�Oð# "ð$ ÐØ'ˆØ(¨3Ñ.°Ñ>ÐÜ—\‘\Ð"4Ó5€NØÐ%Ð9Ð'9Ó9Ð%ÙÓ€Hä	˜RÔ	  DÜ�4—8‘8˜D×0Ñ0°$Ó7Ó8ˆ÷ 
!ô ×
Ñ
Ó
€CÙØˆ
ð ×#Ñ# C¨¡FÓ+€IØ€NÜ“%€KÛˆØ×#Ñ# BÓ'ˆØŸ™ž‰HˆC�Ø�O‰O˜CÔ Ø�iÒ I¨c¡N°cÓ$9Ø—‘˜cÕ"ð &ô
 �i—n‘nÓ&Ó'¬#¨e¯j©j«lÓ*;Ñ;ˆÛˆCØ�M‰M˜#Õð à×Ñ˜eÕ$ð ð ”3�y—~‘~Ó'Ó(Ñ(€KÜ˜˜n×-‰	ˆˆEØ')ˆØŸ+™+ž-‰JˆC�Ø˜)Ò#Ø×,Ñ,¨S°%Ó8×>Ñ>¸sÀAÓFÀqÑI�Ø %��u‘Ü=B¿\¹\�×)Ñ)¨%Ñ0Õ:ð	 (ó
 ˆCØ˜%Òð!Ü  ¨S¡°4¸°*Ó=�Eð ×,Ñ,¨S°%Ó8×>Ñ>¸sÀAÓFÀqÑI�Ø %��u’ð ð !Ÿ,™,ž.‰JˆC�Ü˜%¤Ô/Ü!×.Ñ.¨u¸dÔC�Ü˜%¤Ô&ØŸ	™	¤#¤c¨5£/Ó2�ØˆF�3ŠKð )ð Ÿ™ˆˆu‰Ø%)ˆØ
�‰�‰ŒØ×*Ñ*¨2¨r¯w©w¯©Ó?ˆÜ“uˆÜ# GÖ,‰JˆAˆwÜ ›<ˆLØ$%ˆL˜Ñ!Ø#$¬¨B¯G©G¯O©OÓ(<¸qÑ(@Ñ#@ˆL˜Ñ Ü# GÓ,ˆLØ×Ñ Ô-Ü×!Ñ!Ø—v‘v�h˜a ˜s�OØ!Ø#ô%ˆBð —v‘vˆHØ�N‰N×!Ñ! "Ô%Ø#×(Ñ(Ö*�Ø× Ñ  Ô%Ü;@¿=¹=�×)Ñ)¨#Ñ.Õ8ñ +ò -ð5 .ðT ×Ñ”V—_‘_×2Ñ2Ó3×:Ñ:Ø˜UÐ#Ø˜'Ð"¤T¨,Ó%7Ñ7ñ<ô ð ×Ñ”V—_‘_×*Ñ*Ó+×2Ñ2Ø�Ú)¬D°Ó,>Ñ>ñ4ô ô 49·>±>€C×Ñ˜gÑ&Ô0Ü27·.±.€C×Ñ˜fÑ%Ô/Ü16·±€C×Ñ˜eÑ$Ô.Ø×Ñ˜SÔ!Ø€J÷[ 
!Ñ	 ûôD &ò !Ø “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ð |�b—f‘fô |r   