
    Q-jC,                       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	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  ej:                         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)EnumN)cast)
NamedTuple)TYPE_CHECKING)
get_logger)_CONSTRAINTS_KEY)Study)StudyDirection)FrozenTrial)
TrialState)_imports)Callable)Sequence)_check_plot_args)goc                      e Zd ZdZdZdZy)_ValueStater         N)__name__
__module____qualname__Feasible
Infeasible
Incomplete     x/Users/jameslopez/projects/TradingBot25/.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)        d|	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        float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>t   s1      HQ%%k&:&:;	   =?c              3     K   | ]7  }|j                   j                  j                  t        j                         9 y wr3   )r,   r&   r4   r   r   r5   s     r   r8   z6_get_optimization_history_info_list.<locals>.<genexpr>w   s1      !JS$%%k&<&<=)r9   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$F1EAR1E$F7<]7K*L7K!27K*L$$$<E8M;(8'333.}k.@.@+BTBTU1azz!})a;3G3G.Gq	((+'q	((+q	  # V	 =F *,*,#%"$
}%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$   rF   boolreturnztuple[list[int], _ValuesInfo])'r   
isinstancer
   list
get_trialsrA   
study_namestater   COMPLETEr@   r0   r   r   system_attrsgetr	   allr   r   r   value	directionr   MINIMIZEr=   rB   minimum
accumulatemaximumr!   r*   number_loggerwarningsumclearr+   max)studytargettarget_name	error_barstudiestrialsr%   r"   rL   trialconstraintsxr-   feasible_best_valuesrI   rJ   best_valuesbest_label_nametfeasible_trial_countinfeasible_trial_countr7   rd   all_trial_numbersrR   eb_trial_numberseb_values_infoeb_best_values_inforG   rP   rQ   s                                @@r   #_get_optimization_history_info_listr}   3   s    UFK0%'u+02I!!#$'LA$5[k]$uO_O_N`;a
E{{j111eEl+##K$:$:;,,001ABK"c[*I[18[*I&J##K$8$89##K$:$:;!fUm,d7EKK89   48#% ."9"99 !$FL 9( 91 k222AeD 9 % ( #2::#8#89M#NO !$FL 9( 91 k222AuE 9 % ( #2::#8#89M#NO #G 1HXHXGY7Z   +;o|\$178Aqxx8'j,O!1	
S b 9~/0 HQ  ! !JS!  44978 9~	q 78	,5WIDDDVDV&DVIW)*Q.Mc< (2+u'E$n.2~!+L$!?$%5~GZ[\\E +J(( 9: Xs   3O,;*O1 +O77O=PzObjective ValueF)rk   rl   rm   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)rj   rk   rl   rm   rP   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)rr   yerror_ymodenamelines)rr   r   r   r   g{Gz?)widthF)rr   r   r   line
showlegendnonetonextyzrgba(255,0,0,0.2))rr   r   r   r   fill	fillcolorzInfeasible Trialcolorz#cccccc)rr   r   r   r   r   markerr   )r   layout)r   Layoutr=   r&   r   r   r#   r   r@   r"   r   re   rf   Scatterr%   rB   r   dictFigure)rP   rl   r   tracesr+   r,   r-   rH   rJ   infeasible_trial_numbersr   numfeasible_trial_numbersfeasible_trial_valuesinfeasible_trial_valuesupperlowers                    r   r   r      s    YY) $F F8A4{$4m[-?-?@$
@$!QAI_I_D_A@ 	! $
 #G "-1C1CD&DFC,,, D # &
 %'!-%,,[-?-?-DE .&(#/'..{/A/A#/FG 0 &&+*<*<<))[-?-??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 9Bd 99&00c$

&s   L
L
L)
rj   Study | Sequence[Study]rk   %Callable[[FrozenTrial], float] | Nonerl   r$   rm   rS   rT   list[_OptimizationHistoryInfo])
rj   r   rk   r   rl   r$   rm   rS   rT   'go.Figure')rP   r   rl   r$   rT   r   )'
__future__r   enumr   r>   typingr   r   r   numpyrB   optuna.loggingr   optuna.samplers._baser	   optuna.studyr
   optuna.study._study_directionr   optuna.trialr   r   $optuna.visualization._plotly_importsr   collections.abcr   r   optuna.visualization._utilsr   is_successfulr   r   re   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   