
    tKg                       d dl Zd dl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  G d d      Z G d	 d
      Z G d d      Zd Zd Zd Zd Zd Zej,                  j/                  dg d      ej,                  j/                  dddg      ej,                  j/                  dddg      d                      Zd Zd Zy)    N)assert_assert_equalassert_array_equalassert_array_almost_equal)raises)ndimage   )typesc                      e Zd Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Z	ej                  j                  de      d        Z
ej                  j                  de      d        Zej                  j                  de      d        Zd Zej                  j                  de      d	        Zej                  j                  de      d
        Zej                  j                  de      d        Zd Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  de      d        Z ej                  j                  de      d        Z!ej                  j                  de      d        Z"ej                  j                  de      d        Z#ej                  j                  de      d        Z$ej                  j                  de      d         Z%ej                  j                  de      d!        Z&ej                  j                  de      d"        Z'ej                  j                  de      d#        Z(ej                  j                  de      d$        Z)ej                  j                  de      d%        Z*ej                  j                  de      d&        Z+ej                  j                  de      d'        Z,ej                  j                  de      d(        Z-ej                  j                  de      d)        Z.ej                  j                  de      d*        Z/ej                  j                  de      d+        Z0ej                  j                  de      d,        Z1ej                  j                  de      d-        Z2ej                  j                  de      d.        Z3ej                  j                  de      d/        Z4ej                  j                  de      d0        Z5ej                  j                  de      d1        Z6ej                  j                  de      d2        Z7ej                  j                  de      d3        Z8ej                  j                  de      d4        Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGej                  j                  de      dC        ZHej                  j                  de      dD        ZIej                  j                  de      dE        ZJej                  j                  de      dF        ZKej                  j                  de      dG        ZLej                  j                  de      dH        ZMej                  j                  de      dI        ZNej                  j                  de      dJ        ZOej                  j                  de      dK        ZPej                  j                  de      dL        ZQej                  j                  de      dM        ZRej                  j                  de      dN        ZSej                  j                  de      dO        ZTej                  j                  de      dP        ZUej                  j                  de      dQ        ZVej                  j                  de      dR        ZWej                  j                  de      dS        ZXej                  j                  de      dT        ZYej                  j                  de      dU        ZZej                  j                  de      dV        Z[ej                  j                  de      dW        Z\ej                  j                  de      dX        Z]ej                  j                  de      dY        Z^ej                  j                  de      dZ        Z_ej                  j                  de      d[        Z`ej                  j                  de      d\        Zaej                  j                  de      d]        Zbej                  j                  de      d^        Zcd_ Zdd` Zeda Zfdb Zgdc Zhdd Ziej                  j                  de      de        Zjdf Zkdg Zlej                  j                  de      dh        Zmej                  j                  de      di        Znej                  j                  de      dj        Zoej                  j                  de      dk        Zpdl Zqdm Zrdn Zsdo Ztdp Zudq Zvdr Zwds Zxdt Zydu Zzdv Z{dw Z|dx Z}dy Z~dz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  de      d        Zy)TestNdimageMorphologydtypec                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dd      \  }}g dg dg dg dg dg dg dg dg dg	}t	        ||z  |       g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t	        ||       y )N	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   	euclideanTreturn_indices)	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    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!   r   	r   r	   r	   r   r   r   r!   r!   r   	r   r	   r	   r	   r   r!   r!   r!   r   nparrayr   distance_transform_bfr   selfr   dataoutftexpecteds         g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/ndimage/tests/test_morphology.pytest_distance_transform_bf01z2TestNdimageMorphology.test_distance_transform_bf01   s     xx4444444446 8=> //k?CER/////////1 	"#)X60000000002 10000000023$ 	""h/    c                 z   t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dd      \  }}g dg dg dg dg dg dg dg dg dg	}t	        ||       g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t	        ||       y )Nr   r   r   	cityblockTr   	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$   r%   r&   	r   r	   r	   r	   r   r!   r!   r!   r   r)   r-   s         r3   test_distance_transform_bf02z2TestNdimageMorphology.test_distance_transform_bf02;   s    xx4444444446 8=> //k?CER 0////////1 	"#x00000000002 10000000023$ 	"(B/r5   c                 z   t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dd      \  }}g dg dg dg dg dg dg dg dg dg	}t	        ||       g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t	        ||       y )Nr   r   r   
chessboardTr   )	r   r   r	   r	   r   r	   r	   r   r   r8   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!   r!   r   )	r   r	   r   r   r   r   r!   r!   r   )	r   r	   r   r   r    r   r   r!   r   r)   r-   s         r3   test_distance_transform_bf03z2TestNdimageMorphology.test_distance_transform_bf03h   s    xx4444444446 8=> //l?CER 0////////1 	"#x00000000002 10000000023$ 	""h/r5   c                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |d      \  }}g }g }t        j                  |j
                  t         j                        }t        j                  ||       |j                  |       t        j                  |dd	      }|j                  |       t        j                  |j
                  t         j                        }t        j                  |dd
|       |j                  |       t        j                  |d      \  }}|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  ||d
      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |d
|      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |j
                  t         j                        }t        j                  ||d
|       |j                  |       |j                  |       |D ]  }t        ||        |D ]  }t        ||        y )Nr   r   r   r	   r   r   	distancesFreturn_distancesr   TrE   r   indicesrC   r   r   rG   rC   r   rG   )r*   r+   r   r,   zerosshapefloat64appendrG   int32r   	r.   r   r/   tdttftdtsftsdtr1   s	            r3   test_distance_transform_bf04z2TestNdimageMorphology.test_distance_transform_bf04   s&   xx4444444446 8=> 00aHSXXdjj

3%%db9

2**5<

2ZZ

"((3%%5r	K

2..$B

2

2XXdjj

3**Bt5

2

2ZZ

"((3**r3

2

2XXdjj

3ZZ

"((3%%BtR	A

2

2B%c2. B%c2. r5   c                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |ddddg      \  }}g dg dg dg d	g d
g d	g dg dg dg	}t	        ||z  |       g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t	        ||       y )Nr   r   r   r   Tr   r   sampling)	r   r   r   r   r   r   r   r   r   )	r   r   r   r      r   r   r   r   )	r   r   r   rZ       rZ   r   r   r   r   r   r   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r-   s         r3   test_distance_transform_bf05z2TestNdimageMorphology.test_distance_transform_bf05   s    xx4444444446 8=> //+daVER///020///1 	"#)X60000000002 10000000023$ 	""h/r5   c                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |ddddg      \  }}g dg dg d	g d
g dg d
g d	g dg dg	}t	        ||z  |       g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t	        ||       y )Nr   r   r   r   Tr   r	   rX   )	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    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-   s         r3   test_distance_transform_bf06z2TestNdimageMorphology.test_distance_transform_bf06   s    xx4444444446 8=> //+daVER/////////1 	"#)X60000000002 10000000023$ 	""h/r5   c                     t        j                  g dg dg dg dg dg dg dg dg dg	      }t        t              5  t	        j
                  |dd       d d d        y # 1 sw Y   y xY w)Nr   r   r   FrD   )r*   r+   assert_raisesRuntimeErrorr   r,   )r.   r/   s     r3   test_distance_transform_bf07z2TestNdimageMorphology.test_distance_transform_bf07  s[    xx4444444446 7 <())uU )((s    A""A+c                 l   t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dd      \  }}t        j                  |d      }t        ||       g dg dg dg d	g d
g dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t        ||       y )Nr   r   r   r7   Tr   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%   r9   )	r   r	   r	   r	   r   r    r   r!   r   )	r   r	   r   r   r   r    r   r!   r   r*   r+   r   distance_transform_cdtr,   r   r.   r   r/   r0   r1   bfr2   s          r3   test_distance_transform_cdt01z3TestNdimageMorphology.test_distance_transform_cdt01.  s     xx4444444446 8=> 00+d4R**4=!"c*0000000002 10000000023$ 	""h/r5   c                 l   t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dd      \  }}t        j                  |d      }t        ||       g dg dg dg d	g d
g dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t        ||       y )Nr   r   r   r<   Tr   r   re   )	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    rf   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=   rg   ri   s          r3   test_distance_transform_cdt02z3TestNdimageMorphology.test_distance_transform_cdt02S  s    xx4444444446 8=> 00|@DFR**4>!"c*0000000002 10000000023$ 	""h/r5   c                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |d      \  }}g }g }t        j                  |j
                  t         j                        }t        j                  ||       |j                  |       t        j                  |dd	      }|j                  |       t        j                  |j
                  t         j                        }t        j                  |dd|
       |j                  |       t        j                  |d      \  }}|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  ||d      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |d|      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |j
                  t         j                        }t        j                  ||d|       |j                  |       |j                  |       |D ]  }t        ||        |D ]  }t        ||        y )Nr   r   r   Tr   rA   rB   FrD   rF   rH   rI   rJ   )
r*   r+   r   rh   rK   rL   rO   rN   rG   r   rP   s	            r3   test_distance_transform_cdt03z3TestNdimageMorphology.test_distance_transform_cdt03w  s&   xx4444444446 8=> 11$tLSXXdjj1&&tr:

2++5?

2ZZ

"((3&&5r	K

2//'B

2

2XXdjj1++Bt5

2

2ZZ

"((3++r3

2

2XXdjj1ZZ

"((3&&tr6:B	H

2

2B%c2. B%c2. r5   c                 X   t        j                  g dg dg dg dg dg dg dg dg dg	      }t        j                  |j                  f|j                  z   t         j
                        }t        t              5  t        j                  |dd|       d d d        y # 1 sw Y   y xY w)Nr   r   r   rA   TFrF   )
r*   r+   rK   ndimrL   rO   ra   rb   r   r,   )r.   r/   indices_outs      r3   test_distance_transform_cdt04z3TestNdimageMorphology.test_distance_transform_cdt04  s    xx4444444446 7 hh		|djj8I<())!%$#	 )((s   =B  B)c                     t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  d      }t        j                  ||      }|j                         dk(  sJ y )Nr   r   r   r   r   metrici)r*   r+   onesr   rh   sum)r.   r   r/   
metric_argactuals        r3   test_distance_transform_cdt05z3TestNdimageMorphology.test_distance_transform_cdt05  sl     xx4444444446 8=> WWV_
//ZHzz|s"""r5   c                 2   t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |d      \  }}t        j                  |d      }t        ||       |t        j                  |j                  dd  |j                        z
  }|j                  t         j                        }t        j                  |||       t         j                  j                  |d	
      }t        j                  ||       t        ||       y )Nr   r   r   Tr   r   r	   rA   r   )axis)r*   r+   r   distance_transform_edtr,   r   rG   rL   r   astyperM   multiplyaddreducesqrt)r.   r   r/   r0   r1   rj   rU   s          r3   test_distance_transform_edt01z3TestNdimageMorphology.test_distance_transform_edt01  s     xx4444444446 8=> 00dKR**4=!"c*"**RXXab\::YYrzz"
BBVV]]2A]&
B!"b)r5   c                    t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |d      \  }}g }g }t        j                  |j
                  t         j                        }t        j                  ||       |j                  |       t        j                  |dd	      }|j                  |       t        j                  |j
                  t         j                        }t        j                  |d
d|       |j                  |       t        j                  |d      \  }}|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  ||d      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |d|      }|j                  |       |j                  |       t        j                  |j
                  t         j                        }t        j                  |j
                  t         j                        }t        j                  ||d|       |j                  |       |j                  |       |D ]  }t        ||        |D ]  }t        ||        y )Nr   r   r   Tr   rA   rB   r   rD   FrF   rH   rI   rJ   )r*   r+   r   r   rK   rL   rM   rN   rG   rO   r   rP   s	            r3   test_distance_transform_edt02z3TestNdimageMorphology.test_distance_transform_edt02  s&   xx4444444446 8=> 11$tLSXXdjj

3&&tr:

2++1T;

2ZZ

"((3&&5r	K

2//'B

2

2XXdjj

3++Bt5

2

2ZZ

"((3++r3

2

2XXdjj

3ZZ

"((3&&BtR	A

2

