From 1963ef6ed76b1a659d1d1abf4924f83bff9ac18f Mon Sep 17 00:00:00 2001 From: Michael Osthege Date: Sat, 23 May 2026 12:04:03 +0200 Subject: [PATCH 1/2] Access posterior data by key --- bletl/growth.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bletl/growth.py b/bletl/growth.py index 8f818e5..835eb6e 100644 --- a/bletl/growth.py +++ b/bletl/growth.py @@ -114,7 +114,7 @@ def mu_mcmc(self) -> Optional[numpy.ndarray]: if not self.idata: return None assert hasattr(self.idata, "posterior") - return self.idata.posterior.mu_t.stack(sample=("chain", "draw")).values.T + return self.idata["posterior"].mu_t.stack(sample=("chain", "draw")).values.T @property def x_mcmc(self) -> Optional[numpy.ndarray]: @@ -122,7 +122,7 @@ def x_mcmc(self) -> Optional[numpy.ndarray]: if self.idata is None: return None assert hasattr(self.idata, "posterior") - return self.idata.posterior["X"].stack(sample=("chain", "draw")).T + return self.idata["posterior"]["X"].stack(sample=("chain", "draw")).T def sample(self, **kwargs) -> None: """Runs MCMC sampling with default settings on the growth model. From 8b353f5f08db87591a218328e2791d895f5b29c0 Mon Sep 17 00:00:00 2001 From: Michael Osthege Date: Sat, 23 May 2026 12:47:16 +0200 Subject: [PATCH 2/2] Use future-proof type hints --- bletl/growth.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/bletl/growth.py b/bletl/growth.py index 835eb6e..6ffa99e 100644 --- a/bletl/growth.py +++ b/bletl/growth.py @@ -2,11 +2,11 @@ import logging from typing import Dict, Optional, Sequence, Tuple, Union -import arviz import calibr8 import numpy import pymc as pm import pytensor.tensor as pt +import xarray as xa from packaging import version _log = logging.getLogger(__file__) @@ -94,8 +94,8 @@ def theta_map(self) -> Dict[str, numpy.ndarray]: return self._theta_map @property - def idata(self) -> Optional[arviz.InferenceData]: - """ArviZ InferenceData object of the MCMC trace.""" + def idata(self) -> Optional[xa.DataTree]: + """MCMC trace obtained from running :func:`GrowthRateResult.sample`.""" return self._idata @property @@ -134,7 +134,6 @@ def sample(self, **kwargs) -> None: """ if importlib.util.find_spec("nutpie"): sample_kwargs = dict( - return_inferencedata=True, target_accept=0.95, nuts_sampler="nutpie", init="adapt_diag", @@ -144,7 +143,6 @@ def sample(self, **kwargs) -> None: ) else: sample_kwargs = dict( - return_inferencedata=True, target_accept=0.95, init="adapt_diag", initvals=self.theta_map,