18
18
nodes in PyMC.
19
19
"""
20
20
21
+ from typing import Union
22
+
21
23
import aesara .tensor as at
22
24
import numpy as np
23
- from typing import Union
24
25
25
26
from aesara .assert_op import Assert
26
- from aesara .tensor .var import TensorVariable
27
- from aesara .tensor .random .op import RandomVariable
28
27
from aesara .tensor .random .basic import (
29
28
BetaRV ,
30
29
cauchy ,
37
36
normal ,
38
37
uniform ,
39
38
)
39
+ from aesara .tensor .random .op import RandomVariable
40
+ from aesara .tensor .var import TensorVariable
40
41
from scipy import stats
41
42
from scipy .interpolate import InterpolatedUnivariateSpline
42
43
@@ -262,7 +263,11 @@ def logcdf(value, lower, upper):
262
263
return at .switch (
263
264
at .lt (value , lower ) | at .lt (upper , lower ),
264
265
- np .inf ,
265
- at .switch (at .lt (value , upper ), at .log (value - lower ) - at .log (upper - lower ), 0 ,),
266
+ at .switch (
267
+ at .lt (value , upper ),
268
+ at .log (value - lower ) - at .log (upper - lower ),
269
+ 0 ,
270
+ ),
266
271
)
267
272
268
273
@@ -496,7 +501,10 @@ def logcdf(value, mu, sigma):
496
501
-------
497
502
TensorVariable
498
503
"""
499
- return bound (normal_lcdf (mu , sigma , value ), 0 < sigma ,)
504
+ return bound (
505
+ normal_lcdf (mu , sigma , value ),
506
+ 0 < sigma ,
507
+ )
500
508
501
509
502
510
class TruncatedNormal (BoundedContinuous ):
@@ -830,7 +838,11 @@ def logcdf(value, loc, sigma):
830
838
TensorVariable
831
839
"""
832
840
z = zvalue (value , mu = loc , sigma = sigma )
833
- return bound (at .log1p (- at .erfc (z / at .sqrt (2.0 ))), loc <= value , 0 < sigma ,)
841
+ return bound (
842
+ at .log1p (- at .erfc (z / at .sqrt (2.0 ))),
843
+ loc <= value ,
844
+ 0 < sigma ,
845
+ )
834
846
835
847
def _distr_parameters_for_repr (self ):
836
848
return ["sigma" ]
@@ -1046,7 +1058,11 @@ def logcdf(self, value):
1046
1058
b = 2.0 / l + normal_lcdf (0 , 1 , - (q + 1.0 ) / r )
1047
1059
1048
1060
return bound (
1049
- at .switch (at .lt (value , np .inf ), a + log1pexp (b - a ), 0 ,),
1061
+ at .switch (
1062
+ at .lt (value , np .inf ),
1063
+ a + log1pexp (b - a ),
1064
+ 0 ,
1065
+ ),
1050
1066
0 < value ,
1051
1067
0 < mu ,
1052
1068
0 < lam ,
@@ -1208,7 +1224,11 @@ def logcdf(value, alpha, beta):
1208
1224
)
1209
1225
1210
1226
return bound (
1211
- at .switch (at .lt (value , 1 ), at .log (incomplete_beta (alpha , beta , value )), 0 ,),
1227
+ at .switch (
1228
+ at .lt (value , 1 ),
1229
+ at .log (incomplete_beta (alpha , beta , value )),
1230
+ 0 ,
1231
+ ),
1212
1232
0 <= value ,
1213
1233
0 < alpha ,
1214
1234
0 < beta ,
@@ -1403,7 +1423,11 @@ def logcdf(value, lam):
1403
1423
TensorVariable
1404
1424
"""
1405
1425
a = lam * value
1406
- return bound (log1mexp (a ), 0 <= value , 0 <= lam ,)
1426
+ return bound (
1427
+ log1mexp (a ),
1428
+ 0 <= value ,
1429
+ 0 <= lam ,
1430
+ )
1407
1431
1408
1432
1409
1433
class Laplace (Continuous ):
@@ -1519,7 +1543,11 @@ def logcdf(self, value):
1519
1543
at .switch (
1520
1544
at .le (value , a ),
1521
1545
at .log (0.5 ) + y ,
1522
- at .switch (at .gt (y , 1 ), at .log1p (- 0.5 * at .exp (- y )), at .log (1 - 0.5 * at .exp (- y )),),
1546
+ at .switch (
1547
+ at .gt (y , 1 ),
1548
+ at .log1p (- 0.5 * at .exp (- y )),
1549
+ at .log (1 - 0.5 * at .exp (- y )),
1550
+ ),
1523
1551
),
1524
1552
0 < b ,
1525
1553
)
@@ -1776,7 +1804,11 @@ def logcdf(self, value):
1776
1804
sigma = self .sigma
1777
1805
tau = self .tau
1778
1806
1779
- return bound (normal_lcdf (mu , sigma , at .log (value )), 0 < value , 0 < tau ,)
1807
+ return bound (
1808
+ normal_lcdf (mu , sigma , at .log (value )),
1809
+ 0 < value ,
1810
+ 0 < tau ,
1811
+ )
1780
1812
1781
1813
1782
1814
class StudentT (Continuous ):
@@ -1940,7 +1972,12 @@ def logcdf(self, value):
1940
1972
sqrt_t2_nu = at .sqrt (t ** 2 + nu )
1941
1973
x = (t + sqrt_t2_nu ) / (2.0 * sqrt_t2_nu )
1942
1974
1943
- return bound (at .log (incomplete_beta (nu / 2.0 , nu / 2.0 , x )), 0 < nu , 0 < sigma , 0 < lam ,)
1975
+ return bound (
1976
+ at .log (incomplete_beta (nu / 2.0 , nu / 2.0 , x )),
1977
+ 0 < nu ,
1978
+ 0 < sigma ,
1979
+ 0 < lam ,
1980
+ )
1944
1981
1945
1982
1946
1983
class Pareto (Continuous ):
@@ -2075,7 +2112,11 @@ def logcdf(self, value):
2075
2112
alpha = self .alpha
2076
2113
arg = (m / value ) ** alpha
2077
2114
return bound (
2078
- at .switch (at .le (arg , 1e-5 ), at .log1p (- arg ), at .log (1 - arg ),),
2115
+ at .switch (
2116
+ at .le (arg , 1e-5 ),
2117
+ at .log1p (- arg ),
2118
+ at .log (1 - arg ),
2119
+ ),
2079
2120
m <= value ,
2080
2121
0 < alpha ,
2081
2122
0 < m ,
@@ -2173,7 +2214,10 @@ def logcdf(value, alpha, beta):
2173
2214
-------
2174
2215
TensorVariable
2175
2216
"""
2176
- return bound (at .log (0.5 + at .arctan ((value - alpha ) / beta ) / np .pi ), 0 < beta ,)
2217
+ return bound (
2218
+ at .log (0.5 + at .arctan ((value - alpha ) / beta ) / np .pi ),
2219
+ 0 < beta ,
2220
+ )
2177
2221
2178
2222
2179
2223
class HalfCauchy (PositiveContinuous ):
@@ -2257,7 +2301,11 @@ def logcdf(value, loc, beta):
2257
2301
-------
2258
2302
TensorVariable
2259
2303
"""
2260
- return bound (at .log (2 * at .arctan ((value - loc ) / beta ) / np .pi ), loc <= value , 0 < beta ,)
2304
+ return bound (
2305
+ at .log (2 * at .arctan ((value - loc ) / beta ) / np .pi ),
2306
+ loc <= value ,
2307
+ 0 < beta ,
2308
+ )
2261
2309
2262
2310
2263
2311
class Gamma (PositiveContinuous ):
@@ -2725,7 +2773,12 @@ def logcdf(self, value):
2725
2773
alpha = self .alpha
2726
2774
beta = self .beta
2727
2775
a = (value / beta ) ** alpha
2728
- return bound (log1mexp (a ), 0 <= value , 0 < alpha , 0 < beta ,)
2776
+ return bound (
2777
+ log1mexp (a ),
2778
+ 0 <= value ,
2779
+ 0 < alpha ,
2780
+ 0 < beta ,
2781
+ )
2729
2782
2730
2783
2731
2784
class HalfStudentT (PositiveContinuous ):
@@ -3521,7 +3574,10 @@ def logp(
3521
3574
TensorVariable
3522
3575
"""
3523
3576
scaled = (value - mu ) / beta
3524
- return bound (- scaled - at .exp (- scaled ) - at .log (beta ), 0 < beta ,)
3577
+ return bound (
3578
+ - scaled - at .exp (- scaled ) - at .log (beta ),
3579
+ 0 < beta ,
3580
+ )
3525
3581
3526
3582
def logcdf (
3527
3583
value : Union [float , np .ndarray , TensorVariable ],
@@ -3542,7 +3598,10 @@ def logcdf(
3542
3598
-------
3543
3599
TensorVariable
3544
3600
"""
3545
- return bound (- at .exp (- (value - mu ) / beta ), 0 < beta ,)
3601
+ return bound (
3602
+ - at .exp (- (value - mu ) / beta ),
3603
+ 0 < beta ,
3604
+ )
3546
3605
3547
3606
3548
3607
class Rice (PositiveContinuous ):
@@ -3801,7 +3860,8 @@ def logp(self, value):
3801
3860
s = self .s
3802
3861
3803
3862
return bound (
3804
- - (value - mu ) / s - at .log (s ) - 2 * at .log1p (at .exp (- (value - mu ) / s )), s > 0 ,
3863
+ - (value - mu ) / s - at .log (s ) - 2 * at .log1p (at .exp (- (value - mu ) / s )),
3864
+ s > 0 ,
3805
3865
)
3806
3866
3807
3867
def logcdf (self , value ):
@@ -3821,7 +3881,10 @@ def logcdf(self, value):
3821
3881
"""
3822
3882
mu = self .mu
3823
3883
s = self .s
3824
- return bound (- log1pexp (- (value - mu ) / s ), 0 < s ,)
3884
+ return bound (
3885
+ - log1pexp (- (value - mu ) / s ),
3886
+ 0 < s ,
3887
+ )
3825
3888
3826
3889
3827
3890
class LogitNormal (UnitContinuous ):
@@ -4180,5 +4243,7 @@ def logcdf(self, value):
4180
4243
sigma = self .sigma
4181
4244
4182
4245
scaled = (value - mu ) / sigma
4183
- return bound (at .log (at .erfc (at .exp (- scaled / 2 ) * (2 ** - 0.5 ))), 0 < sigma ,)
4184
-
4246
+ return bound (
4247
+ at .log (at .erfc (at .exp (- scaled / 2 ) * (2 ** - 0.5 ))),
4248
+ 0 < sigma ,
4249
+ )
0 commit comments