
    (^i,                       d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dlm	Z	 d dlm
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lmZ d dlmZ d dlmZ d dlmZ  ej8                         r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dd	 	 	 	 	 	 	 	 	 ddZ$	 	 	 	 	 	 ddZ%y)     )annotations)Callable)Sequence)EnumN)cast)
NamedTuple)
get_logger)_CONSTRAINTS_KEY)Study)StudyDirection)FrozenTrial)
TrialState)_imports)_check_plot_args)goc                      e Zd ZdZdZdZy)_ValueStater         N)__name__
__module____qualname__Feasible
Infeasible
Incomplete     k/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/optuna/visualization/_optimization_history.pyr   r      s    HJJr   r   c                  6    e Zd ZU ded<   ded<   ded<   ded<   y	)
_ValuesInfozlist[float]valueszlist[float] | Nonestdsstr
label_namezlist[_ValueState]statesNr   r   r   __annotations__r   r   r   r    r    "   s    
Or   r    c                  ,    e Zd ZU ded<   ded<   ded<   y)_OptimizationHistoryInfoz	list[int]trial_numbersr    values_infoz_ValuesInfo | Nonebest_values_infoNr&   r   r   r   r)   r)   )   s    ((r   r)   c                   t        | ||       t        | t              r| g}nt        |       }g |D ]  } | j	                         }t        |      dk(  r|n| d| j                   }g }g }|D ]  }	|	j                  t        j                  k7  r:|j                  t        d             |j                  t        j                         [|	j                  j                  t               }
|
t#        |
D cg c]  }|dk  	 c}      r |j                  t        j$                         n|j                  t        j&                         ||j                   ||	             |j                  t)        t        |	j*                                |d }ng }| j,                  t.        j0                  k(  ret3        ||      D cg c]%  \  }}|t        j$                  k(  r|n
t        d      ' }}}t        t4        j6                  j9                  |            }net3        ||      D cg c]&  \  }}|t        j$                  k(  r|nt        d       ( }}}t        t4        j:                  j9                  |            }t        |      dk(  rdnd| j                   }t=        |d ||      }j                  t?        |D cg c]  }|j@                   c}t=        |d ||      |              t              d	k(  rtB        jE                  d
       tG        d D              }tG        d D              }||z   d	k(  r%tB        jE                  d       jI                          |sS t              d	k(  rg S |d	k(  rtB        jE                  d       g S D cg c]  }|jJ                  D ]  }|  }}}tM        |      dz   dfd} ||d      \  }}d }| |dd      \  }}t?        |||      gS c c}w c c}}w c c}}w c c}w c c}}w )Nr   z of nang        infz
Best ValuezBest Value of )r*   r+   r,   r   zThere are no studies.c              3     K   | ]7  }|j                   j                  j                  t        j                         9 y wN)r+   r%   countr   r   .0infos     r   	<genexpr>z6_get_optimization_history_info_list.<locals>.<genexpr>p   s2      @D%%k&:&:;   =?c              3     K   | ]7  }|j                   j                  j                  t        j                         9 y wr1   )r+   r%   r2   r   r   r3   s     r   r6   z6_get_optimization_history_info_list.<locals>.<genexpr>s   s2      !BF%%k&<&<=!r7   zThere are no complete trials.zThere are no feasible trials.c                   t              D cg c]  }g  }}t              D cg c]  }g  }}J D ]  \  }}}|r|J |}t        ||j                  |j                        D ]o  \  }}	}
t	        j
                  |	      s@|s(|
t        j                  k(  r||   j                  |	       n|r||   j                  |	       ||   j                  |
       q  g }g }g }g }t              D ]  }t        ||         dkD  rt        j                  ||   v r|j                  t        j                         |j                  |       |j                  t        j                  ||         j                                |j                  t        j                  ||         j                                |j                  t        j                          |t        ||| |      fS c c}w c c}w )Nr   )rangezipr!   r%   mathisinfr   r   appendlennpmeanitemstdr   r    )r$   use_best_value_r!   r%   r*   r+   r,   nvstrial_numbers_unionvalue_statesvalue_means
value_stdsi	info_listmax_num_trials                   r   
_aggregatez7_get_optimization_history_info_list.<locals>._aggregate   s   16}1E$FAR$F$F7<]7K*L!2*L*L$$$<E 
	$8M;(8'333.}k.@.@+BTBTU $1azz!})a;3G3G.Gq	((+'q	((+q	  #$	
	$ *,*,#%"$
}% 	<A6!9~!k&:&:fQi&G##K$8$89#**1-""2776!9#5#:#:#<=!!"&&"3"8"8":;##K$:$:;	< #KZUa$bbb5 %G*Ls
   	G$	G)FT)r$   r#   rD   boolreturnztuple[list[int], _ValuesInfo])'r   
isinstancer   list
get_trialsr?   
study_namestater   COMPLETEr>   floatr   r   system_attrsgetr
   allr   r   r   value	directionr   MINIMIZEr;   r@   minimum
