Skip to content

Commit 27389f2

Browse files
authored
updates (#221)
* updates * DistributionMeasures * bumps dependencies * switch to StaticArraysCore * add a compat
1 parent 17f1e57 commit 27389f2

File tree

5 files changed

+37
-38
lines changed

5 files changed

+37
-38
lines changed

Project.toml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "MeasureTheory"
22
uuid = "eadaa1a4-d27c-401d-8699-e962e1bbc33b"
33
authors = ["Chad Scherrer <[email protected]> and contributors"]
4-
version = "0.16.6"
4+
version = "0.17.0"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
@@ -10,6 +10,7 @@ Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
1010
ConcreteStructs = "2569d6c7-a4a2-43d3-a901-331e8e4be471"
1111
ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
1212
DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
13+
DistributionMeasures = "35643b39-bfd4-4670-843f-16596ca89bf3"
1314
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1415
DynamicIterators = "6c76993d-992e-5bf1-9e63-34920a5a5a38"
1516
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
@@ -26,14 +27,13 @@ MacroTools = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
2627
MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
2728
MeasureBase = "fa1605e6-acd5-459c-a1e6-7e635759db14"
2829
NamedTupleTools = "d9ec5142-1e00-5aa0-9d6a-321866360f50"
29-
NestedTuples = "a734d2a7-8d68-409b-9419-626914d4061d"
3030
PositiveFactorizations = "85a6dd25-e78a-55b7-8502-1745935b8125"
3131
PrettyPrinting = "54e16d92-306c-5ea0-a30b-337be88ac337"
3232
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
3333
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
3434
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
3535
Static = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
36-
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
36+
StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
3737
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
3838
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
3939
StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
@@ -59,15 +59,14 @@ LogExpFunctions = "0.3.3"
5959
MLStyle = "0.4"
6060
MacroTools = "0.5"
6161
MappedArrays = "0.4"
62-
MeasureBase = "0.12"
62+
MeasureBase = "0.13"
6363
NamedTupleTools = "0.13, 0.14"
64-
NestedTuples = "0.3"
6564
PositiveFactorizations = "0.2"
6665
PrettyPrinting = "0.3, 0.4"
6766
Reexport = "1"
6867
SpecialFunctions = "1, 2"
6968
Static = "0.5, 0.6"
70-
StaticArrays = "1.3"
69+
StaticArraysCore = "1"
7170
StatsBase = "0.32, 0.33"
7271
StatsFuns = "0.9, 1"
7372
TransformVariables = "0.5, 0.6"

src/MeasureTheory.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ using Random
44

55
using MeasureBase
66
using MLStyle
7-
using NestedTuples
87
import TransformVariables
98
const TV = TransformVariables
109

10+
using DistributionMeasures
1111
using TransformVariables: asℝ₊, as𝕀, asℝ, transform
1212

1313
import Base
@@ -65,11 +65,11 @@ using MeasureBase: AbstractTransitionKernel
6565

6666
import Statistics: mean, var, std
6767

68-
import MeasureBase: likelihood
69-
export likelihood
68+
import MeasureBase: likelihoodof
69+
export likelihoodof
7070
export log_likelihood_ratio
7171

72-
using StaticArrays
72+
using StaticArraysCore
7373

7474
import PrettyPrinting
7575

src/combinators/exponential-families.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ end
9797

9898
# end
9999

100-
function MeasureBase.likelihood(fam::ExponentialFamily, y)
100+
function MeasureBase.likelihoodof(fam::ExponentialFamily, y)
101101
c = logdensityof(fam.base, y)
102102
t = ApplyArray(vcat, (f.(y) for f in fam.t)...)
103103
tᵀx = t' * fam.x

src/combinators/tweedie.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ struct TweedieLikelihood{C,Θ,H,T,A} <: AbstractLikelihood
145145
a::A
146146
end
147147

148-
function likelihood(fam::Tweedie, x)
148+
function likelihoodof(fam::Tweedie, x)
149149
c = logdensityof(fam.base, x)
150150
t = fam.t(x)
151151
TweedieLikelihood(c, fam.θ, fam.η, t, fam.a)

src/distributions.jl

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,43 @@ import Distributions
33
export Dists
44
const Dists = Distributions
55

6-
function Measure(dist::Dists.Distribution{F,S}) where {F,S}
7-
X = Base.eltype(dist)
8-
DistributionMeasure{F,S,X}(dist)
9-
end
106

11-
struct DistributionMeasure{F,S,X} <: AbstractMeasure
12-
dist::Dists.Distribution{F,S}
13-
end
147

15-
@inline function basemeasure::DistributionMeasure{F,S,X}) where {F,S<:Dists.Continuous,X}
16-
return Lebesgue(X)
17-
end
8+
@inline function as(d, _data::NamedTuple)
9+
if hasmethod(Dists.support, (typeof(d),))
10+
return asTransform(Dists.support(d))
11+
end
1812

19-
@inline function logdensity_def::DistributionMeasure{F,S,X}, x::X) where {F,S,X}
20-
return Dists.logpdf.dist, x)
13+
error("Not implemented:\nas($d)")
2114
end
2215

23-
function Base.rand(rng::AbstractRNG, μ::DistributionMeasure{F,S,X}) where {F,S,X}
24-
return rand(rng, μ.dist)
25-
end
16+
using TransformVariables: ShiftedExp, ScaledShiftedLogistic
2617

27-
basemeasure(d::Dists.AbstractMvNormal) = Lebesgue(ℝ)^size(d)
18+
function asTransform(supp:: Dists.RealInterval)
19+
(lb, ub) = (supp.lb, supp.ub)
2820

29-
@inline function basemeasure::Dists.Distribution{Dists.Univariate,Dists.Continuous})
30-
return Lebesgue(ℝ)
21+
(lb, ub) == (-Inf, Inf) && (return asℝ)
22+
isinf(ub) && return ShiftedExp(true,lb)
23+
isinf(lb) && return ShiftedExp(false,lb)
24+
return ScaledShiftedLogistic(ub-lb, lb)
3125
end
3226

33-
@inline function basemeasure::Dists.Distribution{Dists.Univariate,Dists.Discrete})
34-
return CountingMeasure(ℤ)
35-
end
27+
as::AbstractMeasure, _data::NamedTuple) = as(μ)
3628

37-
(::typeof(identity), ::Dists.Distribution) = 1.0
29+
as(d::Dists.AbstractMvNormal, _data::NamedTuple = NamedTuple()) = TV.as(Array, size(d))
3830

39-
logdensity_def::Dists.Distribution, x) = Dists.logpdf(μ, x)
4031

41-
density_def::Dists.Distribution, x) = Dists.pdf(μ, x)
32+
function as(d::Dists.Distribution{Dists.Univariate}, _data::NamedTuple=NamedTuple())
33+
sup = Dists.support(d)
34+
lo = isinf(sup.lb) ? -TV.∞ : sup.lb
35+
hi = isinf(sup.ub) ? TV.∞ : sup.ub
36+
as(Real, lo,hi)
37+
end
4238

43-
testvalue(d::Dists.Distribution) = rand(d)
39+
function as(d::Dists.Product, _data::NamedTuple=NamedTuple())
40+
n = length(d)
41+
v = d.v
42+
as(Vector, as(v[1]), n)
43+
end
4444

45-
insupport(d::Dists.Distribution, x) = logdensityof(d, x) > -Inf
45+
as(m::DistributionMeasures.DistributionMeasure) = as(m.d)

0 commit comments

Comments
 (0)