a
    BCCf                     @   s   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	Z	d dl	m
Z d dlmZ ddlmZ dZdddd	d
ddZG dd dZdd ZdS )    N)assert_assert_equalassert_array_equalassert_array_almost_equalassert_allclosesuppress_warnings)raises   )types-q=reflectZ	symmetricwrapedgeconstant)mirrorr   grid-mirror	grid-wrapnearestgrid-constantc                   @   s  e Zd Zejddg dfdg dfdg dfdg d	fd
g dfdg dfdg dfgdd Zejddg dfdg dfdg dfdg dfd
g dfdg dfdg dfgdd Zejdg dejdeddd Z	ejdeddejd e
d!d" Zejdeddejd e
d#d$ Zejdeddejd e
d%d& Zejdeddejd e
d'd( Zejdeddejd e
d)d* Zejded+dd,d- Zejded+dd.d/ Zejded+dd0d1 Zejded+dd2d3 Zejded+dejd ejejgd4d5 Zejded+dd6d7 Zejded+dd8d9 Zejded+dd:d; Zejded+dd<d= Zejded+dd>d? Zejded+dd@dA Zejded+ddBdC Zejded+ddDdE Zejded+ddFdG Z ejded+ddHdI Z!ejded+ddJdK Z"ejded+ddLdM Z#ejded+ddNdO Z$ejded+ddPdQ Z%ejded+ddRdS Z&ejded+ddTdU Z'dVdW Z(ejdg dXejdeddYdZ Z)d[d\ Z*d]d^ Z+ejded+dejd ejejgd_d` Z,ejded+ddadb Z-dcdd Z.dedf Z/dgdh Z0ejj1die2j3v pe4d+j5djk dkdldmdn Z6ejded+ddodp Z7ejded+ddqdr Z8ejded+ddsdt Z9ejded+ddudv Z:ejded+dejd ejejgdwdx Z;ejded+ddydz Z<ejded+dd{d| Z=ejded+dd}d~ Z>ejded+ddd Z?ejded+ddd Z@ejded+ddd ZAejded+ddd ZBejded+ddd ZCejded+ddd ZDejded+ddd ZEejded+ddd ZFejded+ddd ZGejded+ddd ZHejded+ddd ZIejded+ddd ZJejded+ddd ZKejded+ddd ZLejded+ddd ZMejded+ddd ZNejded+ddd ZOejded+ddd ZPdd ZQdd ZRdd ZSdd ZTdd ZUejdg dejded+ddd ZVejded+ddd ZWejded+ddd ZXejded+ddd ZYejded+ddd ZZejded+ddd Z[ejded+dejd ejejgdd Z\ejded+dejdddgejd ejejgdd Z]ejded+ddd Z^ejded+ddd Z_ejded+dddĄ Z`ejded+dddƄ Zaejdg dejded+dddȄ Zbejdg dejded+dddʄ Zcdd̄ Zdejded+ddd΄ Zeejded+dejdddgddӄ Zfejdg dXejdedddՄ Zgejded+dddׄ Zhddل Ziddۄ Zjejded+dejd ejejgdd݄ Zkdd߄ Zldd Zmdd Znejdg dejdg ddd Zoejdddgejdg dejdg ddd Zpejdddgdd Zqejded+ddd Zrejded+ddd Zsejded+dejd ejejgdd Ztejded+ddd Zuejded+ddd Zvejded+ddd Zwejded+ddd Zxejded+ddd  Zydd Zzdd Z{dd Z|dS (  TestNdimageInterpolationzmode, expected_valuer   )      ?      @      @   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   c              
   C   s6   dd }t g d}t|tj||d|ddd d S )Nc                 S   s   | d d fS )Nr         ? xr   r   b/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/ndimage/tests/test_interpolation.pyshift&   s    z7TestNdimageInterpolation.test_boundaries.<locals>.shift)r	               @r   )   r	   )cvalmodeoutput_shapeordernumpyarrayr   ndimagegeometric_transformselfr&   Zexpected_valuer    datar   r   r   test_boundaries   s    z(TestNdimageInterpolation.test_boundaries)r	   r	   r!   r"   )r"   r	   r!   r"   )r   r	   r!   r"   )r!   r	   r!   r"   )r   r	   r!   r"   c              	   C   s4   dd }t g d}t|tj||d|dd d S )Nc                 S   s   | d d fS )Nr   g?r   r   r   r   r   r    :   s    z8TestNdimageInterpolation.test_boundaries2.<locals>.shiftr	   r!   r"   r   r   r   )r%   r&   r'   r)   r.   r   r   r   test_boundaries2/   s    z)TestNdimageInterpolation.test_boundaries2r&   )r   r   r   r   r   r   r(      c                 C   s   t jddtd}t jdddd}tj||g||d}d	}t|}t j|||d
}tj||| g||d}	|dkrvdnd}
t	||	d|
d dS )z$Tests based on examples from gh-2640ir$   dtypei   i  )numr(   r&       r&   r   gh㈵>r   Hz>)rtolatolN)
r*   arangefloatZlinspacer,   map_coordinatesndimage_to_numpy_modegetpadr   )r/   r&   r(   r0   r   ynpadpad_modepaddedexpectedr?   r   r   r   test_boundary_spline_accuracyC   s    
z6TestNdimageInterpolation.test_boundary_spline_accuracyr!   r7   c                 C   s(   t g |}tj||d}t|d d S )Nr(   r	   r*   onesr,   spline_filterr   r/   r7   r(   r0   outr   r   r   test_spline01W   s    z&TestNdimageInterpolation.test_spline01c                 C   s,   t dg|}tj||d}t|dg d S Nr	   rL   )r*   r+   r,   rO   r   rP   r   r   r   test_spline02^   s    z&TestNdimageInterpolation.test_spline02c                 C   s*   t g |}tj|||d}t|d d S )Noutputr	   rM   rP   r   r   r   test_spline03e   s    z&TestNdimageInterpolation.test_spline03c                 C   s,   t dg|}t||}t|g d d S )Nr   r	   r	   r	   r	   rM   rP   r   r   r   test_spline04l   s    z&TestNdimageInterpolation.test_spline04c                 C   sD   t ddg|}tj||d}t|g dg dg dg dg d S )Nr   rL   rX   rM   rP   r   r   r   test_spline05s   s    
z&TestNdimageInterpolation.test_spline05r   c                 C   s8   t dg}dd }tj|||j|d}t|dg d S )Nr	   c                 S   s   | S Nr   r   r   r   r   mapping   s    zDTestNdimageInterpolation.test_geometric_transform01.<locals>.mappingrL   r*   r+   r,   r-   shaper   r/   r(   r0   r\   rQ   r   r   r   test_geometric_transform01}   s    z3TestNdimageInterpolation.test_geometric_transform01c                 C   s:   t dg}dd }tj|||j|d}t|g d d S )Nr   c                 S   s   | S r[   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform02.<locals>.mappingrL   rX   r*   rN   r,   r-   r^   r   r_   r   r   r   test_geometric_transform02   s    z3TestNdimageInterpolation.test_geometric_transform02c                 C   s:   t dg}dd }tj|||j|d}t|g d d S )Nr   c                 S   s   | d d fS Nr   r	   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform03.<locals>.mappingrL   r   r	   r	   r	   ra   r_   r   r   r   test_geometric_transform03   s    z3TestNdimageInterpolation.test_geometric_transform03c                 C   s<   t g d}dd }tj|||j|d}t|g d d S )Nr   r	   r"   r!   c                 S   s   | d d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform04.<locals>.mappingrL   r   r   r	   r"   r]   r_   r   r   r   test_geometric_transform04   s    z3TestNdimageInterpolation.test_geometric_transform04c                 C   s   t jg dg dg dg|d}t jg dg dg dg|d}|jjdkrd|d| 8 }|d| 8 }dd }tj|||j|d}t|| d S )	NrX   r6   rd   c              ?c                 S   s   | d | d d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform05.<locals>.mappingrL   )r*   r+   r7   kindr,   r-   r^   r   )r/   r(   r7   r0   rJ   r\   rQ   r   r   r   test_geometric_transform05   s(    

z3TestNdimageInterpolation.test_geometric_transform05c                 C   sX   t g dg dg dg}dd }tj|||j|d}t|g dg dg d	g d S )
Nrf   r$   r5         r"   ro   r"   r5   c                 S   s   | d | d d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform06.<locals>.mappingrL   rg   r   r$   r5   rn   r   r"   ro   r"   r]   r_   r   r   r   test_geometric_transform06   s    