2B%c2. B%c2. r5   c                     t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dddg      }t        j                  |ddg      }t        ||       y )Nr   r   r   r   r   rY   r*   r+   r   r,   r   r   r.   r   r/   refr0   s        r3   test_distance_transform_edt03z3TestNdimageMorphology.test_distance_transform_edt03  o    xx4444444446 8=> ++D+AO,,TQFC!#s+r5   c                     t        j                  g dg dg dg dg dg dg dg dg dg	|      }t        j                  |dddg      }t        j                  |ddg      }t        ||       y )Nr   r   r   r   r   r	   r   r   r   s        r3   test_distance_transform_edt4z2TestNdimageMorphology.test_distance_transform_edt4$  r   r5   c                 H    t        j                  d      }t        |dg       y )NF        )r   r   r   )r.   r0   s     r3   test_distance_transform_edt5z2TestNdimageMorphology.test_distance_transform_edt53  s    ,,U3!#t,r5   c                 <   t        j                  g dg dg dg dg dg dg dg dg dg	      }t        j                  |j                  t         j                        }t        t              5  t        j                  |dd|       d d d        y # 1 sw Y   y xY w)Nr   r   r   rA   TF)r   rE   rC   )	r*   r+   rK   rL   rM   ra   rb   r   r,   )r.   r/   distances_outs      r3   test_distance_transform_edt6z2TestNdimageMorphology.test_distance_transform_edt68  sx    xx4444444446 7 2::><())#!&'	 )((s   /BBc                 H    t        j                  dd      }t        |d       y )Nr   r	   r   generate_binary_structurer   r.   structs     r3   test_generate_structure01z/TestNdimageMorphology.test_generate_structure01L  s    221a8!&!,r5   c                 L    t        j                  dd      }t        |g d       y )Nr	   r	   r	   r	   r   r   s     r3   test_generate_structure02z/TestNdimageMorphology.test_generate_structure02P  s    221a8!&)4r5   c                 Z    t        j                  dd      }t        |g dg dg dg       y )Nr   r	   r   r	   r   r   r   r   s     r3   test_generate_structure03z/TestNdimageMorphology.test_generate_structure03T  +    221a8!&9+4+4+6 	7r5   c                 Z    t        j                  dd      }t        |g dg dg dg       y )Nr   r   r   r   s     r3   test_generate_structure04z/TestNdimageMorphology.test_generate_structure04Z  r   r5   c           	      |    g dg dg dg}t        j                  |d      }t        |g dg dg dg dg dg       y )Nr   r   r   r   r   r	   r   r   r   r	   r	   r	   r   r	   r	   r	   r	   r	   r   iterate_structurer   r.   r   r0   s      r3   test_iterate_structure01z.TestNdimageMorphology.test_iterate_structure01`  sC     ''2!#(7(7(7(7	(9 	:r5   c           	      |    ddgddgddgg}t        j                  |d      }t        |g dg dg dg dg dg       y )Nr   r	   r   )r   r   r	   r   r	   r	   r   r   r   s      r3   test_iterate_structure02z.TestNdimageMorphology.test_iterate_structure02k  sO    a&a&a& ''2!#	(1(1(1(1	(3 	4r5   c                     g dg dg dg}t        j                  |dd      }g dg dg dg dg dg}t        |d   |       t        |d   ddg       y )	Nr   r   r   r	   r   r   r   r   )r   r   r   r   )r.   r   r0   r2   s       r3   test_iterate_structure03z.TestNdimageMorphology.test_iterate_structure03v  s`     ''15#####	%
 	"#a&(3SVaV$r5   c                 r    t        j                  g |      }t        j                  |      }t	        |d       y Nr	   r*   rx   r   binary_erosionr   r.   r   r/   r0   s       r3   test_binary_erosion01z+TestNdimageMorphology.test_binary_erosion01  s,    wwr5!$$T*!#q)r5   c                 v    t        j                  g |      }t        j                  |d      }t	        |d       y Nr	   border_valuer   r   s       r3   test_binary_erosion02z+TestNdimageMorphology.test_binary_erosion02  s.    wwr5!$$T:!#q)r5   c                 v    t        j                  dg|      }t        j                  |      }t	        |dg       y Nr	   r   r   r   s       r3   test_binary_erosion03z+TestNdimageMorphology.test_binary_erosion03  s0    wwsE"$$T*!#s+r5   c                 z    t        j                  dg|      }t        j                  |d      }t	        |dg       y r   r   r   s       r3   test_binary_erosion04z+TestNdimageMorphology.test_binary_erosion04  s2    wwsE"$$T:!#s+r5   c                 x    t        j                  dg|      }t        j                  |      }t	        |g d       y )Nr   r   r   r   s       r3   test_binary_erosion05z+TestNdimageMorphology.test_binary_erosion05  s.    wwsE"$$T*!#y1r5   c                 |    t        j                  dg|      }t        j                  |d      }t	        |g d       y Nr   r	   r   r   r   r   s       r3   test_binary_erosion06z+TestNdimageMorphology.test_binary_erosion06  s0    wwsE"$$T:!#y1r5   c                 x    t        j                  dg|      }t        j                  |      }t	        |g d       y )Nr    r   r   r   s       r3   test_binary_erosion07z+TestNdimageMorphology.test_binary_erosion07  s.    wwsE"$$T*!#7r5   c                 |    t        j                  dg|      }t        j                  |d      }t	        |g d       y )Nr    r	   r   r   r   r   s       r3   test_binary_erosion08z+TestNdimageMorphology.test_binary_erosion08  s0    wwsE"$$T:!#7r5   c                     t        j                  dg|      }d|d<   t        j                  |      }t	        |g d       y )Nr    r   r   r   r   r   r   r   r   r   s       r3   test_binary_erosion09z+TestNdimageMorphology.test_binary_erosion09  s7    wwsE"Q$$T*!#7r5   c                     t        j                  dg|      }d|d<   t        j                  |d      }t	        |g d       y )Nr    r   r   r	   r   )r	   r   r   r   r	   r   r   s       r3   test_binary_erosion10z+TestNdimageMorphology.test_binary_erosion10  s9    wwsE"Q$$T:!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||d      }t	        |g d       y )Nr    r   r   r	   r   r	   r	   r   r	   r   r	   r   r	   r   r.   r   r/   r   r0   s        r3   test_binary_erosion11z+TestNdimageMorphology.test_binary_erosion11  s@    wwsE"Q$$T6B!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||dd      }t	        |g d       y )	Nr    r   r   r   r	   r   originr   r	   r   r	   r	   r   r   s        r3   test_binary_erosion12z+TestNdimageMorphology.test_binary_erosion12  sB    wwsE"Q$$T6"M!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||dd      }t	        |g d       y )Nr    r   r   r   r	   r   r	   r	   r   r	   r   r   r   s        r3   test_binary_erosion13z+TestNdimageMorphology.test_binary_erosion13  sB    wwsE"Q$$T6!L!#7r5   c                     t        j                  dg|      }d|d<   ddg}t        j                  ||d      }t	        |g d       y )Nr    r   r   r	   r   )r	   r	   r   r   r	   r   r   s        r3   test_binary_erosion14z+TestNdimageMorphology.test_binary_erosion14  sD    wwsE"QQ$$T6B!#7r5   c                     t        j                  dg|      }d|d<   ddg}t        j                  ||dd      }t	        |g d       y )Nr    r   r   r	   r   r   )r	   r   r   r	   r	   r   r   s        r3   test_binary_erosion15z+TestNdimageMorphology.test_binary_erosion15  sF    wwsE"QQ$$T6"M!#7r5   c                 ~    t        j                  ddg|      }t        j                  |d      }t	        |dgg       y r   r   r   s       r3   test_binary_erosion16z+TestNdimageMorphology.test_binary_erosion16  s6    ww1vu%$$T:!#u-r5   c                 z    t        j                  ddg|      }t        j                  |      }t	        |dgg       y r   r   r   s       r3   test_binary_erosion17z+TestNdimageMorphology.test_binary_erosion17  s4    ww1vu%$$T*!#u-r5   c                 |    t        j                  ddg|      }t        j                  |      }t	        |g dg       y )Nr	   r   r   r   r   r   r   s       r3   test_binary_erosion18z+TestNdimageMorphology.test_binary_erosion18  s2    ww1vu%$$T*!#	{3r5   c                     t        j                  ddg|      }t        j                  |d      }t	        |g dg       y )Nr	   r   r   r   r   r   s       r3   test_binary_erosion19z+TestNdimageMorphology.test_binary_erosion19  s4    ww1vu%$$T:!#	{3r5   c                     t        j                  ddg|      }t        j                  |      }t	        |g dg dg dg       y )Nr   r   r   r   r   s       r3   test_binary_erosion20z+TestNdimageMorphology.test_binary_erosion20  s=    ww1vu%$$T*!#	(1(1(3 	4r5   c                     t        j                  ddg|      }t        j                  |d      }t	        |g dg dg dg       y r   r   r   s       r3   test_binary_erosion21z+TestNdimageMorphology.test_binary_erosion21	  s?    ww1vu%$$T:!#	(1(1(3 	4r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg d	g d
g dg|      }t        j                  |d      }t	        ||       y )N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   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   r2   r/   r0   s        r3   test_binary_erosion22z+TestNdimageMorphology.test_binary_erosion22  sq    ,,,,,,,,. xx111111113 5:; $$T:!#x0r5   c                    t        j                  dd      }g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg d	g dg|      }t        j                  ||d
      }t        ||       y )Nr   r   r   r   r   r   r   r   r   r	   r   )r   r   r*   r+   r   r   r.   r   r   r2   r/   r0   s         r3   test_binary_erosion23z+TestNdimageMorphology.test_binary_erosion23&  s    221a8,,,,,,,,. xx111111113 5:; $$T6B!#x0r5   c                     ddgddgg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g dg d
g dg dg|      }t        j                  ||d      }t	        ||       y )Nr   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   s         r3   test_binary_erosion24z+TestNdimageMorphology.test_binary_erosion24<  s    a&a&,,,,,,,,. xx111111113 5:; $$T6B!#x0r5   c                     g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  ||d      }t	        ||       y )Nr   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   s         r3   test_binary_erosion25z+TestNdimageMorphology.test_binary_erosion25S  s     -,,,,,,,. xx111111113 5:; $$T6B!#x0r5   c                     g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg d	g d
g dg dg dg dg|      }t        j                  ||dd      }t	        ||       y )Nr   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   s         r3   test_binary_erosion26z+TestNdimageMorphology.test_binary_erosion26k  s     -,,,,,,,. xx111111113 5:; $$T6,46!#x0r5   c           
          g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  ||dd	      }t        ||       y 
