
    -ji`#                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  \R4                  " 5       (       a  S SKJr  S SKJr  S SKJr  S SKJr  \" \5      r  " S S\5      r! " S S\5      r" " S S\5      r#              S#S jr$          S$S jr% S%SSS.         S&S  jjjr&S'S! jr'S(S" jr(g))    )annotations)Callable)Any)cast)
NamedTuple)CategoricalChoiceType)CategoricalDistribution)
get_logger)_CONSTRAINTS_KEY)Study)FrozenTrial)
TrialState)_imports)_check_plot_args)_filter_nonfinite)_is_log_scale)go)make_subplots)Scatter)COLOR_SCALEc                  f    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S
\S'   S\S'   S\S'   Srg)_SliceSubplotInfo   str
param_name	list[Any]xlist[float]y	list[int]trial_numbersboolis_logis_numericalz
list[bool]constraints(tuple[CategoricalChoiceType, ...] | Nonex_labels N__name__
__module____qualname____firstlineno____annotations____static_attributes__r(       U/home/james-whalen/.local/lib/python3.13/site-packages/optuna/visualization/_slice.pyr   r      s.    OLNL66r0   r   c                  *    \ rS rSr% S\S'   S\S'   Srg)_SlicePlotInfo)   r   target_namezlist[_SliceSubplotInfo]subplotsr(   Nr)   r(   r0   r1   r3   r3   )   s    %%r0   r3   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg	)
_PlotValues.   r   r   r   r   r    r!   r(   Nr)   r(   r0   r1   r8   r8   .   s    LNr0   r8   c                   Uc  SS jnUn[        U/ / / UUU/ S9nU  H  nXR                  ;  a  M  UR                  R                  UR                  U   5        UR                  R                  U" U5      5        UR
                  R                  UR                  5        UR                  R                  [        5      n	UR                  R                  U	S L =(       d    [        U	 V
s/ s H  oS:*  PM	     sn
5      5        M     U$ s  sn
f )Nc                6    [        [        U R                  5      $ N)r   floatvalue)ts    r1   _target(_get_slice_subplot_info.<locals>._target>   s    qww''r0   )r   r   r   r!   r#   r$   r'   r%   g        )r?   r   returnr=   )r   paramsr   appendr   r!   numbersystem_attrsgetr   r%   all)trialsparamtarget	log_scale	numericalr'   r@   	plot_infor?   r%   r   s              r1   _get_slice_subplot_inforO   4   s     ~	( !

	I  188E?+6!9%&&qxx0nn(()9:$$[D%8%`CS^@_S^acS^@_<`a   A`s   'Dc                `   [        XU5        [        U R                  S[        R                  4S9US9n[        U5      S:X  a!  [        R                  S5        [        U/ 5      $ U VVs1 s H%  oUR                  R                  5         H  ofiM     M'     nnn0 nU H1  n	U	R                  R                  5        H  u  pX;  d  M  XU
'   M     M3     0 nUR                  5        H*  u  p[        U[        5      (       d  M  UR                  X'   M,     Uc  [!        U5      nO1U H  nX;  d  M
  [#        SU S35      e   [!        [%        U5      5      n[        UU Vs/ s H>  n['        UUU[)        XO5      [        X   [        5      (       + UR+                  U5      S9PM@     snS	9$ s  snnf s  snf )
NF)deepcopystates)rK   r   z.Your study does not have any completed trials.z
Parameter z does not exist in your study.)rI   rJ   rK   rL   rM   r'   )r5   r6   )r   r   
get_trialsr   COMPLETElen_loggerwarningr3   rC   keysdistributionsitems
isinstancer	   choicessorted
ValueErrorsetrO   r   rG   )studyrC   rK   r5   rI   r?   p_name
all_paramsrY   trialr   distributionr'   sorted_paramsinput_p_namerJ   s                   r1   _get_slice_plot_inforg   Z   s    UK0%1D1D0FGPVF 6{aHIk2.."(G&Qxx}}V&&&JGM(-(;(;(A(A(C$J.,8j) )D 
 H$1$7$7$9 
l$;<<#/#7#7H  %: ~z*"L- :l^;Y!Z[[ # s6{+ '

 ' $'6()=?VWW!e, '

 + H.