z3TestNdimageInterpolation.test_geometric_transform06c                 C   sX   t g dg dg dg}dd }tj|||j|d}t|g dg dg dg d S )Nrf   rm   rp   c                 S   s   | d d | d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform07.<locals>.mappingrL   r   r   r   r   r]   r_   r   r   r   test_geometric_transform07   s    

z3TestNdimageInterpolation.test_geometric_transform07c                 C   sX   t g dg dg dg}dd }tj|||j|d}t|g dg dg d	g d S )
Nrf   rm   rp   c                 S   s   | d d | d d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform08.<locals>.mappingrL   rt   rg   rq   r]   r_   r   r   r   test_geometric_transform08   s    

z3TestNdimageInterpolation.test_geometric_transform08c                 C   sv   t g dg dg dg}dd }|dkr<tj||d}n|}tj|||j|dd	}t|g d
g dg dg d S )Nrf   rm   rp   c                 S   s   | d d | d d fS rc   r   r   r   r   r   r\      s    zDTestNdimageInterpolation.test_geometric_transform10.<locals>.mappingr	   rL   Fr(   	prefilterrt   rg   rq   )r*   r+   r,   rO   r-   r^   r   )r/   r(   r0   r\   filteredrQ   r   r   r   test_geometric_transform10   s    

z3TestNdimageInterpolation.test_geometric_transform10c                 C   s>   t dgt j}dd }tj||dg|d}t|g d d S )Nr!   c                 S   s   | d d fS Nr   r!   r   r   r   r   r   r\     s    zDTestNdimageInterpolation.test_geometric_transform13.<locals>.mappingr   rL   rX   )r*   rN   float64r,   r-   r   r_   r   r   r   test_geometric_transform13   s    z3TestNdimageInterpolation.test_geometric_transform13c                 C   s6   g d}dd }t j||dg|d}t|g d d S )Nr	   ro   r!   r5   r"   r$   r   r   c                 S   s   d| d  fS )Nr!   r   r   r   r   r   r   r\     s    zDTestNdimageInterpolation.test_geometric_transform14.<locals>.mappingr   rL   r2   r,   r-   r   r_   r   r   r   test_geometric_transform14  s    z3TestNdimageInterpolation.test_geometric_transform14c                 C   s@   g d}dd }t j||dg|d}t|d d d g d d S )Nr2   c                 S   s   | d d fS r{   r   r   r   r   r   r\     s    zDTestNdimageInterpolation.test_geometric_transform15.<locals>.mappingrn   rL   r!   r   r_   r   r   r   test_geometric_transform15  s    z3TestNdimageInterpolation.test_geometric_transform15c                 C   sP   g dg dg dg}dd }t j||d|d}t|dd	gd
dgddgg d S )Nr2   ro   r5   r$   rn   g      "@
         c                 S   s   | d | d d fS Nr   r	   r!   r   r   r   r   r   r\   !  s    zDTestNdimageInterpolation.test_geometric_transform16.<locals>.mappingr"   r!   rL   r	   r"   ro   r$   	   r   r   r_   r   r   r   test_geometric_transform16  s    