Nr   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   
iterationsr*   r+   boolr   r   r   r.   r   r2   r/   r0   s        r3   test_binary_erosion27z+TestNdimageMorphology.test_binary_erosion27  s     *))))))+ xx.......0 267 $$T6013!#x0r5   c           
      :   g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  |j                  t              }t        j                  ||dd|	       t        ||       y )
Nr   r   r  r  r  r  r	   r   r   r  outputr*   r+   r  rK   rL   r   r   r   r  s        r3   test_binary_erosion28z+TestNdimageMorphology.test_binary_erosion28  s     *))))))+ xx.......0 267 hhtzz4(tV!*+C	9!#x0r5   c           
          g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  ||dd	
      }t        ||       y )Nr   r   r  r  r  r  r	   r	   r	   r	   r	   r	   r	   r	   r   r  r  r  s        r3   test_binary_erosion29z+TestNdimageMorphology.test_binary_erosion29       *))))))+ xx.......0 267 $$T623C!#x0r5   c           
         g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  |j                  t              }t        j                  ||dd	|
       t        ||       t        j                  ||dd	|
       t        ||       y )Nr   r   r  r  r  r  r"  r	   r   r  r  r  s        r3   test_binary_erosion30z+TestNdimageMorphology.test_binary_erosion30  s     *))))))+ xx.......0 267 hhtzz4(tV!*+C	9!#x0 	tV!*+D	:!$1r5   c           
      <   g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg d	g d
g dg d
g d	g dgt              }t        j                  |j                  t              }t        j                  ||dd|d       t        ||       y )Nr   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  s        r3   test_binary_erosion31z+TestNdimageMorphology.test_binary_erosion31  s     *))))))+ xx.......0 267 hhtzz4(tV!*+C	J!#x0r5   c           
          g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  ||dd	      }t        ||       y r  r  r  s        r3   test_binary_erosion32z+TestNdimageMorphology.test_binary_erosion32  r$  r5   c           
          g dg dg dg}g dg dg dg dg dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg d	g d
g d
g d
g dg dgt              }t        j                  ||d|d      }t        ||       y )Nr   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   maskr  r  r.   r   r2   r2  r/   r0   s         r3   test_binary_erosion33z+TestNdimageMorphology.test_binary_erosion33  s     *))))))+ &%%%%%%' xx.......0 267 $$T623$2O!#x0r5   c           
         g dg dg dg}g dg dg dg dg dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  ||d|	      }t        ||       y )
Nr   r   r  r  r  r  r   r   r	   r   r	   r   r   r	   )r   r2  r  r3  s         r3   test_binary_erosion34z+TestNdimageMorphology.test_binary_erosion34-  s     *))))))+ &%%%%%%' xx.......0 267 $$T623$@!#x0r5   c           
         g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }g d	g d
g dg d
g d	g dg dg}t        j                  ||      }t        j                  |t        j                  |            }t        j
                  ||      }t        j                  |j                  t              }t        j                  ||dd|d|       t        ||       y )Nr   r   r  r  r6  r  r  r"  r(  r)  r*  r+  r	   r  )r   r  r  r   r2  )r*   r+   r  logical_andlogical_not
logical_orrK   rL   r   r   r   )r.   r   r2  r/   tmpr2   r0   s          r3   test_binary_erosion35z+TestNdimageMorphology.test_binary_erosion35J  s     &%%%%%%' xx.......0 267 %$$$$$$& >>#t,nnT2>>$#78==3/hhtzz4(tV!*+C&.T	; 	"#x0r5   c                    g dg dg dg}g dg dg dg dg dg dg dg dg}g dg dg dg dg d	g dg dg dg}t        j                  g dg d
g dg dg dg dg dg dg      }t        j                  ||      }t        j                  |t        j                  |            }t        j                  ||      }t        j                  |||dd      }t        ||       y )Nr   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  )r2  r   r   )r*   r+   r9  r:  r;  r   r   r   )r.   r   r2  r<  r/   r2   r0   s          r3   test_binary_erosion36z+TestNdimageMorphology.test_binary_erosion36l  s     )(((((((* (''''''') xx111111113 4 >>#t,nnT2>>$#78==3/$$T623HF!#x0r5   c                    t        j                  g dg dg dgt              }t        j                  |      }t	        j
                  |||ddd      }t        ||u        t        t	        j
                  ||dd      |       y )Nr   r   rA   r   T)	structurer  r  r   brute_force)rB  r  r   )r*   r+   r  
zeros_liker   r   r   r   )r.   abr0   s       r3   test_binary_erosion37z+TestNdimageMorphology.test_binary_erosion37  s|    HHi!(,. MM!$$Q!A!26DJq""1a046	r5   c                     t        j                  g dg dg dgt              }d}t        t              5  t        j                  ||      }d d d        y # 1 sw Y   y xY w)Nr   r   rA   g       @r  )r*   r+   r  ra   	TypeErrorr   r   )r.   r/   r  _s       r3   test_binary_erosion38z+TestNdimageMorphology.test_binary_erosion38  sM    xx!!#*.0 
9%&&t
CA &%%s   AA c           
      d   t        j                  d      }g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  |j
                  t              }t        j                  ||d	||
       t        ||       y Nr   r   r   r  r  r  r  r"  r	   r  )	r*   rO   r+   r  rK   rL   r   r   r   r.   r  r   r2   r/   r0   s         r3   test_binary_erosion39z+TestNdimageMorphology.test_binary_erosion39      XXa[
 *))))))+ xx.......0 267 hhtzz4(tV!*4S	B!#x0r5   c           
      d   t        j                  d      }g dg dg dg}g dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dgt              }t        j                  |j
                  t              }t        j                  ||d	||
       t        ||       y rN  )	r*   int64r+   r  rK   rL   r   r   r   rO  s         r3   test_binary_erosion40z+TestNdimageMorphology.test_binary_erosion40  rQ  r5   c                 r    t        j                  g |      }t        j                  |      }t	        |d       y r   r*   rx   r   binary_dilationr   r   s       r3   test_binary_dilation01z,TestNdimageMorphology.test_binary_dilation01  s,    wwr5!%%d+!#q)r5   c                 r    t        j                  g |      }t        j                  |      }t	        |d       y )Nr   r*   rK   r   rW  r   r   s       r3   test_binary_dilation02z,TestNdimageMorphology.test_binary_dilation02  s,    xxE"%%d+!#q)r5   c                 v    t        j                  dg|      }t        j                  |      }t	        |dg       y r   rV  r   s       r3   test_binary_dilation03z,TestNdimageMorphology.test_binary_dilation03  s0    wwsE"%%d+!#s+r5   c                 v    t        j                  dg|      }t        j                  |      }t	        |dg       y r   rZ  r   s       r3   test_binary_dilation04z,TestNdimageMorphology.test_binary_dilation04  s0    xxU#%%d+!#s+r5   c                 x    t        j                  dg|      }t        j                  |      }t	        |g d       y Nr   r   rV  r   s       r3   test_binary_dilation05z,TestNdimageMorphology.test_binary_dilation05  s.    wwsE"%%d+!#y1r5   c                 x    t        j                  dg|      }t        j                  |      }t	        |g d       y )Nr   r   rZ  r   s       r3   test_binary_dilation06z,TestNdimageMorphology.test_binary_dilation06  s.    xxU#%%d+!#y1r5   c                     t        j                  dg|      }d|d<   t        j                  |      }t	        |g d       y )Nr   r	   r   rZ  r   s       r3   test_binary_dilation07z,TestNdimageMorphology.test_binary_dilation07  s7    xxU#Q%%d+!#y1r5   c                     t        j                  dg|      }d|d<   d|d<   t        j                  |      }t	        |g d       y )Nr    r	   r   r   rZ  r   s       r3   test_binary_dilation08z,TestNdimageMorphology.test_binary_dilation08  s@    xxU#QQ%%d+!#7r5   c                     t        j                  dg|      }d|d<   t        j                  |      }t	        |g d       y )Nr    r	   r	   r	   r	   r   r   rZ  r   s       r3   test_binary_dilation09z,TestNdimageMorphology.test_binary_dilation09  s7    xxU#Q%%d+!#7r5   c                     t        j                  dg|      }d|d<   t        j                  |d      }t	        |g d       y )Nr    r	   r   r   r   rZ  r   s       r3   test_binary_dilation10z,TestNdimageMorphology.test_binary_dilation10  s9    xxU#Q%%d26!#7r5   c                     t        j                  dg|      }d|d<   t        j                  |d      }t	        |g d       y )Nr    r	   rm  r	   r	   r   r   r   rZ  r   s       r3   test_binary_dilation11z,TestNdimageMorphology.test_binary_dilation11  s9    xxU#Q%%d15!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||      }t	        |g d       y )Nr    r	   r   )r	   r   r	   r   r   rZ  r   s        r3   test_binary_dilation12z,TestNdimageMorphology.test_binary_dilation12  s>    xxU#Q%%dF3!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||d      }t	        |g d       y )Nr    r	   r   r   r   rZ  r   s        r3   test_binary_dilation13z,TestNdimageMorphology.test_binary_dilation13$  s@    xxU#Q%%dFC!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||d      }t	        |g d       y )Nr    r	   r   r   rm  )r   r	   r   r	   r   rZ  r   s        r3   test_binary_dilation14z,TestNdimageMorphology.test_binary_dilation14,  s@    xxU#Q%%dF2>!#7r5   c                     t        j                  dg|      }d|d<   g d}t        j                  ||dd      }t	        |g d       y )Nr    r	   r   r   r   r   r   rZ  r   s        r3   test_binary_dilation15z,TestNdimageMorphology.test_binary_dilation154  sF    xxU#Q%%dF-/aA!#7r5   c                 z    t        j                  ddg|      }t        j                  |      }t	        |dgg       y r   rV  r   s       r3   test_binary_dilation16z,TestNdimageMorphology.test_binary_dilation16=  s4    ww1vu%%%d+!#u-r5   c                 z    t        j                  ddg|      }t        j                  |      }t	        |dgg       y r   rZ  r   s       r3   test_binary_dilation17z,TestNdimageMorphology.test_binary_dilation17C  s4    xxA&%%d+!#u-r5   c                 |    t        j                  ddg|      }t        j                  |      }t	        |g dg       y )Nr	   r   r   rV  r   s       r3   test_binary_dilation18z,TestNdimageMorphology.test_binary_dilation18I  s2    ww1vu%%%d+!#	{3r5   c                     t        j                  ddg|      }t        j                  |      }t	        |g dg dg dg       y ra  rV  r   s       r3   test_binary_dilation19z,TestNdimageMorphology.test_binary_dilation19O  s=    ww1vu%%%d+!#	(1(1(3 	4r5   c                     t        j                  ddg|      }d|d<   t        j                  |      }t	        |g dg dg dg       y )Nr   r	   r	   r	   r   r   rZ  r   s       r3   test_binary_dilation20z,TestNdimageMorphology.test_binary_dilation20W  sF    xxA&T
