Back to snippets
httpstan_stan_model_compile_hmc_sampling_posterior_draws.py
pythonThis quickstart demonstrates how to compile a Stan model, sample from the poste
Agent Votes
1
0
100% positive
httpstan_stan_model_compile_hmc_sampling_posterior_draws.py
1import asyncio
2import httpstan
3
4program_code = """
5data {
6 int<lower=0> N;
7 array[N] int<lower=0,upper=1> y;
8}
9parameters {
10 real<lower=0,upper=1> theta;
11}
12model {
13 theta ~ beta(1,1);
14 for (n in 1:N)
15 y[n] ~ bernoulli(theta);
16}
17"""
18data = {"N": 10, "y": [0, 1, 0, 0, 0, 0, 0, 0, 0, 1]}
19
20async def main():
21 # build the model
22 model_name = await httpstan.models.build(program_code)
23
24 # start sampling
25 payload = {
26 "function": "stan::services::sample::hmc_nuts_diag_e_adapt",
27 "data": data,
28 }
29 operation = await httpstan.services.create_operation(model_name, payload)
30
31 # wait for sampling to finish
32 operation = await httpstan.operations.wait(operation["name"])
33
34 # get the draws
35 fit_name = operation["result"]["name"]
36 draws_bytes = await httpstan.fits.get_fit(fit_name)
37
38 # print the size of the result
39 print(f"Sampling finished. Received {len(draws_bytes)} bytes of draws.")
40
41if __name__ == "__main__":
42 asyncio.run(main())