Ë
    þÍ:jô(  ã                  ó*  — d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ e
rd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  ej:                  «       rd dlmZ d dlmZ d dlm Z  d dlm!Z!  ee"«      Z# G d„ de	«      Z$ G d„ de	«      Z% G d„ de	«      Z&	 	 	 	 	 	 	 	 	 	 	 	 	 	 d'd„Z'	 	 	 	 	 	 	 	 	 	 d(d„Z(	 d)dd d!œ	 	 	 	 	 	 	 	 	 d*d"„Z)d+d#„Z*d,d$„Z+	 	 	 	 	 	 d-d%„Z,	 	 	 	 d.d&„Z-y)/é    )Úannotations)Údefaultdict)ÚCallable)ÚAny)Úcast)Ú
NamedTuple)ÚTYPE_CHECKING)ÚCategoricalChoiceType)ÚCategoricalDistribution)Ú
get_logger)Ú_CONSTRAINTS_KEY)Ú
TrialState)Ú_imports)ÚStudy)ÚFrozenTrial)Ú_check_plot_args)Ú_filter_nonfinite)Ú_is_log_scale)Úgo)Úmake_subplots)ÚScatter)ÚCOLOR_SCALEc                  ó^   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   d	ed<   ded<   ded<   y)Ú_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_labelsN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/optuna/visualization/_slice.pyr   r   %   s.   … ØƒOØƒLØƒNØÓØƒLØÓØÓØ6Ô6r/   r   c                  ó"   — e Zd ZU ded<   ded<   y)Ú_SlicePlotInfor   Útarget_namezlist[_SliceSubplotInfo]ÚsubplotsNr)   r.   r/   r0   r2   r2   0   s   … ØÓØ%Ô%r/   r2   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_PlotValuesr   r   r   r    r!   r"   Nr)   r.   r/   r0   r6   r6   5   s   … ØƒLØƒNØÔr/   r6   c           
     ó  — |€dd„}|}t        |g g g |||g ¬«      }| D ]Ù  }||j                  vrŒ|j                  j                  |j                  |   «       |j                  j                   ||«      «       |j
                  j                  |j                  «       |j                  j                  t        «      }	|j                  j                  |	d u xs t        |	D �
