
    RЦi	                     0    S r SSKrSSKJr   " S S5      rg)zInterpolation helpers for timm layers

RegularGridInterpolator from https://github.com/sbarratt/torch_interpolations
Copyright Shane Barratt, Apache 2.0 license
    N)productc                   $    \ rS rSrSrS rS rSrg)RegularGridInterpolator
   zInterpolate data defined on a rectilinear grid with even or uneven spacing.
Produces similar results to scipy RegularGridInterpolator or interp2d
in 'linear' mode.

Taken from https://github.com/sbarratt/torch_interpolations
c                    Xl         X l        [        U R                   [        5      (       d!  [        U R                   [        5      (       d   e[        U R                  [
        R                  5      (       d   e[	        U R                  R                  5      U l        [        U R                   5      U l
        [        U R                  5      U R                  :X  d   e[        U R                   5       HR  u  p4[        U[
        R                  5      (       d   eUR                  S   U R                  R                  U   :X  a  MR   e   g )Nr   )pointsvalues
isinstancetuplelisttorchTensorshapemslenn	enumerate)selfr   r	   ips        V/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/interpolate.py__init__ RegularGridInterpolator.__init__   s    $++u--DKK1N1NNN$++u||4444t{{(()T[[!477|tvv%%%dkk*DAa....771:!2!21!5555 +    c                 t   U R                   c   eU R                  c   e[        U5      [        U R                   5      :X  d   eUS   R                  S   nU H  nUR                  S   U:X  a  M   e   / n/ n/ n[	        U R                   U5       H  u  ps[
        R                  " X75      nUR                  S   S-
  XUR                  S   :  '   US-
  R                  SUR                  S   S-
  5      n	X7U	   -
  n
Xx   U-
  nSXS:  '   SXS:  '   U
S:H  US:H  -  nS=X'   X'   UR                  X45        UR                  X45        UR                  X-   5        M     Sn[        SS/U R                  S9 H  n[	        X5       VVs/ s H  u  nnUU   PM     nnn[	        X5       VVs/ s H  u  nnUSU-
     PM     nnnXR                  U   [
        R                  " [
        R                  " U5      SS9-  -  nM     [
        R                  " [
        R                  " U5      SS9nUU-  $ s  snnf s  snnf )Nr      g        g      ?)repeat)dim)r   r	   r   r   zipr   	bucketizeclampappendr   r   prodstack)r   points_to_interpKxidxsdistsoverallsr   	idx_rightidx_left	dist_left
dist_right	both_zero	numeratorindexeronoffidxas_sdistbs_sdenominators                        r   __call__ RegularGridInterpolator.__call__"   s2   {{&&&{{&&&#$DKK(8888Q%%a(!A771:?"? " %56DA-I12aI1771:-.!A,,Q
Q?HhKI)J')I!m$)+JA~&"aJ!O<I;==I :#8KK-.LL)01OOI23 7 	1vdff5G14W1CD1C:5#CJ1CDD7:77JK7JtDUO7JDKT*

5;;t,!45 5I 6
 jjX!6A>;&& EKs   H.)H4)r   r   r   r	   N)__name__
__module____qualname____firstlineno____doc__r   r8   __static_attributes__ r   r   r   r   
   s    6 "'r   r   )r>   r   	itertoolsr   r   r@   r   r   <module>rB      s   
  :' :'r   