z3TestNdimageInterpolation.test_geometric_transform16c                 C   sD   g dg dg dg}dd }t j||d|d}t|g dg d S )Nr2   r   r   r   r   r   c                 S   s   | d d | d fS Nr   r!   r	   r   r   r   r   r   r\   .  s    zDTestNdimageInterpolation.test_geometric_transform17.<locals>.mappingr	   r   rL   r   r_   r   r   r   test_geometric_transform17(  s    
z3TestNdimageInterpolation.test_geometric_transform17c                 C   sD   g dg dg dg}dd }t j||d|d}t|dd	gg d S )
Nr2   r   r   c                 S   s   | d d | d d fS r   r   r   r   r   r   r\   ;  s    zDTestNdimageInterpolation.test_geometric_transform18.<locals>.mappingr	   r!   rL   r	   r"   r   r_   r   r   r   test_geometric_transform185  s    
z3TestNdimageInterpolation.test_geometric_transform18c                 C   sL   g dg dg dg}dd }t j||d|d}t|dd d d	f | d S )
Nr2   r   r   c                 S   s   | d | d d fS r   r   r   r   r   r   r\   H  s    zDTestNdimageInterpolation.test_geometric_transform19.<locals>.mappingr"   rn   rL   .r!   r   r_   r   r   r   test_geometric_transform19B  s    
z3TestNdimageInterpolation.test_geometric_transform19c                 C   sL   g dg dg dg}dd }t j||d|d}t|d d dd	f | d S )
Nr2   r   r   c                 S   s   | d d | d fS r   r   r   r   r   r   r\   U  s    zDTestNdimageInterpolation.test_geometric_transform20.<locals>.mappingr5   r   rL   r!   .r   r_   r   r   r   test_geometric_transform20O  s    
z3TestNdimageInterpolation.test_geometric_transform20c                 C   sR   g dg dg dg}dd }t j||d|d}t|d d dd d df | d S )	Nr2   r   r   c                 S   s   | d d | d d fS r   r   r   r   r   r   r\   b  s    zDTestNdimageInterpolation.test_geometric_transform21.<locals>.mappingr5   rn   rL   r!   r   r_   r   r   r   test_geometric_transform21\  s    
z3TestNdimageInterpolation.test_geometric_transform21c                 C   sb   t g dg dg dgt j}dd }dd }tj||d|d	}tj||d
|d	}t|| d S )Nr2   r   r   c                 S   s   | d d | d d fS r   r   r   r   r   r   mapping1o  s    zETestNdimageInterpolation.test_geometric_transform22.<locals>.mapping1c                 S   s   | d d | d d fS r   r   r   r   r   r   mapping2r  s    zETestNdimageInterpolation.test_geometric_transform22.<locals>.mapping2r   rL   r"   r   )r*   r+   r|   r,   r-   r   )r/   r(   r0   r   r   rQ   r   r   r   test_geometric_transform22i  s    
z3TestNdimageInterpolation.test_geometric_transform22c                 C   sN   g dg dg dg}dd }t j||d|d}|tj}t|dd	g d S )
Nr2   r   r   c                 S   s   d| d d fS )Nr	   r   r!   r   r   r   r   r   r\     s    zDTestNdimageInterpolation.test_geometric_transform23.<locals>.mappingr!   rL   ro   r$   )r,   r-   astyper*   Zint32r   r_   r   r   r   test_geometric_transform23{  s    z3TestNdimageInterpolation.test_geometric_transform23c                 C   sJ   g dg dg dg}dd }t j||d|ddd	id
}t|ddg d S )Nr2   r   r   c                 S   s   || d | fS )Nr   r   )r   abr   r   r   r\     s    zDTestNdimageInterpolation.test_geometric_transform24.<locals>.mappingr   )r	   r   r!   )r(   Zextra_argumentsZextra_keywordsro   r$   r   r_   r   r   r   test_geometric_transform24  s    
z3TestNdimageInterpolation.test_geometric_transform24c                 C   sT   t jg dg dgtd}dd }t g dg dg}ttj||dd	d
| d S )Nr	   r!   r"   r   ro   r5   r6   c                 S   s   | d d | d d fS )Nr   r   r	   r   r   r   r   r   r\     s    zWTestNdimageInterpolation.test_geometric_transform_grid_constant_order1.<locals>.mappingg      ?g      ?      ?r   g      @r#   r   r	   r&   r(   )r*   r+   rA   r   r,   r-   )r/   r   r\   expected_resultr   r   r   -test_geometric_transform_grid_constant_order1  s    


zFTestNdimageInterpolation.test_geometric_transform_grid_constant_order1)r   r   r   r   r   c           
      C   s   t jdtddd}dd }d}t|}t j|||d}tt|| g|j	 }t
j||||d| }	tt
j||||d|	d	d
 d S )N   r6   r   c                 S   s   | d d | d d fS )Nr   皙?r	   gffffff@r   r   r   r   r   r\     s    zLTestNdimageInterpolation.test_geometric_transform_vs_padded.<locals>.mapping   r<   r   r=   r>   )r*   r@   rA   reshaperC   rD   rE   tupleslicendimr,   r-   r   )