%%d+!#	(1(1(3 	4r5   c                     t        j                  dd      }t        j                  ddg|      }d|d<   t        j                  ||      }t        |g dg dg dg       y )Nr   r   r	   r  r   )r   r   r*   rK   rW  r   )r.   r   r   r/   r0   s        r3   test_binary_dilation21z,TestNdimageMorphology.test_binary_dilation21`  sZ    221a8xxA&T
%%dF3!#	(1(1(3 	4r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |      }t	        ||       y )Nr   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   rW  r   r   s        r3   test_binary_dilation22z,TestNdimageMorphology.test_binary_dilation22j  so    ,,,,,,,,. xx111111113 5:; %%d+!#x0r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |d      }t	        ||       y )N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   r   r   r   r	   r   r  r   s        r3   test_binary_dilation23z,TestNdimageMorphology.test_binary_dilation23  sq    ,,,,,,,,. xx111111113 5:; %%d;!#x0r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |d      }t	        ||       y )N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  rm  r  r   s        r3   test_binary_dilation24z,TestNdimageMorphology.test_binary_dilation24  sq    ,,,,,,,,. xx111111113 5:; %%d6:!#x0r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |dd      }t	        ||       y )N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	   ry  r  r   s        r3   test_binary_dilation25z,TestNdimageMorphology.test_binary_dilation25  ss    ,,,,,,,,. xx111111113 5:; %%d6J!#x0r5   c                    t        j                  dd      }g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg d	g d
g dg dg|      }t        j                  ||      }t        ||       y )Nr   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+   rW  r   r   s         r3   test_binary_dilation26z,TestNdimageMorphology.test_binary_dilation26  s    221a8,,,,,,,,. xx111111113 5:; %%dF3!#x0r5   c                     ddgddgg}g dg dg dg dg dg dg d	g d	g}t        j                  g d	g dg d	g dg d
g dg d	g d	g|      }t        j                  ||      }t	        ||       y )Nr   r	   r   r  r   r  r   r   r	   r	   r   r	   r	   r   r   r   r   r   r  r   s         r3   test_binary_dilation27z,TestNdimageMorphology.test_binary_dilation27  s    a&a&,,,,,,,,. xx111111113 5:; %%dF3!#x0r5   c                     g dg dg dg dg}t        j                  g dg dg dg dg|      }t        j                  |d      }t	        ||       y )N)r	   r	   r	   r	   )r	   r   r   r	   )r   r   r   r   r	   r   r  r   s        r3   test_binary_dilation28z,TestNdimageMorphology.test_binary_dilation28  sX        " xx%%%' )./ %%d;!#x0r5   c                     ddgddgg}g dg dg dg dg dg}t        j                  g dg dg dg dg dgt              }t        j                  ||d      }t        ||       y )	Nr   r	   r   r   r   r   r	   r   r   r   r	   r	   r   r   r   rI  r*   r+   r  r   rW  r   r  s        r3   test_binary_dilation29z,TestNdimageMorphology.test_binary_dilation29  u    a&a&#####	% xx((((	* ,0	1
 %%dFqA!#x0r5   c                    ddgddgg}g dg dg dg dg dg}t        j                  g dg dg dg dg dgt              }t        j                  |j                  t              }t        j                  ||d|       t        ||       y )	Nr   r	   r   r  r  r   r   r  r  r*   r+   r  rK   rL   r   rW  r   r  s        r3   test_binary_dilation30z,TestNdimageMorphology.test_binary_dilation30	      a&a&#####	% xx((((	* ,0	1
 hhtzz4(f3G!#x0r5   c                     ddgddgg}g dg dg dg dg dg}t        j                  g dg dg dg dg dgt              }t        j                  ||d	      }t        ||       y )
Nr   r	   r  r  r   r	   r	   r	   r	   r   r   r   rI  r  r  s        r3   test_binary_dilation31z,TestNdimageMorphology.test_binary_dilation31  r  r5   c                    ddgddgg}g dg dg dg dg dg}t        j                  g dg dg dg dg dgt              }t        j                  |j                  t              }t        j                  ||d|	       t        ||       y )
Nr   r	   r  r  r   r  r   r   r  r  r  s        r3   test_binary_dilation32z,TestNdimageMorphology.test_binary_dilation32,  r  r5   c                    g dg dg dg}t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  ||d	|d
      }t        ||       y )Nr   r   r   r   r   r   r   r   r	   r	   r   r   r?  r  r   r   r   r   r   r   r	   r   r   r   r  r2  r   r  r3  s         r3   test_binary_dilation33z,TestNdimageMorphology.test_binary_dilation33>  s     88555555557 9=> xx111111113 59: xx111113135 7;< %%dFr+/aA!#x0r5   c                 F   g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg d	g dg dgt              }t        j                  |j                  t              }t        j                  ||d
