<s> import numpy as np <EOL> import mahotas <EOL> import mahotas as mh <EOL> import sys <EOL> from nose . tools import raises <EOL> S = np . array ( [ <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> ] <EOL> ] ) <EOL> M = np . array ( [ <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> ] ) <EOL> def test_watershed ( ) : <EOL> def cast_test ( dtype ) : <EOL> St = S . astype ( dtype ) <EOL> Mt = M . astype ( int ) <EOL> W = mahotas . cwatershed ( <NUM_LIT:2> - St , Mt ) <EOL> assert sys . getrefcount ( W ) == <NUM_LIT:2> <EOL> assert np . all ( W == np . array ( [ [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> ] ] ) ) <EOL> types = [ np . uint8 , np . int8 , np . uint16 , np . int16 , np . int32 , np . uint32 , int , <EOL> np . float32 , np . float64 , float ] <EOL> if hasattr ( np , '<STR_LIT>' ) : <EOL> types . append ( np . float128 ) <EOL> for d in types : <EOL> yield cast_test , d <EOL> @ raises ( TypeError ) <EOL> def test_float16 ( ) : <EOL> dtype = np . float16 <EOL> St = S . astype ( dtype ) <EOL> Mt = M . astype ( int ) <EOL> mh . cwatershed ( <NUM_LIT:2> - St , Mt ) <EOL> def test_watershed2 ( ) : <EOL> S = np . zeros ( ( <NUM_LIT:100> , <NUM_LIT:10> ) , np . uint8 ) <EOL> markers = np . zeros_like ( S ) <EOL> markers [ <NUM_LIT:20> , <NUM_LIT:2> ] = <NUM_LIT:1> <EOL> markers [ <NUM_LIT> , <NUM_LIT:2> ] = <NUM_LIT:2> <EOL> W = mahotas . cwatershed ( S , markers ) <EOL> assert np . all ( ( W == <NUM_LIT:1> ) | ( W == <NUM_LIT:2> ) ) <EOL> @ raises ( ValueError ) <EOL> def test_mismatched_array_markers ( ) : <EOL> S = np . zeros ( ( <NUM_LIT:10> , <NUM_LIT:12> ) , np . uint8 ) <EOL> markers = np . zeros ( ( <NUM_LIT:8> , <NUM_LIT:12> ) , np . uint8 ) <EOL> markers [ <NUM_LIT:2> , <NUM_LIT:2> ] = <NUM_LIT:1> <EOL> markers [ <NUM_LIT:6> , <NUM_LIT:2> ] = <NUM_LIT:2> <EOL> mahotas . cwatershed ( S , markers ) <EOL> def test_mix_types ( ) : <EOL> "<STR_LIT>" <EOL> f = np . zeros ( ( <NUM_LIT:64> , <NUM_LIT:64> ) , np . uint16 ) <EOL> f += ( np . indices ( f . shape ) [ <NUM_LIT:1> ] ** <NUM_LIT:2> ) . astype ( np . uint16 ) <EOL> f += ( ( np . indices ( f . shape ) [ <NUM_LIT:0> ] - <NUM_LIT> ) ** <NUM_LIT:2> ) . astype ( np . uint16 ) <EOL> markers = np . zeros ( ( <NUM_LIT:64> , <NUM_LIT:64> ) , np . int64 ) <EOL> markers [ <NUM_LIT:32> , <NUM_LIT:32> ] = <NUM_LIT:1> <EOL> a , b = mahotas . cwatershed ( f , markers , return_lines = <NUM_LIT:1> ) <EOL> def test_overflow ( ) : <EOL> '''<STR_LIT>''' <EOL> f = np . random . random ( ( <NUM_LIT> , <NUM_LIT:64> ) ) <EOL> f *= <NUM_LIT:255> <EOL> f = f . astype ( np . uint8 ) <EOL> for max_n in [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] : <EOL> markers = np . zeros ( f . shape , np . int ) <EOL> for i in range ( max_n ) : <EOL> while True : <EOL> a = np . random . randint ( f . shape [ <NUM_LIT:0> ] ) <EOL> b = np . random . randint ( f . shape [ <NUM_LIT:1> ] ) <EOL> if markers [ a , b ] == <NUM_LIT:0> : <EOL> markers [ a , b ] = i + <NUM_LIT:1> <EOL> break <EOL> r = mh . cwatershed ( f , markers ) <EOL> assert markers . max ( ) == max_n <EOL> assert r . max ( ) == max_n <EOL> def test_watershed_labeled ( ) : <EOL> import mahotas as mh <EOL> S = np . array ( [ <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> ] <EOL> ] ) <EOL> M = np . array ( [ <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> ] ) <EOL> labeled = mh . cwatershed ( S , M ) <EOL> sizes = mh . labeled . labeled_sum ( S , labeled ) <EOL> assert len ( sizes ) == labeled . max ( ) + <NUM_LIT:1> <EOL> def test_float_input ( ) : <EOL> "<STR_LIT>" <EOL> f = np . random . random ( ( <NUM_LIT> , <NUM_LIT:64> ) ) <EOL> f = mh . gaussian_filter ( f , <NUM_LIT> ) <EOL> f = mh . gaussian_filter ( f , <NUM_LIT> ) <EOL> markers , _ = mh . label ( mh . regmin ( f ) ) <EOL> f = np . round ( f * <NUM_LIT:2> ** <NUM_LIT:30> ) <EOL> wf = mh . cwatershed ( f / <NUM_LIT:2> ** <NUM_LIT> , markers ) <EOL> w32 = mh . cwatershed ( f . astype ( np . int32 ) , markers ) <EOL> assert ( wf == w32 ) . mean ( ) > <NUM_LIT> </s>
