A Julia implementation of the 2D Rosenbrock distribution for testing sampling algorithms.
Based on Hoffman & Ma (2019).
Make sure that you first have matplotlib installed in your Python environment, as it is required for some plotting functionalities.
pip install matplotlibThen in Julia:
ENV["PYTHON"] = "/usr/bin/python3" # Adjust path
using Pkg
Pkg.build("PyCall")
# Restart Julia] add /path/to/Rosenbrockusing Rosenbrock
using Distributions
# Create distribution
rb = RosenbrockDistribution(0.0f0, 1.0f0)
# Generate samples
samples = rand(rb, 1000) # Returns 2×1000 matrix
# Compute log-pdf and gradient
lp = logpdf(rb, samples) # Extends Distributions.logpdf
grad = gradlogpdf(rb, samples)
println("Sample shape: ", size(samples)) # (2, 1000)
println("Log-pdf shape: ", size(lp)) # (1000,)
println("Gradient shape: ", size(grad)) # (2, 1000)RosenbrockDistribution(μ, a)- Create distribution with locationμand scalearand(rb, n)- Generatensampleslogpdf(rb, X)- Compute log probability densitygradlogpdf(rb, X)- Compute gradient of log probability
Ali Siahkoohi (alisk@ucf.edu), University of Central Florida, 2025
MIT