
    Ug                         d Z ddlZddlZddlmZ ddlmZ d ZddZ	ej
                            dg d	          ej
                            d
g d          d                         ZdS )zTests for spline filtering.    N)assert_almost_equal)ndimagec                 8    dgdgddgddgg dg dd}||          S )z0Knot values to the right of a B-spline's center.         )   L   r   )B      r   r   r         r       )orderknot_valuess     _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/ndimage/tests/test_splines.pyget_spline_knot_valuesr   
   sA    cc!f!f"ll!kk# #K u    mirrorc                    t          |          }t          j        | | f          }t          |          D ]<\  }}t          j        ||           }|dk    r||||f<   (|||||z
  f<   ||||z
  |f<   =|d         dt          |dd                   z  z   }|dk    rd\  }	}
n*|dk    rd\  }	}
n|d	k    rd
\  }	}
nt          d|           t          t          |          dz
            D ]Z}t          ||dz   d                   D ]=\  }}|||	|
|z  z   fxx         |z  cc<   || dz
  |	 dz
  |
|z  z
  fxx         |z  cc<   >[||z  S )z1Matrix to invert to find the spline coefficients.r   r   r   Nr   )r   r   reflect)r   r   	grid-wrap)r   zunsupported mode )	r   npzeros	enumeratearangesum
ValueErrorrangelen)nr   moder   matrixdiag
knot_valueindicesknot_values_sumstartsteprowidxs                r   make_spline_knot_matrixr/      s   (//KXq!fF%k22 9 9j)D!$$199'1F7G#$$.8F7GdN*+.8F7T>7*++!!nq3{122+?+?'??Oxtt			tt			tt3T33444S%%)** B B(S1WXX)>?? 	B 	BOC3S(()))Z7)))C4!8eVaZ$s(22333zA3333	B O##r   r   r   r%   )r   r   r   c                 Z   d}t          j        |t                    }t          j        |d| |          }t          j        |d| |          }t          || |          }t          |t          j        ||                     t          |t          j        ||j                             d S )Nd   )dtyper   )axisr   r%   r   )r%   )	r   eyefloatr   spline_filter1dr/   r   dotT)r   r%   r$   r4   spline_filter_axis_0spline_filter_axis_1r&   s          r   %test_spline_filter_vs_matrix_solutionr;   6   s     	A
&%
 
 
 C"23Qe8<> > >"23Qe8<> > >$QD999FRV$8&AABBBRV$8&(CCDDDDDr   )r   )__doc__numpyr   pytestnumpy.testingr   scipyr   r   r/   markparametrizer;   r   r   r   <module>rC      s    ! !      - - - - - -      	 	 	$ $ $ $@ "4"4"455!C!C!CDD	E 	E ED 65	E 	E 	Er   