|d      }t        ||       y )Nr   r   r   r   r	   r	   r   r   r   r   r   r  r   r   r   r   r   r	   r  r  r3  s         r3   test_binary_dilation34z,TestNdimageMorphology.test_binary_dilation34_  s     -,,,,,,,. xx111111113 59: xx

D)%%dFr+/aA!#x0r5   c                    g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg      }g dg dg dg dg dg dg dg dg}t        j                  ||      }t        j                  |t        j                  |            }t        j                  ||      }t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  ||dd      }t        ||       y )Nr  r  r   r  r  r  r   r   r   r   r   r   r  r	   )r2  r   r   )r*   r+   r9  r:  r;  r   rW  r   )r.   r   r<  r/   r2  r2   r0   s          r3   test_binary_dilation35z,TestNdimageMorphology.test_binary_dilation35x  s    '''''''') xx111111113 4 )(((((((* >>#t,nnT2>>$#78==3/xx111111113 5:; %%d-3!E!#x0r5   c                    g dg dg dg}t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dg dgt              }t        j                  |||d	
      }t        ||       y )Nr   r   r   r   r  r?  r  r  r   r2  r   )r*   r+   r  r   binary_propagationr   r3  s         r3   test_binary_propagation01z/TestNdimageMorphology.test_binary_propagation01  s     88555555557 9=> xx111111113 59: xx111111113 59: ((v.2D!#x0r5   c                 D   g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg d	g dg dgt              }t        j                  |j                  t              }t        j                  |||d
      }t        ||       y )Nr   r   r   r  r  r   r   r   r   r	   r  )r*   r+   r  rK   rL   r   r  r   r3  s         r3   test_binary_propagation02z/TestNdimageMorphology.test_binary_propagation02  s     -,,,,,,,. xx111111113 59: xx

D)((v.2D!#x0r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg d	g dg dg dg|      }t        j                  |      }t	        ||       y )
Nr   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   binary_openingr   r   s        r3   test_binary_opening01z+TestNdimageMorphology.test_binary_opening01  o    ,,,,,,,,. xx111111113 5:; $$T*!#x0r5   c                    t        j                  dd      }g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dg dg|      }t        j                  ||      }t        ||       y )	Nr   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   s         r3   test_binary_opening02z+TestNdimageMorphology.test_binary_opening02      221a8,,,,,,,,. xx111111113 5:; $$T62!#x0r5   c                     g dg dg dg dg dg dg dg dg}t        j                  g dg d	g d
g dg dg dg dg dg|      }t        j                  |      }t	        ||       y )Nr   r  )r   r	   r	   r	   r   r	   r   r   r  r   r   r   r   r  r  r  r  )r*   r+   r   binary_closingr   r   s        r3   test_binary_closing01z+TestNdimageMorphology.test_binary_closing01  r  r5   c                    t        j                  dd      }g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg dg dg dg|      }t        j                  ||      }t        ||       y )	Nr   r   r  r   r  r  r  r  )r   r   r*   r+   r  r   r   s         r3   test_binary_closing02z+TestNdimageMorphology.test_binary_closing02  r  r5   c           
         t        j                  g dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dgt              }t        j                  |      }t        ||       y )Nr   r   r   r*   r+   r  r   binary_fill_holesr   r.   r2   r/   r0   s       r3   test_binary_fill_holes01z.TestNdimageMorphology.test_binary_fill_holes011  z    8855555557 9=> xx11111113 59: ''-!#x0r5   c           
         t        j                  g dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dgt              }t        j                  |      }t        ||       y )Nr   r   r   r   r  r  s       r3   test_binary_fill_holes02z.TestNdimageMorphology.test_binary_fill_holes02C  r  r5   c           
         t        j                  g dg dg dg dg dg dg dgt              }t        j                  g dg dg dg dg dg dg dgt              }t        j                  |      }t        ||       y )Nr   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  s       r3   test_binary_fill_holes03z.TestNdimageMorphology.test_binary_fill_holes03U  r  r5   c                     t        j                  g dg dg dg      }g dg dg}t        j                  ||      }t	        g dg dg d	g|       y )
Nr   r   r    r	   r   r!   r   r^   r   r    r    r   r   r!   r	   r   r	   r	   r   	footprintr   r   r	   r	   r	   r   r   r	   r   r	   r    r    r   r   r	   r*   r+   r   grey_erosionr   r.   r+   r  r  s       r3   test_grey_erosion01z)TestNdimageMorphology.test_grey_erosion01g  sS    /))+ , 	*	%%eyA!?#2#2#45;	=r5   c                     t        j                  g dg dg dg      }g dg dg}t        j                  |||       t	        g dg dg d	g|       y )
Nr  r  r  r   r  )r  r  r  r  r  r  )r.   r+   r  s      r3   test_grey_erosion01_overlapz1TestNdimageMorphology.test_grey_erosion01_overlapq  sS    /)*, - 	*	UiF!?#2#2#45:	<r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t	        g dg d	g d
g|       y )Nr  r  r  r   r  r   r  rB  r  r  r  r  r.   r+   r  rB  r  s        r3   test_grey_erosion02z)TestNdimageMorphology.test_grey_erosion02{  b    /))+ , 	*		*	%%ey09;!?#2#2#45;	=r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t	        g dg d	g d
g|       y )Nr  r  r  r   r  r   r  rp  )r	   r   r   r   r   )r   r   r   r   r   r  r  s        r3   test_grey_erosion03z)TestNdimageMorphology.test_grey_erosion03  r  r5   c                     t        j                  g dg dg dg      }g dg dg}t        j                  ||      }t	        g dg dg d	g|       y )
Nr  r  r  r   r   r  r!   r!   r^   r^   r    r!   r^   r   r^   r!   r   r   r   r!   r!   r*   r+   r   grey_dilationr   r  s       r3   test_grey_dilation01z*TestNdimageMorphology.test_grey_dilation01  sS    /))+ , 	*	&&u	B!?#2#2#45;	=r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t	        g dg d	g d
g|       y )Nr  r  r  r   r   r   r  r  r  r  r  r  s        r3   test_grey_dilation02z*TestNdimageMorphology.test_grey_dilation02  sb    /))+ , 	*		*	&&u	1:<!?#2#2#45;	=r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t	        g dg d	g d
g|       y )Nr  r  r  r   r   r   r  )r   r   
   r  r   )r   r  r^   r  r   )r^   r^   r^   r   r   r  r  s        r3   test_grey_dilation03z*TestNdimageMorphology.test_grey_dilation03  sc    /))+ , 	*		*	&&u	1:<!#4#4#2#45;	=r5   c                     t        j                  g dg dg dg      }g dg dg}t        j                  ||      }t        j                  ||      }t        j
                  ||      }t        ||       y Nr  r  r  r   r  r  r*   r+   r   r  r  grey_openingr   r.   r+   r  r<  r2   r  s         r3   test_grey_opening01z)TestNdimageMorphology.test_grey_opening01  si    /))+ , 	*	""5I>((	B%%eyA!(F3r5   c                    t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }t        j
                  |||      }t        ||       y Nr  r  r  r   r  r   r  r  r.   r+   r  rB  r<  r2   r  s          r3   test_grey_opening02z)TestNdimageMorphology.test_grey_opening02  s    /))+ , 	*		*	""5I-68((	3<>%%ey09;!(F3r5   c                     t        j                  g dg dg dg      }g dg dg}t        j                  ||      }t        j                  ||      }t        j
                  ||      }t        ||       y r   r*   r+   r   r  r  grey_closingr   r  s         r3   test_grey_closing01z)TestNdimageMorphology.test_grey_closing01  si    /))+ , 	*	##EY?''yA%%eyA!(F3r5   c                    t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }t        j
                  |||      }t        ||       y r  r
  r  s          r3   test_grey_closing02z)TestNdimageMorphology.test_grey_closing02  s    /))+ , 	*		*	##EY.79''y2;=%%ey09;!(F3r5   c                 h   t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }||z
  }t        j
                  |j                  |j                        }t        j                  ||||       t        ||       y 	Nr  r  r  r   r  r   r  r  rB  r  )
