
    
3j$                     j    S SK r S SKJr  S SKJr  S r SS jr SS jr " S S5      r " S	 S
5      r	g)    N)KSAMPLER)trangec                     S/U -  nUS:X  a  [        X5       H  nX5U'   M	     U$ US:X  a&  [        X5       H  nXa-
  X!-
  S-
  -  nX7-  XV'   M     U$ US:X  a'  [        X5       H  nSXa-
  X!-
  S-
  -  -
  nX7-  XV'   M     U$ )Nr   constantlinear_increase   linear_decrease)range)steps
start_timeend_timeeta	eta_trend
eta_valuesiprogresss           b/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-LTXVideo/tricks/nodes/rectified_sampler_nodes.pygenerate_trend_valuesr      s    uJJz,AqM -  
'	'z,A8+@1+DEHNJM -  
'	'z,AANx/Dq/HIIHNJM -     c           	         ^ ^^^^^^ [         R                  " 5       mTR                  U5        [         R                  " 5       SUUU UUUU4S jj5       nU$ )Nc           	        > Tb"  TS    H  nTS   U   R                  5         M     Uc  0 OUnUR                  S0 5      n0 UEnUR                  S0 5      n0 UE[        U5      S-
  STS.EnXS'   XsS'   UR                  5       n	[        R
                  " U	R                  TS9R                  UR                  5      n
[        U5      S-
  nUR                  UR                  S   /5      n[        UTTTT5      n[        XS	9 H  nXS
'   X.   nX.S-      nU R                  R                  R                  R                  X.   5      nX-
  SU-
  -  nSUS'   U " XX.   -  40 UD6nTS:X  aa  SUS'   U	UU-
  S-  U-  -   nUUU-
  S-  -   nU " UUU-  40 UD6nUU-
  UU-
  S-  -  nUX   UU-
  -  -   nU	UU-
  U-  -   SUU-
  S-  -  U-  -   n	OUX   UU-
  -  -   nU	UUU-
  -  -   n	Uc  M  U" XXUS.5        M     U	$ )N	block_mapmodel_optionstransformer_optionsr   forwardtotal_stepssample_mode	attn_bank)	generatorr   disablestepfirst
pred_ordersecond         ?xdenoisedr   sigma	sigma_hat)cleargetlenclonetorchrandnshapetodevicenew_onesr   r   inner_modelmodel_samplingtimestep)modely0sigmas
extra_argscallbackr"   	block_idxr   r   Yy1Ns_ingamma_valuesr   r,   
sigma_nextt_iconditional_vector_fieldpredimg_mid	sigma_midpred_midfirst_orderr   end_stepgammagamma_trendr    order
start_steps                           r   sample_forward*get_sample_forward.<locals>.sample_forward   s    &{3	+&y1779 4 &-R:
";)=)+//0ErJ
!
v;?$"	
 0C+,&3?#HHJ[[I699"))DK!O{{BHHQK=),z8UK
 +A*+'IEAJ##//>>GG	RC(*1s7';$07-&)#'1D  4<#L1zE1Q6==!Z%%71$<<	 $*:IjI'$J4F!3KLlo1ID1PQQ !E)T12Z%/A55CD  lo1ID1PQQ
U 233#QVWA ,H r   NNN)r2   	Generatormanual_seedno_grad)	rO   rR   rN   rP   seedr   rQ   rS   r    s	   ```` `` @r   get_sample_forwardrZ      sE     !I$
]]_= = =~ r   c           	      `   ^ ^^^^^^ [         R                  " 5       SUUUUU UU4S jj5       nU$ )Nc           	        > Uc  0 OUnUR                  S0 5      n0 UEnUR                  S0 5      n0 UE[        U5      S-
  STS.EnXvS'   XcS'   UR                  5       n[        U5      S-
  n	TR                  5       R                  UR                  5      n
U
R                  U
R                  S   /5      n[        U	TTTT5      n[        XS9 GH  nXS'   SU R                  R                  R                  R                  X-   5      -
  nX-   nX-S-      nX-
  SU-
  -  nS	US
'   U " XU-  40 UD6nTS:X  ap  SUS
'   UUU-
  S-  U-  -   nUUU-
  S-  -   nU " UUU-  40 UD6nUU-
  UU-
  S-  -  nU* X   UU-   -  -   nU* X   UU-   -  -   nUUU-
  U-  -   SUU-
  S-  -  U-  -   nOU* X   UU-   -  -   nUUUU-
  -  -   nUc  M  U" UUUX-   X-   S.5        GM     U$ )Nr   r   r   reverser   r   r!   r#   r$   r%   r&   r'   r(   r)   )r/   r0   r1   r5   r6   r7   r4   r   r   r8   r9   r:   )r;   rB   r=   r>   r?   r"   r   r   XrC   r<   rD   r   r   rG   r,   
sigma_prevrH   rI   rJ   rK   rL   rM   controlled_vector_fieldr   r   r   r   latent_imagerQ   r   s                           r   sample_reverse*get_sample_reverse.<locals>.sample_reversef   s   %-R:
";)=)+//0ErJ
!
v;?$"	
 0C+,&3?#HHJK!O!$$RYY/{{BHHQK=)*1j(CS
+A*+'e''33BBKKFIVVCIEAJ(*1s7';$07-4<#-D  4<#L1zE1Q6==!Z%%71$<<	 $*:IjI'$J4F!3KLuz}0H40OPP*lZ],{:.  z)T12UZ/A55CD  ,0%*-,t33 +' /5:3EFF#$%!'%+YK ,^ r   rU   )r2   rX   )ra   r   r   r   r   r   rQ   rb   s   ``````` r   get_sample_reverserd   b   s.     ]]_B B BH r   c                   @    \ rS rSr\S 5       rSrSrSr   S	S jr	Sr
g)
LTXRFForwardODESamplerNode   c                 `    SSSSSS.4SSSS	S
S.4SSSS	S
S.4/ SQ4S.SSSSS.4SSS/4S.S.$ )NFLOATr(                 Y@{Gz?defaultminmaxr#   INTr     r      r	   r   r   )rO   rR   rN   rP   l    )rn   ro   rp   )	ATTN_BANKr$   r&   )rY   r   rQ   requiredoptional ss    r   INPUT_TYPES&LTXRFForwardODESamplerNode.INPUT_TYPES   sx    
  #CtL  %!AdTU&VW"!DRS$TU RT Aa@R ST+"H-/
 	
r   SAMPLERbuild	ltxtricksNc                 8    [        [        UUUUUUUS95      nU4$ )Nr   rQ   )r   rZ   )	selfrO   rR   rN   rP   rY   r   rQ   samplers	            r   r    LTXRFForwardODESamplerNode.build   s5     #

 zr   ry   )r   Nr$   __name__
__module____qualname____firstlineno__classmethodr|   RETURN_TYPESFUNCTIONCATEGORYr   __static_attributes__ry   r   r   rf   rf      s5    
 
$  LHH r   rf   c                   @    \ rS rSr\S 5       rSrSrSr   S	S jr	Sr
g)
LTXRFReverseODESamplerNode   c           
      V    SSSSSSSS.4S	S
S
SSS.4S	SS
SSS.4S./ SQ4SSS/4S.S.$ )N)MODEL)LATENTri   g?rj   rk   rl   rm   rq   r   rr   r      )r;   ra   r   rR   rN   rt   )ATTN_INJr$   r&   )r   attn_injrQ   rv   ry   rz   s    r   r|   &LTXRFReverseODESamplerNode.INPUT_TYPES   so     $ + #CtL  %!AdTU&VW"1TST$UV	 QR)"H-/
 	
r   r~   r   r   Nc	                 p    UR                  S5      n	U	" US   5      n[        [        UUUUUUUS95      n
U
4$ )Nprocess_latent_insamplesr   )get_model_objectr   rd   )r   r;   ra   r   rR   rN   r   r   rQ   r   r   s              r   r    LTXRFReverseODESamplerNode.build   sV     "223FG(i)@A"

 zr   ry   )r   Nr$   r   ry   r   r   r   r      s5    
 
&  LHH r   r   )Nr$   )
r2   comfy.samplersr   tqdmr   r   rZ   rd   rf   r   ry   r   r   <module>r      sD     # & KRGV OVIX/ /d3 3r   