r/   r(   r&   r   r\   rG   rH   xpcenter_slicer   r   r   r   "test_geometric_transform_vs_padded  s$    

z;TestNdimageInterpolation.test_geometric_transform_vs_paddedc                 C   sz   t dg}dd }|j|j t |t ||j fD ]4}tj|||j|d}|d u rd|n|}t	|dg q@d S )Nr	   c                 S   s   | S r[   r   r   r   r   r   r\     s    zcTestNdimageInterpolation.test_geometric_transform_endianness_with_output_parameter.<locals>.mappingrU   )
r*   r+   r7   newbyteorder
empty_liker   r,   r-   r^   r   )r/   r0   r\   rQ   returnedresultr   r   r   9test_geometric_transform_endianness_with_output_parameter  s    zRTestNdimageInterpolation.test_geometric_transform_endianness_with_output_parameterc                 C   sH   t dg}dd }tj||dd}t|jt du  t|dg d S )Nr	   c                 S   s   | S r[   r   r   r   r   r   r\     s    zUTestNdimageInterpolation.test_geometric_transform_with_string_output.<locals>.mappingfrU   )r*   r+   r,   r-   r   r7   r   )r/   r0   r\   rQ   r   r   r   +test_geometric_transform_with_string_output  s
    zDTestNdimageInterpolation.test_geometric_transform_with_string_outputc                 C   s   t g dg dg dg}t g dg dg dg}|jjdkr\|d|  }|d|  }t |j}|d	8 }tj|||d
}t|| d S )Nrf   rm   rp   rt   rg   rq   ri   rj   r	   rL   )	r*   r+   r7   rk   indicesr^   r,   rB   r   )r/   r(   r7   r0   rJ   idxrQ   r   r   r   test_map_coordinates01  s    

z/TestNdimageInterpolation.test_map_coordinates01c                 C   sb   t g dg dg dg}t |jt j}|d8 }tj|d|d}tj|||d}t|| d S )Nrf   rm   rp   r   rL   )	r*   r+   r   r^   r|   r,   r    rB   r   )r/   r(   r0   r   out1out2r   r   r   test_map_coordinates02  s    
z/TestNdimageInterpolation.test_map_coordinates02c              	   C   sP  t jg dg dg dgdd}t |jd }t||}t|g dg dg d	g t|t|d
 t |d d d jd }t|d d d |}t|g dg dg t|t|d d d d
 t |d d d d df jd }t|d d d d df |}t|ddgddgddgg t|t|d d d d df d
 d S )Nrf   rm   rp   FrL   r	   rt   rg   rq   r	   r	   r!   r   r   r$   )r*   r+   r   r^   r,   rB   r   r    r/   r0   r   rQ   r   r   r   test_map_coordinates03  s.    


