<s> from collections import defaultdict <EOL> import unittest <EOL> import numpy as np <EOL> import numpy . testing as npt <EOL> from hyperopt . rdists import ( <EOL> loguniform_gen , <EOL> lognorm_gen , <EOL> quniform_gen , <EOL> qloguniform_gen , <EOL> qnormal_gen , <EOL> qlognormal_gen , <EOL> ) <EOL> from scipy import stats <EOL> try : <EOL> from scipy . stats . tests . test_continuous_basic import ( <EOL> check_cdf_logcdf , <EOL> check_pdf_logpdf , <EOL> check_pdf , <EOL> check_cdf_ppf , <EOL> ) <EOL> from scipy . stats . tests import test_discrete_basic as tdb <EOL> except ImportError : <EOL> def check_cdf_logcdf ( * args ) : <EOL> pass <EOL> def check_pdf_logpdf ( * args ) : <EOL> pass <EOL> def check_pdf ( * args ) : <EOL> pass <EOL> def check_cdf_ppf ( * args ) : <EOL> pass <EOL> class TestLogUniform ( unittest . TestCase ) : <EOL> def test_cdf_logcdf ( self ) : <EOL> check_cdf_logcdf ( loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_cdf_logcdf ( loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( - <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' ) <EOL> def test_cdf_ppf ( self ) : <EOL> check_cdf_ppf ( loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_cdf_ppf ( loguniform_gen ( - <NUM_LIT:2> , <NUM_LIT:1> ) , ( - <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' ) <EOL> def test_pdf_logpdf ( self ) : <EOL> check_pdf_logpdf ( loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_pdf_logpdf ( loguniform_gen ( low = - <NUM_LIT:4> , high = - <NUM_LIT:0.5> ) , ( - <NUM_LIT:2> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> def test_pdf ( self ) : <EOL> check_pdf ( loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_pdf ( loguniform_gen ( low = - <NUM_LIT:4> , high = - <NUM_LIT:2> ) , ( - <NUM_LIT:3> , <NUM_LIT:2> ) , '<STR_LIT>' ) <EOL> def test_distribution_rvs ( self ) : <EOL> alpha = <NUM_LIT> <EOL> loc = <NUM_LIT:0> <EOL> scale = <NUM_LIT:1> <EOL> arg = ( loc , scale ) <EOL> distfn = loguniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> D , pval = stats . kstest ( distfn . rvs , distfn . cdf , args = arg , N = <NUM_LIT:1000> ) <EOL> if ( pval < alpha ) : <EOL> npt . assert_ ( pval > alpha , <EOL> "<STR_LIT>" % ( <EOL> D , pval , alpha , arg ) ) <EOL> class TestLogNormal ( unittest . TestCase ) : <EOL> def test_cdf_logcdf ( self ) : <EOL> check_cdf_logcdf ( lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_cdf_logcdf ( lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( - <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' ) <EOL> def test_cdf_ppf ( self ) : <EOL> check_cdf_ppf ( lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_cdf_ppf ( lognorm_gen ( - <NUM_LIT:2> , <NUM_LIT:1> ) , ( - <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' ) <EOL> def test_pdf_logpdf ( self ) : <EOL> check_pdf_logpdf ( lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_pdf_logpdf ( lognorm_gen ( mu = - <NUM_LIT:4> , sigma = <NUM_LIT:0.5> ) , ( - <NUM_LIT:2> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> def test_pdf ( self ) : <EOL> check_pdf ( lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:0> , <NUM_LIT:1> ) , '<STR_LIT>' ) <EOL> check_pdf ( lognorm_gen ( mu = - <NUM_LIT:4> , sigma = <NUM_LIT:2> ) , ( - <NUM_LIT:3> , <NUM_LIT:2> ) , '<STR_LIT>' ) <EOL> def test_distribution_rvs ( self ) : <EOL> return <EOL> alpha = <NUM_LIT> <EOL> loc = <NUM_LIT:0> <EOL> scale = <NUM_LIT:1> <EOL> arg = ( loc , scale ) <EOL> distfn = lognorm_gen ( <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> D , pval = stats . kstest ( distfn . rvs , distfn . cdf , args = arg , N = <NUM_LIT:1000> ) <EOL> if ( pval < alpha ) : <EOL> npt . assert_ ( pval > alpha , <EOL> "<STR_LIT>" % ( <EOL> D , pval , alpha , arg ) ) <EOL> def check_d_samples ( dfn , n , rtol = <NUM_LIT> , atol = <NUM_LIT> ) : <EOL> counts = defaultdict ( lambda : <NUM_LIT:0> ) <EOL> inc = <NUM_LIT:1.0> / n <EOL> for s in dfn . rvs ( size = n ) : <EOL> counts [ s ] += inc <EOL> for ii , p in sorted ( counts . items ( ) ) : <EOL> t = np . allclose ( dfn . pmf ( ii ) , p , rtol = rtol , atol = atol ) <EOL> if not t : <EOL> print '<STR_LIT>' , ii <EOL> print '<STR_LIT>' <EOL> for jj in sorted ( counts ) : <EOL> print ( '<STR_LIT>' % ( <EOL> jj , dfn . pmf ( jj ) , counts [ jj ] ) ) <EOL> npt . assert_ ( t , <EOL> "<STR_LIT>" % ( <EOL> n , dfn . pmf ( ii ) , p ) ) <EOL> class TestQUniform ( unittest . TestCase ) : <EOL> def test_smallq ( self ) : <EOL> low , high , q = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> qu = quniform_gen ( low , high , q ) <EOL> check_d_samples ( qu , n = <NUM_LIT> ) <EOL> def test_bigq ( self ) : <EOL> low , high , q = ( - <NUM_LIT:20> , - <NUM_LIT:1> , <NUM_LIT:3> ) <EOL> qu = quniform_gen ( low , high , q ) <EOL> check_d_samples ( qu , n = <NUM_LIT> ) <EOL> def test_offgrid_int ( self ) : <EOL> qn = quniform_gen ( <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT:1> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT:2> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT:3> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT:1> ) == <NUM_LIT:0.0> <EOL> def test_offgrid_float ( self ) : <EOL> qn = quniform_gen ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> class TestQLogUniform ( unittest . TestCase ) : <EOL> def logp ( self , x , low , high , q ) : <EOL> return qloguniform_gen ( low , high , q ) . logpmf ( x ) <EOL> def test_smallq ( self ) : <EOL> low , high , q = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> qlu = qloguniform_gen ( low , high , q ) <EOL> check_d_samples ( qlu , n = <NUM_LIT> ) <EOL> def test_bigq ( self ) : <EOL> low , high , q = ( - <NUM_LIT:20> , <NUM_LIT:4> , <NUM_LIT:3> ) <EOL> qlu = qloguniform_gen ( low , high , q ) <EOL> check_d_samples ( qlu , n = <NUM_LIT> ) <EOL> def test_point ( self ) : <EOL> low , high , q = ( np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:0.5> ) <EOL> qlu = qloguniform_gen ( low , high , q ) <EOL> check_d_samples ( qlu , n = <NUM_LIT> ) <EOL> def test_2points ( self ) : <EOL> low , high , q = ( np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:0.5> ) <EOL> qlu = qloguniform_gen ( low , high , q ) <EOL> check_d_samples ( qlu , n = <NUM_LIT> ) <EOL> def test_point_logpmf ( self ) : <EOL> assert np . allclose ( self . logp ( <NUM_LIT:0> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) , <NUM_LIT:0.0> ) <EOL> def test_rounding_logpmf ( self ) : <EOL> assert ( self . logp ( <NUM_LIT:0> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) <EOL> > self . logp ( <NUM_LIT:1> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) ) <EOL> assert ( self . logp ( - <NUM_LIT:1> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) <EOL> == self . logp ( <NUM_LIT:2> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) <EOL> == - np . inf ) <EOL> def test_smallq_logpmf ( self ) : <EOL> assert ( self . logp ( <NUM_LIT> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT> ) <EOL> > self . logp ( <NUM_LIT> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT> ) <EOL> > self . logp ( <NUM_LIT> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT> ) <EOL> > self . logp ( <NUM_LIT:0.5> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT> ) <EOL> > - <NUM_LIT:10> ) <EOL> assert ( self . logp ( <NUM_LIT:0.1> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) <EOL> == self . logp ( <NUM_LIT> , np . log ( <NUM_LIT> ) , np . log ( <NUM_LIT> ) , <NUM_LIT:1> ) <EOL> == - np . inf ) <EOL> class TestQNormal ( unittest . TestCase ) : <EOL> def test_smallq ( self ) : <EOL> mu , sigma , q = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> qn = qnormal_gen ( mu , sigma , q ) <EOL> check_d_samples ( qn , n = <NUM_LIT> ) <EOL> def test_bigq ( self ) : <EOL> mu , sigma , q = ( - <NUM_LIT:20> , <NUM_LIT:4> , <NUM_LIT:3> ) <EOL> qn = qnormal_gen ( mu , sigma , q ) <EOL> check_d_samples ( qn , n = <NUM_LIT> ) <EOL> def test_offgrid_int ( self ) : <EOL> qn = qnormal_gen ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT:1> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT:2> ) > <NUM_LIT:0.0> <EOL> def test_offgrid_float ( self ) : <EOL> qn = qnormal_gen ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT> ) > <NUM_LIT:0.0> <EOL> assert qn . pmf ( <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> assert qn . pmf ( - <NUM_LIT> ) == <NUM_LIT:0.0> <EOL> def test_numeric ( self ) : <EOL> qn = qnormal_gen ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> assert qn . pmf ( <NUM_LIT> ) > - np . inf <EOL> class TestQLogNormal ( unittest . TestCase ) : <EOL> def test_smallq ( self ) : <EOL> mu , sigma , q = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT> ) <EOL> qn = qlognormal_gen ( mu , sigma , q ) <EOL> check_d_samples ( qn , n = <NUM_LIT> ) <EOL> def test_bigq ( self ) : <EOL> mu , sigma , q = ( - <NUM_LIT:20> , <NUM_LIT:4> , <NUM_LIT:3> ) <EOL> qn = qlognormal_gen ( mu , sigma , q ) <EOL> check_d_samples ( qn , n = <NUM_LIT> ) <EOL> def test_offgrid_int ( self ) : <EOL> mu , sigma , q = ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> qn = qlognormal_gen ( mu , sigma , q ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > qn . pmf ( <NUM_LIT:2> ) > qn . pmf ( <NUM_LIT:20> ) > <NUM_LIT:0> <EOL> assert qn . pmf ( <NUM_LIT:1> ) == qn . pmf ( <NUM_LIT:2> - <NUM_LIT> ) == qn . pmf ( - <NUM_LIT:1> ) == <NUM_LIT:0> <EOL> def test_offgrid_float ( self ) : <EOL> mu , sigma , q = ( - <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ) <EOL> qn = qlognormal_gen ( mu , sigma , q ) <EOL> assert qn . pmf ( <NUM_LIT:0> ) > qn . pmf ( <NUM_LIT> ) > qn . pmf ( <NUM_LIT:2> ) > <NUM_LIT:0> <EOL> assert qn . pmf ( <NUM_LIT> ) == qn . pmf ( <NUM_LIT> - <NUM_LIT> ) == qn . pmf ( - <NUM_LIT> ) == <NUM_LIT:0> <EOL> def test_numeric ( self ) : <EOL> pass </s>