r*   r+   r   r  r  rK   rL   r   morphological_gradientr   r.   r+   r  rB  tmp1tmp2r2   r  s           r3   test_morphological_gradient01z3TestNdimageMorphology.test_morphological_gradient01  s    /))+ , 	*		*	$$Ui/8:##EY.79$;%++u{{3&&u	1:6	K!(F3r5   c                    t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }||z
  }t        j
                  |||      }t        ||       y r  )r*   r+   r   r  r  r  r   r  s           r3   test_morphological_gradient02z3TestNdimageMorphology.test_morphological_gradient02  s    /))+ , 	*		*	$$Ui/8:##EY.79$;//:CE!(F3r5   c                 t   t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }||z   d|z  z
  }t        j
                  |j                  |j                        }t        j                  ||||	       t        ||       y )
Nr  r  r  r   r  r   r  r   r  )
r*   r+   r   r  r  rK   rL   r   morphological_laplacer   r  s           r3   test_morphological_laplace01z2TestNdimageMorphology.test_morphological_laplace01  s    /))+ , 	*		*	$$Ui/8:##EY.79$;U*%++u{{3%%ey09&	J!(F3r5   c                    t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }t        j                  |||      }||z   d|z  z
  }t        j
                  |||      }t        ||       y )	Nr  r  r  r   r  r   r  r   )r*   r+   r   r  r  r  r   r  s           r3   test_morphological_laplace02z2TestNdimageMorphology.test_morphological_laplace02  s    /))+ , 	*		*	$$Ui/8:##EY.79$;U*..u	9BD!(F3r5   c                 8   t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }||z
  }t        j                  |j
                  |j                        }t        j                  ||||       t        ||       y r  )	r*   r+   r   r  rK   rL   r   white_tophatr   r  s          r3   test_white_tophat01z)TestNdimageMorphology.test_white_tophat01#  s    /))+ , 	*		*	""5I-683;%++u{{3Ui'0	A!(F3r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }||z
  }t        j                  |||      }t        ||       y r  )r*   r+   r   r  r  r   r  s          r3   test_white_tophat02z)TestNdimageMorphology.test_white_tophat021  st    /))+ , 	*		*	""5I-683;%%ey09;!(F3r5   c           
      |   t        j                  g dg dg dg dg dg dg dgt         j                        }t        j                  dt         j                        }t        j                  g dg dg dg d	g d
g d	g dgt         j                        }t	        j
                  ||      }t        ||       y )Nr	   r   r   r   r   r   r   r  r   r	   r	   r	   r   r	   r   r0  rA   ru   )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	   rB  )r*   r+   bool_rx   r   r  r   r.   r+   rB  r2   r  s        r3   test_white_tophat03z)TestNdimageMorphology.test_white_tophat03>      ///////1 9;B GGF"((3	8822222224 <>88E %%eyA8V,r5   c                    t        j                  dt         j                        }t        j                  dt         j                        }t        j                  |t         j
                        }t        j                  |||       y Nr    rA   ru   )rB  r  )r*   eyer'  rx   
empty_likerM   r   r  r.   r+   rB  r  s       r3   test_white_tophat04z)TestNdimageMorphology.test_white_tophat04R  R    q)GGF"((3	 uBJJ7UiGr5   c                 8   t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }||z
  }t        j                  |j
                  |j                        }t        j                  ||||       t        ||       y r  )	r*   r+   r   r  rK   rL   r   black_tophatr   r  s          r3   test_black_tophat01z)TestNdimageMorphology.test_black_tophat01Z  s    /))+ , 	*		*	""5I-68;%++u{{3Ui'0	A!(F3r5   c                     t        j                  g dg dg dg      }g dg dg}g dg dg}t        j                  |||      }||z
  }t        j                  |||      }t        ||       y r  )r*   r+   r   r  r3  r   r  s          r3   test_black_tophat02z)TestNdimageMorphology.test_black_tophat02h  st    /))+ , 	*		*	""5I-68;%%ey09;!(F3r5   c           
      |   t        j                  g dg dg dg dg dg dg dgt         j                        }t        j                  dt         j                        }t        j                  g dg dg dg dg d	g dg d
