using Random, StatsBase, Distributions using Graphs using AbstractMCMC: MCMCSerial #, MCMCThreads, MCMCDistributed using CairoMakie using Test using Revise using MultilevelChainSampler w = CyclicWalk() s = ChristenFox(w) f = LogDensity(x->-x^2/2) g = LogDensity(x->-min(10,abs(x)/sqrt(2))) l = MultilevelLogDensity([g,f]) q = (x,z)-> - 4 / pi * ((z[1]^2 + z[2]^2) < x^2) / 2 l = MultilevelSampledLogDensity(q, [100, 1000], 2) c = sample(l, s, 1000) display(c) x = vcat(states(c)... ) @test abs(mean(x)) < 0.1 @test abs(std(x) - 0.539560) < 0.1 c = sample(l, s, MCMCSerial(), 100, 5) display(c) x = hcat(states(c)...) @test abs(mean(x)) < 0.1 @test abs(std(x) - 0.539560) < 0.1