['μ = pm.Normal("μ", mu=0, sigma=10)\n    σ = pm.HalfNormal("σ", sigma=10)\n    λ = pm.Deterministic("λ", pm.math.exp(μ))\n    \n    # Define the Poisson likelihood\n    obs = pm.Poisson("obs", mu=λ, observed=y)\n    \n    # Define the Gaussian Process\n    kernel = pm.gp.cov.ExpQuad(1, ls=1)\n    gp = pm.gp.Latent(cov_func=kernel)\n    f = gp.prior("f", X=x)\n    \n    # Define the GP likelihood\n    gp_like = pm.Poisson("gp_like", mu=f, observed=k)\n    \n    # Sample the posterior\n    trace = pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})\n\n# Visualize the posterior distribution\naz.plot_trace(trace, var_names=["μ", "σ", "λ"])\nplt.show()\n\n# Visualize the posterior predictive distribution\nwith trace:\n    f_pred = gp.conditional("f_pred", X=x)\n    pred_samples = pm.sample_posterior_predictive(trace, vars=[f_pred], samples=1000)\n    \n    plt.figure(figsize=(10, 6))\n    plt.scatter(x, y, c="C0", label="Observed data")\n    plt.plot(x, pred_samples["f_pred']