accumulatemaximumr    r)   number_loggerwarningsumclearr*   max)studytargettarget_name	error_barstudiestrialsr$   r!   rJ   trialconstraintsxr,   feasible_best_valuesrG   rH   best_valuesbest_label_nametfeasible_trial_countinfeasible_trial_countr5   rc   all_trial_numbersrP   eb_trial_numberseb_values_infoeb_best_values_inforE   rN   rO   s                                @@r   #_get_optimization_history_info_listr|   /   s    UFK0%'u+02I /
!!#$'LA$5[k]$uO_O_N`;a
 	8E{{j111eEl+##K$:$:;,,001ABK"c[*I18*I&J##K$8$89##K$:$:;!fUm,d5%++67	8  48#% ."9"99 !$FL 9(1 k222AeD($ ( #2::#8#89M#NO !$FL 9(1 k222AuE($ ( #2::#8#89M#NO #G 1HXHXGY7Z   +;o|\$178Aqxx8'j,O!1	
S/
b 9~/0 HQ  ! !JS!  44978 9~	q 78	,5WDDDVDVW&WWW)*Q.Mc< (2+u'E$n.2~!+L$!?$%5~GZ[\\E +J(( 9: Xs   3O0?*O5$+O;;PPzObjective ValueF)rj   rk   rl   c               ^    t        j                          t        | |||      }t        ||      S )a7  Plot optimization history of all trials in a study.

    Args:
        study:
            A :class:`~optuna.study.Study` object whose trials are plotted for their target values.
            You can pass multiple studies if you want to compare those optimization histories.
        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 and the legend.
        error_bar:
            A flag to show the error bar.

    Returns:
        A :class:`plotly.graph_objects.Figure` object.
    )r   checkr|   _get_optimization_history_plot)ri   rj   rk   rl   rN   s        r   plot_optimization_historyr      s,    8 NN3E6;PYZI))[AAr   c                ,   t        j                  dddid|i      }g }| D ]  \  }}}t        ||j                        D cg c]  \  }}|t        j
                  k(  s| }	}}|j                  d }
t        ||j                        D cg c]  \  }}|t        j                  k(  r| }}}g }|D ]   }|j                  |j                  |          " g }|	D ]   }|j                  |j                  |          " nmt        j
                  |j                  v st        j                  |j                  v rt        j                  d       d|j                  dd}
|}|j                  }g }|j                  t        j                  |||
d	|j                  
             |#|j                  t        j                  ||j                  |j                  d             |j                  t        j                   |j                        t        j                   |j                        z   }|j                  t        j                  ||dt#        d      d             t        j                   |j                        t        j                   |j                        z
  }|j                  t        j                  ||dddd             |j                  t        j                  |	||
d	dddid              t        j$                  ||      S c c}}w c c}}w )NzOptimization History PlottitleTrial)r   xaxisyaxisz~Your study contains infeasible trials. In optimization history plot, error bars are calculated for only feasible trial values.dataT)typearrayvisiblemarkers)rq   yerror_ymodenamelines)rq   r   r   r   g{Gz?)widthF)rq   r   r   line
showlegendnonetonextyzrgba(255,0,0,0.2))rq   r   r   r   fill	fillcolorzInfeasible Trialcolorz#cccccc)rq   r   r   r   r   markerr   )r   layout)r   Layoutr;   r%   r   r   r"   r   r>   r!   r   rd   re   Scatterr$   r@   r   dictFigure)rN   rk   r   tracesr*   r+   r,   rF   rH   infeasible_trial_numbersr   numfeasible_trial_numbersfeasible_trial_valuesinfeasible_trial_valuesupperlowers                    r   r   r      s    YY) $F F8A Q
4{$4m[-?-?@$
!QAI_I_D_A$
  $
 #G "-1C1CD&C,,, &" &
 %'!- F%,,[-?-?-DEF&(#/ H'..{/A/A#/FGH &&+*<*<<))[-?-??P
  &0@0@TRG%2"$/$6$6!&(#JJ(' ++	
 'MM

#&--)44 	  $$0!1!8!89BHHEUEZEZ<[[JJ'$!-#( !1!8!89BHHEUEZEZ<[[JJ'##(&"5	 	JJ*)'+ 
	
OQ
d 99&00c$

&s   L
L
L)
ri   Study | Sequence[Study]rj   %Callable[[FrozenTrial], float] | Nonerk   r#   rl   rQ   rR   list[_OptimizationHistoryInfo])
ri   r   rj   r   rk   r#   rl   rQ   rR   'go.Figure')rN   r   rk   r#   rR   r   )&
__future__r   collections.abcr   r   enumr   r<   typingr   r   numpyr@   optuna.loggingr	   optuna.samplers._baser
   optuna.studyr   optuna.study._study_directionr   optuna.trialr   r   $optuna.visualization._plotly_importsr   optuna.visualization._utilsr   is_successfulr   r   rd   r   r    r)   r|   r   r   r   r   r   <module>r      s    " $ $      % 2  8 $ # 9 8 87
X
$ * )z )z]"z]1z] z] 	z]
 $z]@ 59(B"B 2B 	B
 B BD]1-]1]1 ]1r   