gt         j                        }t	        j
                  ||      }t        ||       y )Nr$  r  r%  r0  rA   ru   )r   r	   r	   r	   r	   r	   r	   )r	   r   r   r   r   r   r	   )r	   r   r   r   r	   r   r	   r1  r&  )r*   r+   r'  rx   r   r3  r   r(  s        r3   test_black_tophat03z)TestNdimageMorphology.test_black_tophat03u  r*  r5   c                    t        j                  dt         j                        }t        j                  dt         j                        }t        j                  |t         j
                        }t        j                  |||       y r,  )r*   r-  r'  rx   r.  rM   r   r3  r/  s       r3   test_black_tophat04z)TestNdimageMorphology.test_black_tophat04  r1  r5   c                 :   g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg dg dg d	g d	g dg|      }t        j                  |j                  t              }t        j                  |||
       t        ||       y )Nr   r   r   )r   r	   r   r   r   rj  r   )r   r   r	   r	   r	   r   )r   r	   r	   r	   r	   r  )r*   r+   rK   rL   r  r   binary_hit_or_missr   r   s         r3   test_hit_or_miss01z(TestNdimageMorphology.test_hit_or_miss01  s     $#######% xx(((((((* ,12 hhtzz4(""4<!(C0r5   c                     g dg dg dg}g dg dg dg dg}t        j                  g dg dg dg dg|      }t        j                  ||      }t	        ||       y )Nr   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   s         r3   test_hit_or_miss02z(TestNdimageMorphology.test_hit_or_miss02  sk     -,,,. xx11113 5:; ((v6!(C0r5   c                    g dg dg dg}g dg dg dg}g dg dg dg dg dg dg dg dg}t        j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |||      }t	        ||       y )Nr   r   r   r   r  r@  r  r  r  r  r  r   rA  )r.   r   struct1struct2r2   r/   r0   s          r3   test_hit_or_miss03z(TestNdimageMorphology.test_hit_or_miss03  s      -,,,,,,,. xx111111113 5:; ((w@!(C0r5   N)__name__
__module____qualname__pytestmarkparametrizer
   r4   r:   r?   rV   r\   r_   rc   rk   rm   ro   rs   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.  r4  r7  r=  r@  rG  rL  rP  rT  rX  r[  r]  r_  rb  rd  rf  rh  rk  rn  rq  rs  ru  rw  rz  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)  r0  r4  r6  r8  r:  r>  rB  rF   r5   r3   r   r      s5   [[We,*0 -*0X [[We,*0 -*0X [[We,*0 -*0X [[We,./ -./` [[We,)0 -)0V [[We,)0 -)0V  [[We,"0 -"0H [[We,!0 -!0F [[We,./ -./`( [[We,# -# [[We,* -*. [[We,./ -./` [[We,, -, [[We,, -,-
(-577	:	4% [[We,* -*
 [[We,* -*
 [[We,, -,
 [[We,, -,
 [[We,2 -2
 [[We,2 -2
 [[We,8 -8
 [[We,8 -8
 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,. -.
 [[We,. -.
 [[We,4 -4
 [[We,4 -4
 [[We,4 -4 [[We,4 -4 [[We,1 -1( [[We,1 -1* [[We,1 -1, [[We,1 -1. [[We,1 -101,1.1,281.1,1:1: 1D!1FD1010 [[We,* -*
 [[We,* -*
 [[We,, -,
 [[We,, -,
 [[We,2 -2
 [[We,2 -2
 [[We,2 -2 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,8 -8 [[We,. -.
 [[We,. -.
 [[We,4 -4
 [[We,4 -4 [[We,4 -4 [[We,4 -4 [[We,1 -1( [[We,1 -1( [[We,1 -1( [[We,1 -1( [[We,1 -1* [[We,1 -1, [[We,
1 -
11"1$1"1$1B12 [[We,&1 -&1P1B12 [[We,1 -1( [[We,1 -1* [[We,1 -1( [[We,1 -1*1$1$1$=<
=
==
=
=44444 44 444-(H44-(H [[We,1 -10 [[We,1 -1 [[We,1 -1r5   r   c                       e Zd Zd Zd Zd Zy)TestDilateFixc                 H   t        j                  g dg dg dg dg dgt         j                        | _        t        j                  d      | _        t        j                  | j                  | j                        }|j                  t         j                        | _        y )Nr   r  r  rA   ru   r&  )	r*   r+   uint8rx   sq3x3r   rW  view
dilated3x3)r.   rT  s     r3   setup_methodzTestDilateFix.setup_method  sn    XX....	0 8:xx	A
 WWV_
,,TZZ4::N
$//"((3r5   c                     t        j                  | j                  | j                        }t	        || j
                  dz          y )Nr&  r	   )r   r  r+   rR  r   rT  r.   results     r3   test_dilation_square_structurez,TestDilateFix.test_dilation_square_structure  s/    &&tzzTZZH!&$//A*=>r5   c                 r    t        j                  | j                  d      }t        || j                         y )Nr   )size)r   r  r+   r   rT  rW  s     r3   test_dilation_scalar_sizez'TestDilateFix.test_dilation_scalar_size  s&    &&tzz:!&$//:r5   N)rG  rH  rI  rU  rY  r\  rM  r5   r3   rO  rO    s    
4?
;r5   rO  c                       e Zd Zd Zd Zd Zy)TestBinaryOpeningClosingc                 d   t        j                  dt              }d|ddddf<   d|d<   || _        t        j                  d      | _        t        j                  | j                  | j
                  dd d      | _        t        j                  | j                  | j
                  dd d      | _
        y )	Nr    r    rA   Tr	   r   )r   r   ru   r   )r*   rK   r  r+   rx   rR  r   r  
opened_oldr  
closed_old)r.   rE  s     r3   rU  z%TestBinaryOpeningClosing.setup_method  s    HHV4(!A#qs($
WWV_
!00TZZ12D!=!00TZZ12D!=r5   c           
          t        j                  | j                  | j                  dd dd dd      }t	        || j
                         y Nr	   r   F)r   r  r+   rR  r   ra  )r.   
opened_news     r3   test_opening_new_argumentsz3TestBinaryOpeningClosing.test_opening_new_arguments  9    ++DJJ

At,-tQ?
:t7r5   c           
          t        j                  | j                  | j                  dd dd dd      }t	        || j
                         y rd  )r   r  r+   rR  r   rb  )r.   
closed_news     r3   test_closing_new_argumentsz3TestBinaryOpeningClosing.test_closing_new_arguments 	  rg  r5   N)rG  rH  rI  rU  rf  rj  rM  r5   r3   r^  r^    s    	=8
8r5   r^  c                      t        j                  dg      } t        t        t        j
                  | d       t        t        t        j
                  | d       y Nr	   g      ?rI        ?)r*   rx   ra   rJ  r   r   r/   s    r3   )test_binary_erosion_noninteger_iterationsro  	  ;     77A3<D)W33TcJ)W33TcJr5   c                      t        j                  dg      } t        t        t        j
                  | d       t        t        t        j
                  | d       y rl  )r*   rx   ra   rJ  r   rW  rn  s    r3   *test_binary_dilation_noninteger_iterationsrr  	  s;     77A3<D)W44dsK)W44dsKr5   c                      t        j                  dg      } t        t        t        j
                  | d       t        t        t        j
                  | d       y rl  )r*   rx   ra   rJ  r   r  rn  s    r3   )test_binary_opening_noninteger_iterationsrt  	  rp  r5   c                      t        j                  dg      } t        t        t        j
                  | d       t        t        t        j
                  | d       y rl  )r*   rx   ra   rJ  r   r  rn  s    r3   )test_binary_closing_noninteger_iterationsrv  	  rp  r5   c                      t        j                  dg      } t        j                  | dd      t        j                  | dt	        d            k(  sJ t        j                  | dd      t        j                  | dt	        d            k(  sJ y )Nr	   r   rm  )r  rC  r   )r*   rx   r   r   r  rn  s    r3   ;test_binary_closing_noninteger_brute_force_passes_when_truerx  &	  s     77A3<D!!			S		JK K K !!			S		JK K Kr5   function)r   rW  r  r  r  r    rC  FTc                 .   t         j                  j                  d      }|j                  ddd      j	                  t
              }t        t        |       }|j                         } ||||      }t        ||        |||||       t        ||       y )N{   r   r   d   lowhighr[  )rC  r  )rC  r  r  )
r*   randomRandomStaterandintr   r  getattrr   copyr   )ry  r  rC  rstater/   ndi_func	data_origr2   s           r3   test_binary_input_as_outputr  3	  s     YY""3'F>>aac>299$?Dw)H 		I+*MHtY' T{z$Ox&r5   c                  8   t         j                  j                  d      } | j                  ddd      j	                  t
              }|j                         }t        j                  |      }t        ||       t        j                  ||       t        ||       y )Nr{  r   r   r|  r}  r<  )
r*   r  r  r  r   r  r  r   r=  r   )r  r/   r  r2   s       r3   'test_binary_hit_or_miss_input_as_outputr  H	  sx    YY""3'F>>aac>299$?D 		I))$/HtY' tD1x&r5   c                      d} t        j                  t        |       5  t        j                  t        j                  d      d       d d d        y # 1 sw Y   y xY w)Nzinvalid metric provided)matchr`  garbagerv   )rJ  r   
ValueErrorr   rh   r*   rx   )msgs    r3   *test_distance_transform_cdt_invalid_metricr  V	  s<    
#C	z	-&&rwwv.7	9 
.	-	-s   +AA)numpyr*   numpy.testingr   r   r   r   rJ  r   ra   scipyr    r
   r   rO  r^  ro  rr  rt  rv  rx  rK  rL  r  r  r  rM  r5   r3   <module>r     s    6 6  *  G#1 G#1TF; ;08 80KLKK
K M 1v.6' 7 /	''9r5   