@@ -197,6 +197,28 @@ function to_namedtuple_expr(syms, vals)
197
197
return :(NamedTuple {$names_expr} ($ vals_expr))
198
198
end
199
199
200
+ """
201
+ link_transform(dist)
202
+ Return the constrained-to-unconstrained bijector for distribution `dist`.
203
+ By default, this is just `Bijectors.bijector(dist)`.
204
+ !!! warning
205
+ Note that currently this is not used by `Bijectors.logpdf_with_trans`,
206
+ hence that needs to be overloaded separately if the intention is
207
+ to change behavior of an existing distribution.
208
+ """
209
+ link_transform (dist) = bijector (dist)
210
+
211
+ """
212
+ invlink_transform(dist)
213
+ Return the unconstrained-to-constrained bijector for distribution `dist`.
214
+ By default, this is just `inverse(link_transform(dist))`.
215
+ !!! warning
216
+ Note that currently this is not used by `Bijectors.logpdf_with_trans`,
217
+ hence that needs to be overloaded separately if the intention is
218
+ to change behavior of an existing distribution.
219
+ """
220
+ invlink_transform (dist) = inverse (link_transform (dist))
221
+
200
222
# ####################################################
201
223
# Helper functions for vectorize/reconstruct values #
202
224
# ####################################################
@@ -355,14 +377,11 @@ from_vec_transform(f, sz) = from_vec_transform_for_size(Bijectors.output_size(f,
355
377
Return the transformation from the unconstrained vector to the constrained
356
378
realization of distribution `dist`.
357
379
358
- By default, this is just `inverse(bijector(dist)) ∘ from_vec_transform(dist)`.
359
-
360
- See also: [`DynamicPPL.from_vec_transform`](@ref).
380
+ See also: [`DynamicPPL.invlink_transform`](@ref), [`DynamicPPL.from_vec_transform`](@ref).
361
381
"""
362
382
function from_linked_vec_transform (dist:: Distribution )
363
- f_link = Bijectors. bijector (dist)
364
- f_invlink = inverse (f_link)
365
- f_vec = from_vec_transform (f_link, size (dist))
383
+ f_invlink = invlink_transform (dist)
384
+ f_vec = from_vec_transform (inverse (f_invlink), size (dist))
366
385
return f_invlink ∘ f_vec
367
386
end
368
387
372
391
# TODO (mhauru) Hopefully all this can go once the old Gibbs sampler is removed and
373
392
# VarNamedVector takes over from Metadata.
374
393
function from_linked_vec_transform (dist:: UnivariateDistribution )
375
- f_link = Bijectors. bijector (dist)
376
- f_invlink = inverse (f_link)
377
- f_vec = from_vec_transform (f_link, size (dist))
394
+ f_invlink = invlink_transform (dist)
395
+ f_vec = from_vec_transform (inverse (f_invlink), size (dist))
378
396
f_combined = f_invlink ∘ f_vec
379
397
sz = Bijectors. output_size (f_combined, size (dist))
380
398
return UnwrapSingletonTransform (sz) ∘ f_combined
0 commit comments