Default sampler for mixed continuous/discrete parameters in Turing.jl

I’m fitting a Turing.jl model with continuous and discrete variables. Using MH() works out of the box. What’s going on under the hood here in terms of samplers and proposals? Any tips on how to tune would be great.

My model snippet:

@model function sir_particle_mcmc_fixed_q(P)
    # Priors for the parameters we want to estimate
    β ~ Uniform(0.25, 0.75)
    I₀ ~ DiscreteUniform(5, 50)
    
    # Create parameter tuple with current MCMC values
    current_params = merge(P.params, (β=β, I₀=I₀))

    # Compute particle filter likelihood
    pf_result = pfilter(P, Np=1000, params=current_params)  # Reduced particles for speed
    
    # Add the log-likelihood to the model
    Turing.@addlogprob! pf_result.logLik
    
    return nothing
end;

Hello! I’m not super duper familiar with the MH code, but my understanding is that MH() alone generates proposals by sampling from the prior. If you want random-walk or other kinds of proposals it has to be specified in the constructor. The documentation explains this a little bit: Inference · Turing