o
    i	                     @   s   d dl Zd dlZd dlmZ d dlmZmZ dd Zg dg dg dd	Z	G d
d dej
ZG dd deZdefddZdS )    N)override)ComfyExtensionioc                 C   s^   t ddt| }t | ddd }t dd|}t |||}t |ddd  }|S )zS
    Performs log-linear interpolation of a given array of decreasing numbers.
    r      N)nplinspacelenloginterpexpcopy)t_steps	num_stepsxsysnew_xsnew_ysinterped_ys r   =/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_optimalsteps.pyloglinear_interp
   s   r   )g?gQkw?g$(~k?333333?gx?gTN?gX5;N?g?ܵ?g3ı.n?g-?MbP?)      ?gCl?gףp=
?g-?gʡE?gS?g/$?Q?g\(\?r   A`"?`"?gQ?gʡE?gDl?gw/?gS?gE?gsh|??g9v?r   ))gX9v?gGz?gV-?r   gCl?gK?r   r   gn?g"~?gV-?gn?gMbX?g?gx&1?g~jt?g9v?gDl?gS㥛?g1Zd?gGz?gy&1?g^I+?g?gx&1?gw/?g|?5^?gQ?gCl?gHzG?gV-?gFx?goʡ?gM?gQ?gB`"۹?g/$?gQ?gV-?g~jt?r   FLUXWanChromac                   @   s,   e Zd Zedd ZedejfddZdS )OptimalStepsSchedulerc                 C   sR   t jddt jjdg ddt jjdddd	d
t jjddddddgt j gdS )Nr"   z#sampling/custom_sampling/schedulers
model_typer   )optionssteps      i  )defaultminmaxdenoiser           g{Gz?)r(   r)   r*   step)node_idcategoryinputsoutputs)r   SchemaComboInputIntFloatSigmasOutput)clsr   r   r   define_schema   s   z#OptimalStepsScheduler.define_schemareturnc                 C   s   |}|dk r|dkrt tg S t|| }t| d d  }|d t|kr/t||d }||d  d  }d|d< t t|S )Nr   r,   r   r   r   )r   
NodeOutputtorchFloatTensorroundNOISE_LEVELSr	   r   )r9   r#   r%   r+   total_stepssigmasr   r   r   execute-   s   zOptimalStepsScheduler.executeN)__name__
__module____qualname__classmethodr:   r   r<   rC   r   r   r   r   r"      s
    
r"   c                   @   s(   e Zd Zedeeej  fddZdS )OptimalStepsExtensionr;   c                    s   t gS N)r"   )selfr   r   r   get_node_list?   s   z#OptimalStepsExtension.get_node_listN)	rD   rE   rF   r   listtyper   	ComfyNoderK   r   r   r   r   rH   >   s    rH   r;   c                      s   t  S rI   )rH   r   r   r   r   comfy_entrypointF   s   rO   )numpyr   r=   typing_extensionsr   comfy_api.latestr   r   r   r@   rN   r"   rH   rO   r   r   r   r   <module>   s   !