"z/TestNdimageInterpolation.test_map_coordinates03c                 C   s   t ddgddgg}t ddgddgg}t |j}|d8 }|j|j t |t ||j fD ].}tj	|||d}|d u r|n|}t
|| qld S )Nr	   r!   r$   r5   r   rU   )r*   r+   r   r^   r7   r   r   r   r,   rB   r   )r/   r0   rJ   r   rQ   r   r   r   r   r   5test_map_coordinates_endianness_with_output_parameter  s    zNTestNdimageInterpolation.test_map_coordinates_endianness_with_output_parameterc                 C   sP   t dgg}t |j}tj||dd}t|jt du  t|dgg d S Nr	   r   rU   )	r*   r+   r   r^   r,   rB   r   r7   r   r   r   r   r   'test_map_coordinates_with_string_output  s
    z@TestNdimageInterpolation.test_map_coordinates_with_string_outputwin32rn   z2do not run on 32 bit or windows (no sparse memory))reasonc              
   C   s   z`d}t j|d t jd||}d||d d |d d f< tj||d g|d ggdd W n0 ty } ztd	|W Y d }~n
d }~0 0 d S )
Ni0u  r!   r6   r   r"   r   r	   rL   zNot enough memory available)	r*   emptyZfloat32r   r,   rB   MemoryErrorpytestskip)r/   nr   er   r   r   test_map_coordinates_large_data$  s    $z8TestNdimageInterpolation.test_map_coordinates_large_datac                 C   s0   t dg}tj|dgg|d}t|dg d S rS   r*   r+   r,   affine_transformr   r/   r(   r0   rQ   r   r   r   test_affine_transform012  s    z0TestNdimageInterpolation.test_affine_transform01c                 C   s2   t dg}tj|dgg|d}t|g d d S )Nr   r	   rL   rX   r*   rN   r,   r   r   r   r   r   r   test_affine_transform028  s    z0TestNdimageInterpolation.test_affine_transform02c                 C   s4   t dg}tj|dggd|d}t|g d d S )Nr   r	   r   rL   rd   r   r   r   r   r   test_affine_transform03>  s    z0TestNdimageInterpolation.test_affine_transform03c                 C   s6   t g d}tj|dggd|d}t|g d d S )Nrf   r	   r   rL   rg   r   r   r   r   r   test_affine_transform04D  s    z0TestNdimageInterpolation.test_affine_transform04c                 C   s   t jg dg dg dg|d}t jg dg dg dg|d}|jjdkrd|d| 8 }|d| 8 }tj|ddgddggddg|d	}t|| d S )
NrX   r6   rd   ri   rj   r	   r   r   rL   )r*   r+   r7   rk   r,   r   r   r/   r(   r7   r0   rJ   rQ   r   r   r   test_affine_transform05J  s&    

z0TestNdimageInterpolation.test_affine_transform05c                 C   s^   t g dg dg dg}tj|ddgddggddg|d}t|g dg d	g d
g d S )Nrf   rm   rp   r	   r   r   rL   rg   rq   rr   r   r   r   r   r   test_affine_transform06Z  s    

z0TestNdimageInterpolation.test_affine_transform06c                 C   s^   t g dg dg dg}tj|ddgddggddg|d}t|g dg dg dg d S )	Nrf   rm   rp   r	   r   r   rL   rt   r   r   r   r   r   test_affine_transform07e  s    

z0TestNdimageInterpolation.test_affine_transform07c                 C   s^   t g dg dg dg}tj|ddgddggddg|d}t|g dg d	g d
g d S )Nrf   rm   rp   r	   r   r   rL   rt   rg   rq   r   r   r   r   r   test_affine_transform08p  s    

z0TestNdimageInterpolation.test_affine_transform08c                 C   s|   t g dg dg dg}|dkr4tj||d}n|}tj|ddgddggddg|dd	}t|g d
g dg dg d S )Nrf   rm   rp   r	   rL   r   r   Frw   rt   rg   rq   )r*   r+   r,   rO   r   r   r/   r(   r0   ry   rQ   r   r   r   test_affine_transform09{  s    

z0TestNdimageInterpolation.test_affine_transform09c                 C   s8   t dgt j}tj|dggd|d}t|g d d S )Nr!   r   r3   )r'   r(   r	   r	   r	   r   )r*   rN   r|   r,   r   r   r   r   r   r   test_affine_transform10  s
    z0TestNdimageInterpolation.test_affine_transform10c                 C   s2   g d}t j|dggdd|d}t|g d d S )Nr~   r!   r   r3   rL   r2   r,   r   r   r   r   r   r   test_affine_transform11  s    z0TestNdimageInterpolation.test_affine_transform11c                 C   s<   g d}t j|dggdd|d}t|d d d g d d S )Nr2   r   r   rn   rL   r!   r   r   r   r   r   test_affine_transform12  s    z0TestNdimageInterpolation.test_affine_transform12c                 C   sV   g dg dg dg}t j|ddgddggdd|d}t|dd	gd
dgddgg d S )Nr2   r   r   r	   r   r!   r   rL   r"   ro   r$   r   r   r   r   r   r   r   test_affine_transform13  s    z0TestNdimageInterpolation.test_affine_transform13c                 C   sJ   g dg dg dg}t j|ddgddggdd|d}t|g dg d S )	Nr2   r   r   r!   r   r	   r   rL   r   r   r   r   r   test_affine_transform14  s    z0TestNdimageInterpolation.test_affine_transform14c                 C   sJ   g dg dg dg}t j|ddgddggdd|d}t|dd	gg d S )
Nr2   r   r   r!   r   r   rL   r	   r"   r   r   r   r   r   test_affine_transform15  s    z0TestNdimageInterpolation.test_affine_transform15c                 C   sR   g dg dg dg}t j|ddgddggdd|d	}t|d
d d df | d S )Nr2   r   r   r	           r   r   r   rL   .r!   r   r   r   r   r   test_affine_transform16  s    z0TestNdimageInterpolation.test_affine_transform16c                 C   sR   g dg dg dg}t j|ddgddggdd|d}t|d d d	d
f | d S )Nr2   r   r   r   r   r	   r   rL   r!   .r   r   r   r   r   test_affine_transform17  s    z0TestNdimageInterpolation.test_affine_transform17c                 C   sX   g dg dg dg}t j|ddgddggdd|d}t|d d dd d df | d S )	Nr2   r   r   r   r   r   rL   r!   r   r   r   r   r   test_affine_transform18  s    z0TestNdimageInterpolation.test_affine_transform18c                 C   sn   t g dg dg dgt j}tj|ddgddggdd|d}tj|ddgddggdd	|d}t|| d S )
Nr2   r   r   r   r   r   rL          @r   )r*   r+   r|   r,   r   r   r   r   r   r   test_affine_transform19  s    
z0TestNdimageInterpolation.test_affine_transform19c                 C   sD   g dg dg dg}t j|dgdggdd|d}t|dd	g d S )
Nr2   r   r   r   r!   r   rL   r	   r"   r   r   r   r   r   test_affine_transform20  s    z0TestNdimageInterpolation.test_affine_transform20c                 C   sD   g dg dg dg}t j|dgdggdd|d}t|dd	g d S )
Nr2   r   r   r!   r   r   rL   r	   r   r   r   r   r   r   test_affine_transform21  s    z0TestNdimageInterpolation.test_affine_transform21c                 C   s:   t g d}tj|dggdgd|d}t|g d d S )Nrf   r!   r   )r"   rL   r   r	   r!   r   r   r   r   r   test_affine_transform22  s
    z0TestNdimageInterpolation.test_affine_transform22c                 C   sD   t g d}tj|dggdgd|d}t|d d d g d d S )Nrf   r   r   r   rL   r!   rg   r   r   r   r   r   test_affine_transform23  s
    z0TestNdimageInterpolation.test_affine_transform23c                 C   sx   t g d}t 0}|td tj|dgd|d}W d    n1 sJ0    Y  tj|dggd|d}t|| d S )Nrf   @The behavior of affine_transform with a 1-D array .* has changedr!   r   rL   r*   r+   r   filterUserWarningr,   r   r   r/   r(   r0   supr   r   r   r   r   test_affine_transform24  s    2z0TestNdimageInterpolation.test_affine_transform24c                 C   sx   t g d}t 0}|td tj|dgd|d}W d    n1 sJ0    Y  tj|dggd|d}t|| d S )Nrf   r   r   r   rL   r   r   r   r   r   test_affine_transform25  s    2z0TestNdimageInterpolation.test_affine_transform25c                 C   s   t g dg dg dg}|dkr4tj||d}n|}t d}t d }t ||f}t |g dgf}tj|||	 |d	d
}tj|||d	d
}	tj|||d	d
}
||	|
fD ] }t
|g dg dg dg qd S )Nrf   rm   rp   r	   rL   r!   r!   r	   )r   r   r	   Frw   rt   rg   rq   )r*   r+   r,   rO   eyerN   hstackvstackr   Zravelr   )r/   r(   r0   ry   Ztform_originalZoffset_originaltform_h1tform_h2r   r   Zout3rQ   r   r   r   test_affine_transform26  s4    




z0TestNdimageInterpolation.test_affine_transform26c                 C   s`   t g dg dg dg}t t dt d f}t |g dgf}tttj	|| d S )Nrf   rm   rp   r!   r   )ro   r!   r	   )
r*   r+   r   r   rN   r   assert_raises
ValueErrorr,   r   )r/   r0   r   r  r   r   r   test_affine_transform273  s    
z0TestNdimageInterpolation.test_affine_transform27c              	   C   s   t d}t |t ||j |j|j fD ]p}t 0}|td t	j
|ddg|d}W d    n1 sv0    Y  |d u r|n|}t|ddgddgg q6d S )N)r!   r!   r   r	   rU   )r*   rN   r   r   r7   r   r   r   r   r,   r   r   )r/   r0   rQ   r   r   r   r   r   r   9test_affine_transform_1d_endianness_with_output_parameter<  s    
2zRTestNdimageInterpolation.test_affine_transform_1d_endianness_with_output_parameterc                 C   sr   t dg}|j|j t |t ||j fD ]4}tj|dgg|d}|d u r\|n|}t|dg q8d S )Nr	   rU   )	r*   r+   r7   r   r   r   r,   r   r   )r/   r0   rQ   r   r   r   r   r   >test_affine_transform_multi_d_endianness_with_output_parameterK  s    zWTestNdimageInterpolation.test_affine_transform_multi_d_endianness_with_output_parameterc                 C   s   t jdt jd}t d}tj|dgg|d t|d d | tt	& tj|dgg|dd W d    n1 sv0    Y  d S )Nrn   r6   )   r	   rU   )r   )rV   r'   )
r*   r@   r|   rN   r,   r   r   r   r   RuntimeErrorr/   r0   rQ   r   r   r   "test_affine_transform_output_shapeV  s    
z;TestNdimageInterpolation.test_affine_transform_output_shapec                 C   sD   t dg}tj|dggdd}t|jt du  t|dg d S r   )r*   r+   r,   r   r   r7   r   r
  r   r   r   (test_affine_transform_with_string_outputc  s    zATestNdimageInterpolation.test_affine_transform_with_string_outputr    ))r	   r   r   r	   )r   r	   )r"   )r!   r$   c                 C   sr   t ddgddgg}t d}t d|d dd df< ||d d df< ttj||d|dt j||dd	 d S )