s   ),F%AF+
NzObjective Value)rK   r5   c               V    [         R                  " 5         [        [        XX#5      5      $ )a  Plot the parameter relationship as slice plot in a study.

Note that, if a parameter contains missing values, a trial with missing values is not plotted.

Args:
    study:
        A :class:`~optuna.study.Study` object whose trials are plotted for their target values.
    params:
        Parameter list to visualize. The default is all parameters.
    target:
        A function to specify the value to display. If it is :obj:`None` and ``study`` is being
        used for single-objective optimization, the objective values are plotted.

        .. note::
            Specify this argument if ``study`` is being used for multi-objective optimization.
    target_name:
        Target's name to display on the axis label.

Returns:
    A :class:`plotly.graph_objects.Figure` object.
)r   check_get_slice_plotrg   )r`   rC   rK   r5   s       r1   
plot_slicerk      s!    : NN/vSTTr0   c           	     :   [         R                  " SS9n[        U R                  5      S:X  a  [         R                  " / US9$ [        U R                  5      S:X  a  [         R                  " [        U R                  S   5      US9nUR                  U R                  S   R                  S9  UR                  U R                  S9  U R                  S   R                  (       d*  UR                  SSU R                  S   R                  S	9  U$ U R                  S   R                  (       a  UR                  S
S9  U$ [        S[        U R                  5      SS9nUR                  U5        Sn[        U R                  SS9 H  u  pE[        U5      nUS   R!                  SU0S9  U(       a  SnU H  nUR#                  USUS9  M     UR                  UR                  SUS9  US:X  a  UR                  U R                  SUS9  UR                  (       d  UR                  SSUR                  SUS9  M  UR                  (       d  M  UR                  S
SUS9  M     [        U R                  5      S:  a%  UR                  S[        U R                  5      -  S9  U$ )Nz
Slice Plot)titler   )datalayout   )
title_textcategoryarray)typecategoryordercategoryarraylog)rt   T)rowscolsshared_yaxes)start	showscale)markerF)rowcol)rq   r~   r   )rt   ru   rv   r~   r   )rt   r~   r      i,  )width)r   LayoutrU   r6   Figure_generate_slice_subplotupdate_xaxesr   update_yaxesr5   r$   r'   r#   r   update_layout	enumerateupdate	add_trace)inforo   figurer|   column_indexsubplot_infotracer?   s           r1   rj   rj      s`   YY\*F
4==Qyyb00	T]]	q	  7a8H IRXYt}}Q'7'B'BCt'7'78}}Q,,wdmmTUFVF_F_   B M= ]]1$$U+: M7 AC,>TRV$	*3DMM*K&L+L9E!HOOK#;O<!	  | < <+B+B|\q ##t/?/?QL#Y,,###")"."7"7$ $  $$$##A<#H' +L( t}}!  sS-?'? @Mr0   c                `   / n[        / / / 5      n[        / / / 5      n[        U R                  U R                  U R                  U R
                  5       H  u  pEpgUc  US:w  d  Uc  US:w  d  M  U(       aS  UR                  R                  U5        UR                  R                  U5        UR                  R                  U5        Mt  UR                  R                  U5        UR                  R                  U5        M     UR                  [        R                  " UR                  UR                  SSSSS.UR                  [        SSS	S
.S.SS95        [        UR                  5      S:  a>  UR                  [        R                  " UR                  UR                  SSSS0SS95        U$ )NNonemarkerszFeasible Trialg      ?Grey)r   colorTrialg      ?(   )rm   r   xpad)liner   
colorscalecolorbarF)r   r   modenamer}   
showlegendr   zInfeasible Trialr   z#cccccc)r8   zipr   r   r!   r%   rD   r   r   r   rU   )r   r   feasible
infeasibler   r   numcs           r1   r   r      sx   E2r2&HRR(J(B(BLD\D\c =AK1=AK

!!!$

!!!$&&--c2##A&##A& 
LL


jjjj!"%7!//)$		 	
& :<<1JJ,,,,'Y !		
 Lr0   )rI   zlist[FrozenTrial]rJ   r   rK   %Callable[[FrozenTrial], float] | NonerL   r"   rM   r"   r'   r&   rB   r   )
r`   r   rC   list[str] | NonerK   r   r5   r   rB   r3   r<   )
r`   r   rC   r   rK   r   r5   r   rB   'go.Figure')r   r3   rB   r   )r   r   rB   zlist[Scatter]))
__future__r   collections.abcr   typingr   r   r   optuna.distributionsr   r	   optuna.loggingr
   optuna.samplers._baser   optuna.studyr   optuna.trialr   r   $optuna.visualization._plotly_importsr   optuna.visualization._utilsr   r   r   is_successfulr   r   r   r   r*   rV   r   r3   r8   rO   rg   rk   rj   r   r(   r0   r1   <module>r      sT   " $    6 8 % 2  $ # 9 8 9 5 7B<7
X
7
 7&Z &
* ### 2# 	#
 # 7# #L222 22 	2
 2n  $U 59(UUU 2	U
 U UB+\2r0   