cg c]  }
|
dk  ‘Œ	 c}
«      «       ŒÛ |S c c}
w )Nc                ó.   — t        d| j                  «      S )NÚfloat)r   Úvalue)Úts    r0   Ú_targetz(_get_slice_subplot_info.<locals>._targetE   s   € Ü˜ §¡Ó)Ð)r/   )r   r   r    r"   r$   r%   r(   r&   g        )r;   r   Úreturnr9   )r   Úparamsr   Úappendr    r"   ÚnumberÚsystem_attrsÚgetr   r&   Úall)ÚtrialsÚparamÚtargetÚ	log_scaleÚ	numericalr(   r<   Ú	plot_infor;   r&   r   s              r0   Ú_get_slice_subplot_inforJ   ;   sø   € ð €~ó	*ð ˆä!ØØ
Ø
ØØØØØô	€Ið ò bˆØ˜Ÿ™Ñ ØØ�‰×Ñ˜1Ÿ8™8 E™?Ô+Ø�‰×Ñ™6 !›9Ô%Ø×Ñ×&Ñ& q§x¡xÔ0Ø—n‘n×(Ñ(Ô)9Ó:ˆØ×Ñ×$Ñ$ [°DÐ%8Ò%`¼CÐS^Ö@_ÈaÀÀcÃÒ@_Ó<`Õaðbð Ðùò A`s   Ã!C<c                óJ  — t        | ||«       t        | j                  dt        j                  f¬«      |¬«      }t        |«      dk(  r!t        j                  d«       t        |g «      S |D ��ch c]#  }|j                  j                  «       D ]  }|’Œ Œ% }}}i }|D ].  }	|	j                  j                  «       D ]  \  }
}|
|vsŒ|||
<   Œ Œ0 i }|j                  «       D ]%  \  }
}t        |t        «      sŒ|j                  ||
<   Œ' |€t!        |«      }n.|D ]  }||vsŒt#        d|› d�«      ‚ t!        t%        |«      «      }t        ||D �cg c]>  }t'        |||t)        ||«      t        ||   t        «       |j+                  |«      ¬«      ‘Œ@ c}¬	«      S c c}}w c c}w )
NF)ÚdeepcopyÚstates)rF   r   z.Your study does not have any completed trials.z
Parameter z does not exist in your study.)rD   rE   rF   rG   rH   r(   )r3   r4   )r   r   Ú
get_trialsr   ÚCOMPLETEÚlenÚ_loggerÚwarningr2   r>   ÚkeysÚdistributionsÚitemsÚ
isinstancer   ÚchoicesÚsortedÚ
ValueErrorÚsetrJ   r   rB   )Ústudyr>   rF   r3   rD   r;   Úp_nameÚ
all_paramsrT   Útrialr   Údistributionr(   Úsorted_paramsÚinput_p_namerE   s                   r0   Ú_get_slice_plot_inforb   a   sÍ  € ô �U˜F KÔ0äØ×Ñ %´×1DÑ1DÐ0FÐÓGÐPVô€Fô ˆ6ƒ{�aÒÜ�‰ÐHÔIÜ˜k¨2Ó.Ð.à"(×G˜Q°q·x±x·}±}³ÒG¨V’&ÐG�&ÐG€JÑGà€MØò 9ˆØ(-×(;Ñ(;×(AÑ(AÓ(Cò 	9Ñ$ˆJ˜Ø Ò.Ø,8�˜jÒ)ñ	9ð9ð
 €HØ$1×$7Ñ$7Ó$9ò 8Ñ ˆ
�LÜ�lÔ$;Õ<Ø#/×#7Ñ#7ˆH�ZÒ ð8ð €~Ü˜zÓ*‰à"ò 	\ˆLØ :Ò-Ü  :¨l¨^Ð;YÐ!ZÓ[Ð[ð	\ô œs 6›{Ó+ˆäØð 'ö

ð ô $ØØØÜ'¨°Ó6Ü(¨°uÑ)=Ô?VÓWÐWØ!Ÿ™ eÓ,öò

ôð ùó+ Hùò.

s   Á/(FÅAF 
NzObjective Value)rF   r3   c               óX   — t        j                  «        t        t        | |||«      «      S )aN  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_plotrb   )r[   r>   rF   r3   s       r0   Ú
plot_slicerf   –   s%   € ô: ‡N�NÔÜÔ/°°v¸vÀ{ÓSÓTÐTr/   c                ót  — t        j                  d¬«      }t        | j                  «      dk(  rt        j                  g |¬«      S t        | j                  «      dk(  rît        j                  t        | j                  d   «      |¬«      }|j                  | j                  d   j                  ¬«       |j                  | j                  ¬«       | j                  d   j                  s6|j                  ddt        | j                  d   j                  «      ¬	«       |S | j                  d   j                  r|j                  d
¬«       |S t        dt        | j                  «      d¬«      }|j                  |«       d}t!        | j                  d¬«      D ]Þ  \  }}t        |«      }|d   j#                  d|i¬«       |rd}|D ]  }|j%                  |d|¬«       Œ |j                  |j                  d|¬«       |dk(  r|j                  | j                  d|¬«       |j                  s*|j                  ddt        |j                  «      d|¬«       Œ¾|j                  sŒË|j                  d
d|¬«       Œà t        | j                  «      dkD  r(|j                  dt        | j                  «      z  ¬«       |S )Nz
Slice Plot)Útitler   )ÚdataÚlayouté   )Ú
title_textÚcategoryÚarray)ÚtypeÚcategoryorderÚcategoryarrayÚlog)ro   T)ÚrowsÚcolsÚshared_yaxes)ÚstartÚ	showscale)ÚmarkerF)ÚrowÚcol)rl   ry   rz   )ro   rp   rq   ry   rz   )ro   ry   rz   é   i,  )Úwidth)r   ÚLayoutrP   r4   ÚFigureÚ_generate_slice_subplotÚupdate_xaxesr   Úupdate_yaxesr3   r%   Ú_get_categorical_labelsr(   r$   r   Úupdate_layoutÚ	enumerateÚupdateÚ	add_trace)Úinforj   Úfigurerw   Úcolumn_indexÚsubplot_infoÚtracer;   s           r0   re   re   ·   su  € Ü�Y‰Y˜\Ô*€Fä
ˆ4�=‰=Ó˜QÒÜ�y‰y˜b¨Ô0Ð0Ü	ˆT�]‰]Ó	˜qÒ	 Ü—‘Ô 7¸¿¹ÀaÑ8HÓ IÐRXÔYˆØ×Ñ t§}¡}°QÑ'7×'BÑ'BÐÔCØ×Ñ t×'7Ñ'7ÐÔ8Ø�}‰}˜QÑ×,Ò,Ø×ÑØØ%Ü5°d·m±mÀAÑ6F×6OÑ6OÓPð  ô ðF €Mð= �]‰]˜1Ñ×$Ò$Ø×Ñ UÐÔ+ð: €Mô7  A¬C°·±Ó,>ÈTÔRˆØ×Ñ˜VÔ$Øˆ	Ü*3°D·M±MÈÔ*Kò 	IÑ&ˆL˜,Ü+¨LÓ9ˆEØ�!‰H�O‰O K°Ð#;ˆOÔ<ÙØ!�	Øò =�Ø× Ñ  ¨¨|Ð Õ<ð=à×Ñ¨<×+BÑ+BÈÈ|ÐÔ\Ø˜qÒ Ø×#Ñ#¨t×/?Ñ/?ÀQÈLÐ#ÔYØ×,Ò,Ø×#Ñ#Ø#Ø")Ü"9¸,×:OÑ:OÓ"PØØ$ð $õ ð ×$Ó$Ø×#Ñ#¨°A¸<Ð#ÕHð'	Iô( ˆt�}‰}Ó Ò!à× Ñ  s¬S°·±Ó-?Ñ'?Ð Ô@à€Mr/   c                óª  — g }t        g g g «      }t        g g g «      }t        | j                  | j                  | j                  | j
                  «      D ]   \  }}}}| j                  r|€Œ|rR|j                  j                  |«       |j                  j                  |«       |j                  j                  |«       Œk|j                  j                  |«       |j                  j                  |«       Œ¢ | j                  r=|j                  }|j                  }	|j                  }
|j                  }|j                  }n t        | |«      \  }}	}
t        | |«      \  }}}|j                  t        j                  ||	dddddœ|
t        dddd	œd
œd¬«      «       t        |«      dkD  r,|j                  t        j                  ||ddddid¬«      «       |S )NÚmarkerszFeasible Trialg      à?ÚGrey)r|   ÚcolorÚTrialg      ð?é(   )rh   r   Úxpad)Úliner�   Ú
colorscaleÚcolorbarF)r   r    ÚmodeÚnamerx   Ú
showlegendr   zInfeasible Trialr�   z#cccccc)r6   Úzipr   r    r"   r&   r%   r?   Ú_get_categorical_plot_valuesr   r   r   rP   )rŠ   r‹   ÚfeasibleÚ
infeasibler   r    ÚnumÚcÚ
feasible_xÚ
feasible_yÚ
feasible_cÚinfeasible_xÚinfeasible_yÚ_s                 r0   r   r   ç   sÂ  € Ø€Eä˜2˜r 2Ó&€HÜ˜R  RÓ(€JäØ�‰˜Ÿ™¨×(BÑ(BÀL×D\ÑD\óò #‰ˆˆ1ˆc�1ð ×$Ò$¨¨ØÙØ�J‰J×Ñ˜aÔ Ø�J‰J×Ñ˜aÔ Ø×"Ñ"×)Ñ)¨#Õ.à�L‰L×Ñ Ô"Ø�L‰L×Ñ Õ"ð#ð × Ò Ø—Z‘Zˆ
Ø—Z‘Zˆ
Ø×+Ñ+ˆ
Ø!—|‘|ˆØ!—|‘|‰ä-IÈ,ÐX`Ó-aÑ*ˆ
�J 
Ü(DÀ\ÐS]Ó(^Ñ%ˆ�l Aà	‡L�LÜ
�
‰
ØØØØ!à"%°Ñ7Ø#Ü)à$ØØññ		ð ô	
ôô& ˆ<Ó˜1ÒØ�‰Ü�J‰JØØØØ'à˜Yðð !ô	ô	
ð €Lr/   c                óš  — | j                   €J ‚g }g }g }t        t        «      }t        |j                  |j
                  |j                  «      D ]  \  }}}||   j                  ||f«       Œ | j                   D ]K  }	||	   D ]A  \  }}|j                  t        |	«      «       |j                  |«       |j                  |«       ŒC ŒM |||fS ©N)	r(   r   Úlistr™   r   r    r"   r?   Úrepr)
rŠ   ÚvaluesÚvalue_xÚvalue_yÚvalue_cÚpoints_dictr   r    r@   Úx_labels
             r0   rš   rš   (  sÕ   € ð × Ñ Ð,Ð,Ð,Ø€GØ€GØ€GÜœdÓ#€KÜ˜FŸH™H f§h¡h°×0DÑ0DÓEò +‰ˆˆ1ˆfØ�A‰×Ñ˜q &˜kÕ*ð+à×(Ñ(ò #ˆØ$ WÑ-ò 	#‰IˆAˆvØ�N‰Nœ4 ›=Ô)Ø�N‰N˜1ÔØ�N‰N˜6Õ"ñ	#ð#ð
 �G˜WÐ$Ð$r/   c                óD   — | €y | D �cg c]  }t        |«      ‘Œ c}S c c}w r¦   )r¨   )r(   r®   s     r0   r‚   r‚   :  s%   € ð ÐØØ)1Ö2˜gŒD��MÒ2Ð2ùÒ2s   ˆ)rD   zlist[FrozenTrial]rE   r   rF   ú%Callable[[FrozenTrial], float] | NonerG   r#   rH   r#   r(   r'   r=   r   )