Nr   r	   r!   r"   r!   r"   r   r   r  Zaxis)r*   r+   zerosr   r   r,   r   roll)r/   r    r(   r   affiner   r   r   )test_affine_transform_shift_via_grid_wrapi  s    

zBTestNdimageInterpolation.test_affine_transform_shift_via_grid_wrapc                 C   s|   t g dg dg}t d}t d|d dd df< |j|d d df< ttj||d|d|d d dd d df  d S )Nr   r"   r   ro   r  r!   r   r   r   )r*   r+   r  r   r^   r   r,   r   )r/   r(   r   r  r   r   r   #test_affine_transform_shift_reflectx  s    

z<TestNdimageInterpolation.test_affine_transform_shift_reflectc                 C   s.   t dg}tj|dg|d}t|dg d S )Nr	   rL   r   r*   r+   r,   r    r   r   r   r   r   test_shift01  s    z%TestNdimageInterpolation.test_shift01c                 C   s0   t dg}tj|dg|d}t|g d d S )Nr   r	   rL   rd   r*   rN   r,   r    r   r   r   r   r   test_shift02  s    z%TestNdimageInterpolation.test_shift02c                 C   s.   t dg}tj|d|d}t|g d d S )Nr   r   rL   r   r  r   r   r   r   test_shift03  s    z%TestNdimageInterpolation.test_shift03c                 C   s0   t g d}tj|d|d}t|g d d S )Nrf   r	   rL   rg   r  r   r   r   r   test_shift04  s    z%TestNdimageInterpolation.test_shift04c                 C   s   t jg dg dg dg|d}t jg dg dg dg|d}|jjdkrd|d| 8 }|d| 8 }tj|ddg|d}t|| d S )	NrX   r6   rd   ri   rj   r   r	   rL   r*   r+   r7   rk   r,   r    r   r   r   r   r   test_shift05  s"    

z%TestNdimageInterpolation.test_shift05c                 C   s   t jg dg dg dg|d}t jg dg dg dg|d}|jjdkrd|d| 8 }|d| 8 }d}||d d df< tj|ddg|||d	}t|| d S )
NrX   r6   rd   ri   rj   g      @r   r	   )r(   r&   r%   r  )r/   r(   r&   r7   r0   rJ   r%   rQ   r   r   r   test_shift_with_nonzero_cval  s&    

z5TestNdimageInterpolation.test_shift_with_nonzero_cvalc                 C   sP   t g dg dg dg}tj|ddg|d}t|g dg dg d	g d S )
Nrf   rm   rp   r   r	   rL   rg   rq   rr   r  r   r   r   r   test_shift06  s    

z%TestNdimageInterpolation.test_shift06c                 C   sP   t g dg dg dg}tj|ddg|d}t|g dg dg dg d S )Nrf   rm   rp   r	   r   rL   rt   r  r   r   r   r   test_shift07  s    

z%TestNdimageInterpolation.test_shift07c                 C   sP   t g dg dg dg}tj|ddg|d}t|g dg dg dg d S )	Nrf   rm   rp   r	   rL   rt   rg   rq   r  r   r   r   r   test_shift08  s    

z%TestNdimageInterpolation.test_shift08c                 C   sn   t g dg dg dg}|dkr4tj||d}n|}tj|ddg|dd}t|g dg d	g d
g d S )Nrf   rm   rp   r	   rL   Frw   rt   rg   rq   )r*   r+   r,   rO   r    r   r   r   r   r   test_shift09  s    

