
    tKg                         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                  j                  dg d      ej                  j                  d	g d
      d               Zy)zTests for spline filtering.    N)assert_almost_equal)ndimagec                 2    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     d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/ndimage/tests/test_splines.pyget_spline_knot_valuesr   
   s4    cc!f!f"!#K u    c                 >   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 ]M  }t        ||dz   d       D ]7  \  }}|||	|
|z  z   fxx   |z  cc<   || dz
  |	 dz
  |
|z  z
  fxx   |z  cc<   9 O ||z  S )z1Matrix to invert to find the spline coefficients.r   r   r   Nmirror)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/      sq   (/KXXq!fF%k2j))D!$19'1F7G#$.8F7GdN*+.8F7T>7*+ 3 "!nq3{12+?'??Oxt		t		t,TF344S%)*(S1WX)>?OC3S(()Z7)C4!8eVaZ$s(223zA3  @ +
 O##r   r   r   r%   )r   r   r   c                 R   d}t        j                  |t              }t        j                  |d| |      }t        j                  |d| |      }t        || |      }t        |t        j                  ||             t        |t        j                  ||j                               y )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"223Qe8<>"223Qe8<>$QD9FRVV$8&ABRVV$8&((CDr   )r   )__doc__numpyr   pytestnumpy.testingr   scipyr   r   r/   markparametrizer;   r   r   r   <module>rC      sb    !   - 	$@ "45!CD	E E 6	Er   