<s> '''<STR_LIT>''' <EOL> import numpy as np <EOL> from numpy . testing import assert_equal , assert_allclose <EOL> from . . sample . ff import sample , find_smallest , extend_bounds <EOL> from . . analyze . ff import analyze , interactions <EOL> def test_find_smallest ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> num_vars = [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:10> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT> ] <EOL> expected = [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:4> , <NUM_LIT:4> , <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:5> , <NUM_LIT:5> , <NUM_LIT:6> ] <EOL> for x , y in zip ( num_vars , expected ) : <EOL> actual = find_smallest ( x ) <EOL> assert_equal ( actual , y ) <EOL> def test_extend_bounds ( ) : <EOL> problem = { '<STR_LIT>' : np . repeat ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] , <NUM_LIT:12> ) . reshape ( <NUM_LIT:2> , <NUM_LIT:12> ) . T , <EOL> '<STR_LIT>' : <NUM_LIT:12> , <EOL> '<STR_LIT>' : [ "<STR_LIT:x>" + str ( x + <NUM_LIT:1> ) for x in range ( <NUM_LIT:12> ) ] <EOL> } <EOL> actual = extend_bounds ( problem ) <EOL> expected = { '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , np . array ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ <NUM_LIT:0> , <NUM_LIT:1> ] ) , np . array ( [ <NUM_LIT:0> , <NUM_LIT:1> ] ) , <EOL> np . array ( [ <NUM_LIT:0> , <NUM_LIT:1> ] ) , np . array ( [ <NUM_LIT:0> , <NUM_LIT:1> ] ) ] , <EOL> '<STR_LIT>' : <NUM_LIT:16> } <EOL> assert_equal ( actual , expected ) <EOL> def test_ff_sample ( ) : <EOL> problem = { '<STR_LIT>' : [ [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] ] , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> actual = sample ( problem ) <EOL> expected = np . array ( [ [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> ] ] , dtype = np . float ) <EOL> assert_equal ( actual , expected ) <EOL> def test_ff_sample_scaled ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> problem = { '<STR_LIT>' : [ [ <NUM_LIT:0.> , <NUM_LIT> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] ] , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> actual = sample ( problem ) <EOL> expected = np . array ( [ [ <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> ] ] , dtype = np . float ) <EOL> assert_equal ( actual , expected ) <EOL> def test_ff_analyze ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> problem = { '<STR_LIT>' : [ [ <NUM_LIT:0.> , <NUM_LIT> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] ] , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> X = np . array ( [ [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> ] ] , dtype = np . float ) <EOL> Y = np . array ( [ <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ] , dtype = np . float ) <EOL> actual = analyze ( problem , X , Y ) <EOL> expected = { '<STR_LIT>' : np . array ( [ - <NUM_LIT:0.5> , <NUM_LIT> , <NUM_LIT:0.> , <NUM_LIT:0.> ] ) , '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> assert_equal ( actual , expected ) <EOL> def test_ff_example ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> problem = { '<STR_LIT>' : np . repeat ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] , <NUM_LIT:12> ) . reshape ( <NUM_LIT:2> , <NUM_LIT:12> ) . T , <EOL> '<STR_LIT>' : <NUM_LIT:12> , <EOL> '<STR_LIT>' : [ "<STR_LIT:x>" + str ( x + <NUM_LIT:1> ) for x in range ( <NUM_LIT:12> ) ] <EOL> } <EOL> X = sample ( problem ) <EOL> Y = X [ : , <NUM_LIT:0> ] + <NUM_LIT:2> * X [ : , <NUM_LIT:1> ] + <NUM_LIT:3> * X [ : , <NUM_LIT:2> ] + <NUM_LIT:4> * X [ : , <NUM_LIT:6> ] * X [ : , <NUM_LIT:11> ] <EOL> expected = np . array ( [ <NUM_LIT:10> , - <NUM_LIT:2> , <NUM_LIT:4> , - <NUM_LIT:8> , <NUM_LIT:2> , <NUM_LIT:6> , - <NUM_LIT:4> , <EOL> <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:6> , - <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:10> , - <NUM_LIT:2> , <NUM_LIT:4> , - <NUM_LIT:8> , <EOL> - <NUM_LIT:2> , - <NUM_LIT:6> , <NUM_LIT:4> , <NUM_LIT:0> , - <NUM_LIT:10> , <NUM_LIT:2> , - <NUM_LIT:4> , <NUM_LIT:8> , <EOL> - <NUM_LIT:10> , <NUM_LIT:2> , - <NUM_LIT:4> , <NUM_LIT:8> , - <NUM_LIT:2> , - <NUM_LIT:6> , <NUM_LIT:4> , <NUM_LIT:0> ] ) <EOL> assert_equal ( Y , expected ) <EOL> Si = analyze ( problem , X , Y ) <EOL> expected = np . array ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , dtype = np . float ) <EOL> assert_equal ( expected , Si [ '<STR_LIT>' ] ) <EOL> def test_interactions_from_saltelli ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> problem = { '<STR_LIT>' : np . repeat ( [ - <NUM_LIT:1> , <NUM_LIT:1> ] , <NUM_LIT:12> ) . reshape ( <NUM_LIT:2> , <NUM_LIT:12> ) . T , <EOL> '<STR_LIT>' : <NUM_LIT:12> , <EOL> '<STR_LIT>' : [ "<STR_LIT:x>" + str ( x + <NUM_LIT:1> ) for x in range ( <NUM_LIT:12> ) ] <EOL> } <EOL> X = sample ( problem ) <EOL> Y = np . array ( [ <NUM_LIT:10> , - <NUM_LIT:2> , <NUM_LIT:4> , - <NUM_LIT:8> , <NUM_LIT:2> , <NUM_LIT:6> , - <NUM_LIT:4> , <NUM_LIT:0> , <EOL> <NUM_LIT:2> , <NUM_LIT:6> , - <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:10> , - <NUM_LIT:2> , <NUM_LIT:4> , - <NUM_LIT:8> , <EOL> - <NUM_LIT:2> , - <NUM_LIT:6> , <NUM_LIT:4> , <NUM_LIT:0> , - <NUM_LIT:10> , <NUM_LIT:2> , - <NUM_LIT:4> , <NUM_LIT:8> , <EOL> - <NUM_LIT:10> , <NUM_LIT:2> , - <NUM_LIT:4> , <NUM_LIT:8> , - <NUM_LIT:2> , - <NUM_LIT:6> , <NUM_LIT:4> , <NUM_LIT:0> ] ) <EOL> Si = analyze ( problem , X , Y , second_order = True ) <EOL> actual = Si [ '<STR_LIT>' ] <EOL> expected = [ <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <NUM_LIT:0.0> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT> , <EOL> <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> ] <EOL> assert_equal ( actual , expected ) <EOL> def test_interactions ( ) : <EOL> '''<STR_LIT:U+0020>''' <EOL> problem = { '<STR_LIT>' : [ [ <NUM_LIT:0.> , <NUM_LIT> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] , [ <NUM_LIT:0.> , <NUM_LIT:1.> ] ] , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> X = np . array ( [ [ <NUM_LIT> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:1.0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:1.0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1.0> , <NUM_LIT:0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:0> ] ] , dtype = np . float ) <EOL> Y = X [ : , <NUM_LIT:0> ] + ( <NUM_LIT:0.1> * X [ : , <NUM_LIT:1> ] ) + ( ( <NUM_LIT> * X [ : , <NUM_LIT:2> ] ) * ( <NUM_LIT> + X [ : , <NUM_LIT:3> ] ) ) <EOL> ie_names , ie = interactions ( problem , Y , print_to_console = True ) <EOL> actual = ie <EOL> assert_allclose ( actual , [ <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT> ] , rtol = <NUM_LIT> , atol = <NUM_LIT> ) </s>
