@@ -177,10 +177,7 @@ def test_logodds():
177177
178178
179179def test_lowerbound ():
180- def transform_params (* inputs ):
181- return 0.0 , None
182-
183- trans = tr .interval (transform_params )
180+ trans = tr .Interval (0.0 , None )
184181 check_transform (trans , Rplusbig )
185182
186183 check_jacobian_det (trans , Rplusbig , elemwise = True )
@@ -191,10 +188,7 @@ def transform_params(*inputs):
191188
192189
193190def test_upperbound ():
194- def transform_params (* inputs ):
195- return None , 0.0
196-
197- trans = tr .interval (transform_params )
191+ trans = tr .Interval (None , 0.0 )
198192 check_transform (trans , Rminusbig )
199193
200194 check_jacobian_det (trans , Rminusbig , elemwise = True )
@@ -208,10 +202,7 @@ def test_interval():
208202 for a , b in [(- 4 , 5.5 ), (0.1 , 0.7 ), (- 10 , 4.3 )]:
209203 domain = Unit * np .float64 (b - a ) + np .float64 (a )
210204
211- def transform_params (z = a , y = b ):
212- return z , y
213-
214- trans = tr .interval (transform_params )
205+ trans = tr .Interval (a , b )
215206 check_transform (trans , domain )
216207
217208 check_jacobian_det (trans , domain , elemwise = True )
@@ -375,7 +366,7 @@ def transform_params(*inputs):
375366 upper = at .as_tensor_variable (upper ) if upper is not None else None
376367 return lower , upper
377368
378- interval = tr .interval ( transform_params )
369+ interval = tr .Interval ( bounds_fn = transform_params )
379370 model = self .build_model (
380371 pm .Uniform , {"lower" : lower , "upper" : upper }, size = size , transform = interval
381372 )
@@ -396,7 +387,7 @@ def transform_params(*inputs):
396387 upper = at .as_tensor_variable (upper ) if upper is not None else None
397388 return lower , upper
398389
399- interval = tr .interval ( transform_params )
390+ interval = tr .Interval ( bounds_fn = transform_params )
400391 model = self .build_model (
401392 pm .Triangular , {"lower" : lower , "c" : c , "upper" : upper }, size = size , transform = interval
402393 )
@@ -491,7 +482,7 @@ def transform_params(*inputs):
491482 upper = at .as_tensor_variable (upper ) if upper is not None else None
492483 return lower , upper
493484
494- interval = tr .interval ( transform_params )
485+ interval = tr .Interval ( bounds_fn = transform_params )
495486
496487 initval = np .sort (np .abs (np .random .rand (* size )))
497488 model = self .build_model (
@@ -556,3 +547,13 @@ def test_triangular_transform():
556547 transform = x .tag .value_var .tag .transform
557548 assert np .isclose (transform .backward (- np .inf , * x .owner .inputs ).eval (), 0 )
558549 assert np .isclose (transform .backward (np .inf , * x .owner .inputs ).eval (), 2 )
550+
551+
552+ def test_interval_transform_raises ():
553+ with pytest .raises (ValueError , match = "Lower and upper interval bounds cannot both be None" ):
554+ tr .Interval (None , None )
555+
556+ with pytest .raises (ValueError , match = "Interval bounds must be constant values" ):
557+ tr .Interval (at .constant (5 ) + 1 , None )
558+
559+ assert tr .Interval (at .constant (5 ), None )
0 commit comments