z%TestNdimageInterpolation.test_shift09c                 C   s>   t ddgddgg}ttj||d|dt j||dd d S )	Nr   r	   r!   r"   r   r   r  r  )r*   r+   r   r,   r    r  r/   r    r(   r   r   r   r   test_shift_grid_wrap  s    
z-TestNdimageInterpolation.test_shift_grid_wrapc                 C   s:   t dd}ttj||d|dtj||d|d d S )N   )ro   r   r   r   r   )r*   r@   r   r   r,   r    r$  r   r   r   test_shift_grid_constant1  s
    z2TestNdimageInterpolation.test_shift_grid_constant1c                 C   sL   t jg dg dgtd}t g dg dg}ttj|dddd	| d S )
Nr   r   r6   r   r   )r   r   r   r	   r   )r*   r+   rA   r   r,   r    )r/   r   r   r   r   r   test_shift_grid_constant_order1  s    

z8TestNdimageInterpolation.test_shift_grid_constant_order1c                 C   sH   t g dg dg}ttj||jd|d|d d dd d df  d S )Nr   r  r   r   r   )r*   r+   r   r,   r    r^   )r/   r(   r   r   r   r   test_shift_reflect  s    
z+TestNdimageInterpolation.test_shift_reflectrx   FTc                 C   sr   t d}td||d}ttj||d d fi |d |d  ttj|| d d fi |d |d  d S )Nr  r   )r&   r(   rx   r!   r	   r   r   )r*   r@   dictr   r,   r    )r/   r(   rx   r   kwargsr   r   r   test_shift_nearest_boundary  s    
$&z4TestNdimageInterpolation.test_shift_nearest_boundaryc           
      C   s   t jdtddd}d}d}t|}t j|||d}tt|| g|j	 }t
j||||d| }	tt
j||||d|	dd	 d S )
Nr   r6   r   )r   gffffffr;   r<   r   r=   r   )r*   r@   rA   r   rC   rD   rE   r   r   r   r,   r    r   )
r/   r(   r&   r   r    rG   rH   r   r   r   r   r   r   test_shift_vs_padded%  s     
z-TestNdimageInterpolation.test_shift_vs_paddedc                 C   s   dddgfD ]}t ttddt}tj|||d}t	|j
d tt |dd d f dk tt |dd d f dt k tt |dd d f d	t k tt |dt k tt |d
t k qd S )Nr!      )ro   ro   rL   )r   r   r   r   r&  ro   r   )r*   r+   listranger   r   rA   r,   zoomr   r^   r   alleps)r/   r(   zarrr   r   r   
test_zoom1:  s    ""z#TestNdimageInterpolation.test_zoom1c                 C   s2   t dd}tt|dd}t|| d S )Nr   r   r!   r   )r*   r@   r   r,   r1  r   )r/   r5  rQ   r   r   r   
test_zoom2F  s    z#TestNdimageInterpolation.test_zoom2c                 C   s^   t ddgg}t|d}t|d}t|t ddgddgg t|t g dg d S )Nr	   r!   r   r   )r	   r	   r!   r!   )r*   r+   r,   r1  r   )r/   r5  r   r   r   r   r   
test_zoom3K  s
    z#TestNdimageInterpolation.test_zoom3c                 C   s   t jg dg dg dg|d}|jjdkr8|d| 8 }t 4}|td tj|ddgd	d
|d}W d    n1 sx0    Y  t	|d d dd d df | d S )Nr2   r   r   r6   ri   rj   r   r   r   r   rL   r!   )
r*   Zasarrayr7   rk   r   r   r   r,   r   r   )r/   r(   r7   r0   r   rQ   r   r   r   test_zoom_affine01S  s     
$z+TestNdimageInterpolation.test_zoom_affine01c                 C   s&   d}t jt||fd| dd d S )Nrn         ?r   r<   )r,   r1  r*   r  )r/   dimr   r   r   test_zoom_infinityc  s    z+TestNdimageInterpolation.test_zoom_infinityc                 C   s6   t d}d}tj||dd}t d}t|| d S )N)r	   ro   ro   )r:  r   r   r$   )r%   )r	   r   r   )r*   r  r,   r1  r   )r/   r5  r1  rQ   refr   r   r   test_zoom_zoomfactor_oneh  s
    

z1TestNdimageInterpolation.test_zoom_zoomfactor_onec                 C   s*   t d}d}t||}t|jd d S )N)r"   r   r.  )gUUUUUU?gE]t?g(\?)r   r8      )r*   r  r,   r1  r   r^   )r/   r5  r1  rQ   r   r   r   test_zoom_output_shape_roundoffq  s    
z8TestNdimageInterpolation.test_zoom_output_shape_roundoffr1  )r   )r"   ro   )rn   r!   )rn   rn   )r   r   r   r   r   r   r   r   c                 C   sD   t jddgddggtd}ttj||d|dt |t | d S )Nr   r	   r!   r"   r6   r:   )r*   r+   rA   r   r,   r1  kronrN   )r/   r1  r&   r   r   r   r   test_zoom_by_int_order0w  s    	
z0TestNdimageInterpolation.test_zoom_by_int_order0r^   r  )r   r   )r   r   r   r   r   c                 C   sF   t jt |td|}ttj||d|ddt |t 	| d S )Nr6   r   T)r(   r&   	grid_mode)
r*   r@   prodrA   r   r   r,   r1  rA  rN   )r/   r^   r1  r&   r   r   r   r   test_zoom_grid_by_int_order0  s
    z5TestNdimageInterpolation.test_zoom_grid_by_int_order0c                 C   sZ   t jdtdd}tjtdd$ tj|d|ddf W d    n1 sL0    Y  d S )	Nr   r6   )r"   r"   zIt is recommended to use mode)matchr!   T)r&   rC  )	r*   r@   rA   r   r   Zwarnsr   r,   r1  )r/   r&   r   r   r   r   test_zoom_grid_mode_warnings  s
    z5TestNdimageInterpolation.test_zoom_grid_mode_warningsc                 C   s@   t jg dg dg dgt jd}tj|d|d}t|| d S )Nrt   r   r	   r	   r   r6   r   rL   r*   r+   r|   r,   rotater   r   r   r   r   test_rotate01  s    
