
    sh[                     8    S SK rS SKJr  SS jrS rSS jrS rg)    Nc                    ^^^ SSK Jm  SSKJs  Jm  UUU4S jn[        U [        5      (       a-  U  Vs/ s H
  o2" U5      PM     nn[        R                  " U5      $ U" U 5      nU$ s  snf )a&  Render matplotlib figure to numpy format.

Note that this requires the ``matplotlib`` package.

Args:
    figures (matplotlib.pyplot.figure or list of figures): figure or a list of figures
    close (bool): Flag to automatically close the figure

Returns:
    numpy.array: image in [CHW] order
r   Nc                 ~  > T	R                  U 5      nUR                  5         [        R                  " UR	                  5       [        R
                  S9nU R                  R                  5       u  p4UR                  XCS/5      S S 2S S 2SS24   n[        R                  " USSS9nT(       a  TR                  U 5        U$ )Ndtype   r         )sourcedestination)FigureCanvasAggdrawnp
frombufferbuffer_rgbauint8canvasget_width_heightreshapemoveaxisclose)
figurer   datawh	image_hwc	image_chwr   pltplt_backend_aggs
          r/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/utils/tensorboard/_utils.pyrender_to_rgb&figure_to_image.<locals>.render_to_rgb   s     008MM&*<*<*>bhhO}}--/LL!+Aq!A#I6	KK	!C	IIf    )	matplotlib.pyplotpyplotmatplotlib.backends.backend_aggbackendsbackend_agg
isinstancelistr   stack)figuresr   r    r   imagesimager   r   s    `    @@r   figure_to_imager.      s^     $==	 '4  6=>gF-'g>xxg&	 ?s   A'c           
         U R                   u  pp4nU R                  [        R                  :X  a  [        R                  " U 5      S-  n S nU" U R                   S   5      (       de  [        SU R                   S   R                  5       -  U R                   S   -
  5      n[        R                  " U [        R                  " XrX4U4S94SS9n SUR                  5       S-
  S-  -  nU R                   S   U-  n	[        R                  " XXX4U4S9n [        R                  " U S	S
9n [        R                  " XX-  X-  U4S9n U $ )a4  
Convert a 5D tensor into 4D tensor.

Convesrion is done from [batchsize, time(frame), channel(color), height, width]  (5D tensor)
to [time(frame), new_width, new_height, channel] (4D tensor).

A batch of images are spreaded to a grid, which forms a frame.
e.g. Video with batchsize 16 will have a 4x4 grid.
g     o@c                 .    U S:g  =(       a
    X S-
  -  S:H  $ )Nr       )nums    r   	is_power2!_prepare_video.<locals>.is_power28   s    ax4c1Wo!34r"   r   r	   )shape)axisr1   )newshape)r	   r   r   r1      r   )axes)r6   r   r   r   float32int
bit_lengthconcatenatezerosr   	transpose)
Vbtcr   r   r4   len_additionn_rowsn_colss
             r   _prepare_videorH   )   s    GGMA!ww"((JJqME!5 QWWQZ  1
 5 5 77!''!*DENNArxx|a.HIJQRSALLNQ&1,-FWWQZ6!F


11;<A
Q/0A


16:vz1=>AHr"   c           	         [        U [        R                  5      (       d   S5       eU R                  S   S:X  a  [        R                  " X U /S5      n U R
                  S:X  a  U R                  S   S:X  d   eU R                  S   nU R                  S   nU R                  S   n[        X!5      n[        [        R                  " [        U5      U-  5      5      n[        R                  " SX5-  XA-  4U R                  S9nSn[        U5       HB  n[        U5       H0  n	Xr:  a    M  X   US S 2X-  US-   U-  2X-  U	S-   U-  24'   US-   nM2     MD     U$ )Nz*plugin error, should pass numpy array herer1   r   r   r   r	   r   )r(   r   ndarrayr6   r>   ndimminr<   ceilfloatr?   r   range)
IncolsnimgHWnrowsr   iyxs
             r   	make_gridrY   J   s7   a$$R&RR$wwqzQNNA!9a(66Q;1771:?**771:D	
A	
AEde+,-EXXq!)QY/qww?F	A5\uAyBC$F1aeq1uk)15AEQ;+>>?AA	   Mr"   c                 X   [        [        U5      5      [        U5      :X  d
   SU 35       e[        U R                  5      [        U5      :X  d   SU R                   SU 35       eUR                  5       n[        U5      S:X  aO  S Vs/ s H  o!R	                  U5      PM     nnU R                  U5      n[        U5      nUR                  SSS5      $ [        U5      S	:X  a_  S
 Vs/ s H  o!R	                  U5      PM     nnU R                  U5      nUR                  S   S:X  a  [        R                  " XfU/S5      nU$ [        U5      S:X  aL  S Vs/ s H  o!R	                  U5      PM     nnU R                  U5      n [        R                  " X U /S5      n U $ g s  snf s  snf s  snf )NzJYou can not use the same dimension shordhand twice.         input_format: zKsize of input tensor and input format are different.         tensor shape: z, input_format: r   NCHWr1   r	   r   r   HWCHW)
lensetr6   upperfindr@   rY   r   r>   r*   )tensorinput_formatrD   indextensor_NCHW
tensor_CHW
tensor_HWCs          r   convert_to_HWCrh   d   s   s< !S&  c	ST`Sabc  v||!  D
||n$4\NDD   %%'L
<A/56v!""1%v6&&u-{+
##Aq!,,
<A/45u!""1%u5%%e,
A!#(LaPJ
<A/34t!""1%t4!!%(662A6	  7 6 5s   F&F"F')T)   )	numpyr   numpy.typingtypingnptr.   rH   rY   rh   r2   r"   r   <module>rn      s!     DB4r"   