r[   r   r>   úlist[str] | NonerF   r°   r3   r   r=   r2   r¦   )
r[   r   r>   r±   rF   r°   r3   r   r=   ú'go.Figure')r‡   r2   r=   r²   )rŠ   r   r=   zlist[Scatter])rŠ   r   r©   r6   r=   z(tuple[list[Any], list[float], list[int]])r(   r'   r=   r±   ).Ú
__future__r   Úcollectionsr   Úcollections.abcr   Útypingr   r   r   r	   Úoptuna.distributionsr
   r   Úoptuna.loggingr   Úoptuna.samplers._baser   Úoptuna.trialr   Ú$optuna.visualization._plotly_importsr   Úoptuna.studyr   r   Úoptuna.visualization._utilsr   r   r   Úis_successfulr   r   r   r   r*   rQ   r   r2   r6   rJ   rb   rf   re   r   rš   r‚   r.   r/   r0   ú<module>r¿      s”  ðÝ "å #Ý $Ý Ý Ý Ý  å 6Ý 8Ý %Ý 2Ý #Ý 9ñ Ý(å"Ý(Ý 8Ý 9Ý 5ð €8×ÑÔÝ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-ó`>ðB%Ø#ð%Ø-8ð%à-ó%ð$3Ø6ð3àô3r/   