z&TestNdimageInterpolation.test_rotate01c                 C   sh   t jg dg dg dgt jd}t jg dg dg dg dgt jd}tj|d|d}t|| d S )Nrt   )r   r	   r   r   r6   r   r   r   r   r	   r   Z   rL   rI  r/   r(   r0   rJ   rQ   r   r   r   test_rotate02  s    

z&TestNdimageInterpolation.test_rotate02c                 C   s   t jg dg dg dg|d}t jg dg dg dg dg dg|d}|jjdkrp|d| 8 }|d| 8 }tj|d|d	}t|| d S )
Nr   r   r   r   r   r   r	   r	   r   r   r6   rL  rM  ri   rj   rN  rL   )r*   r+   r7   rk   r,   rJ  r   r   r   r   r   test_rotate03  s&    

z&TestNdimageInterpolation.test_rotate03c                 C   sd   t jg dg dg dgt jd}t jg dg dg dgt jd}tj|dd|d}t|| d S )NrQ  rR  r6   r   r   r	   r   r   rN  F)r   r(   rI  rO  r   r   r   test_rotate04  s    

z&TestNdimageInterpolation.test_rotate04c                 C   s   t d}tdD ]>}t jg dg dg dg dgt jd|d d d d |f< qt jg dg dg dgt jd}tj|d|d	}tdD ] }t|d d d d |f | qd S )
N)r   r"   r"   r"   rL  rM  r6   rt   rH  rN  rL   r*   r   r0  r+   r|   r,   rJ  r   r/   r(   r0   irJ   rQ   r   r   r   test_rotate05  s$    


z&TestNdimageInterpolation.test_rotate05c                 C   s   t d}tdD ]8}t jg dg dg dgt jd|d d d d |f< qt jg dg dg dg dgt jd}tj|d|d	}tdD ] }t|d d d d |f | qd S )
N)r"   r   r"   r"   rt   rH  r6   rL  rM  rN  rL   rV  rW  r   r   r   test_rotate06  s$    


z&TestNdimageInterpolation.test_rotate06c                 C   s   t jg dg dg dggd t jd}| }t jg dg dg dg dg dggd t jd}|g d}tj|dd	|d
}t|| d S )NrQ  rR  r!   r6   rL  rM  )r!   r	   r   rN  r  )axesr(   r*   r+   r|   Z	transposer,   rJ  r   rO  r   r   r   test_rotate07  s,    

z&TestNdimageInterpolation.test_rotate07c                 C   s   t jg dg dg dggd t jd}| }t jg dg dg dggd t jd}| }tj|ddd|d	}t|| d S )
NrQ  rR  r!   r6   rT  rN  r  F)r[  r   r(   r\  rO  r   r   r   test_rotate08  s(    

z&TestNdimageInterpolation.test_rotate08c                 C   sh   t jg dg dg dgd t jd}tt& tj|dd|jfd W d    n1 sZ0    Y  d S )NrQ  rR  r!   r6   rN  r   )r[  )r*   r+   r|   r  r  r,   rJ  r   )r/   r0   r   r   r   test_rotate09  s    

z&TestNdimageInterpolation.test_rotate09c              
   C   s   t jdt jdd}t g dg dg dg dg dgg dg dg d	g d
g dgg dg dg dg dg dgg}tj|ddd}t|| d S )N-   r6   )r"   ro   r"   )r   r   r   )g|S2@g|S2@g>)!@)g9HD%@g9HD'@g9HD)@)gc~@gc~@gzLb @)g[ic6*@g[ic6,@g[ic6.@)g      5@g      6@g      7@)gRK<@gRK=@gRK>@)g,PA@g,PgB@g,PB@)gݠ'?@grn@@grnГ@@)gGA@gG9B@gGB@r   F)Zangler   )r*   r@   r|   r   r+   r,   rJ  r   )r/   r0   rJ   rQ   r   r   r   test_rotate10  s,    
z&TestNdimageInterpolation.test_rotate10c                 C   s4   t t dd}tt|dd}t|| d S )Nro   )ro   r	      iL)r*   Ztiler@   r,   rJ  r   )r/   r   r   r   r   r   test_rotate_exact_180&  s    z.TestNdimageInterpolation.test_rotate_exact_180N)}__name__
__module____qualname__r   markZparametrizer1   r4   r0  rK   r
   rR   rT   rW   rY   rZ   r`   rb   re   rh   r*   r|   Z
complex128rl   rs   ru   rv   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZskipifsysplatformZintpitemsizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r%  r'  r(  r)  r,  r-  r6  r7  r8  r9  r<  r>  r@  rB  rE  rG  rK  rP  rS  rU  rY  rZ  r]  r^  r_  ra  rc  r   r   r   r   r      s  
































	
	
	










 





























	





	
	
	
	

	
	








r   c                  C   s*   t dd} tj| dt dd dS )zTicket #643r   r   r!   r   rU   N)r*   r@   r   r,   r1  r  r   r   r   r   test_zoom_output_shape,  s    rk  )rh  r*   Znumpy.testingr   r   r   r   r   r   r   r   r  Zscipy.ndimager,    r
   r3  rC   r   rk  r   r   r   r   <module>   s4    
          