hssm.distribution_utils
Utility functions for dynamically building pm.Distributions.
hssm.distribution_utils.assemble_callables ¶
assemble_callables(callable: Op | Callable, missing_data_callable: Op | Callable, params_only: bool, has_deadline: bool) -> Callable
Assemble the likelihood callables into a single callable.
Parameters:
-
callable
(Op | Callable
) –The callable for the likelihood function.
-
missing_data_callable
(Op | Callable
) –The callable for the secondary network for the likelihood function.
-
params_only
(bool
) –Whether the missing data likelihood is takes its first argument as the data.
-
has_deadline
(bool
) –Whether the model has a deadline.
hssm.distribution_utils.download_hf ¶
download_hf(path: str)
Download a file from a HuggingFace repository.
Parameters:
-
path
(str
) –The path of the file to download in the repository.
Returns:
-
str
–The local path where the file is downloaded.
Notes
The repository is specified by the REPO_ID constant, which should be a valid HuggingFace.co repository ID. The file is downloaded using the HuggingFace Hub's hf_hub_download function.
hssm.distribution_utils.make_blackbox_op ¶
make_blackbox_op(logp: Callable) -> Op
Wrap an arbitrary function in a pytensor Op.
Parameters:
-
logp
(Callable
) –A python function that represents the log-likelihood function. The function needs to have signature of logp(data, *dist_params) where
data
is a two-column numpy array anddist_params
represents all parameters passed to the function.
Returns:
-
Op
–An pytensor op that wraps the log-likelihood function.
hssm.distribution_utils.make_distribution ¶
make_distribution(rv: str | Type[RandomVariable], loglik: LogLikeFunc | Op, list_params: list[str], bounds: dict | None = None, lapse: Prior | None = None, extra_fields: list[ndarray] | None = None) -> Type[Distribution]
Make a pymc.Distribution
.
Constructs a pymc.Distribution
from a log-likelihood function and a
RandomVariable op.
Parameters:
-
rv
(str | Type[RandomVariable]
) –A RandomVariable Op (a class, not an instance) or a string indicating the model. If a string, a RandomVariable class will be created automatically with its
rng_fn
class method generated using the simulator identified with this string from thessm_simulators
package. If the string is not one of the supported models in thessm_simulators
package, a warning will be raised, and any attempt to sample from the RandomVariable will result in an error. -
loglik
(LogLikeFunc | Op
) –A loglikelihood function. It can be any Callable in Python.
-
list_params
(list[str]
) –A list of parameters that the log-likelihood accepts. The order of the parameters in the list will determine the order in which the parameters are passed to the log-likelihood function.
-
bounds
(optional
, default:None
) –A dictionary with parameters as keys (a string) and its boundaries as values. Example: {"parameter": (lower_boundary, upper_boundary)}.
-
lapse
(optional
, default:None
) –A bmb.Prior object representing the lapse distribution.
-
extra_fields
(optional
, default:None
) –An optional list of arrays that are stored in the class created and will be used in likelihood calculation. Defaults to None.
Returns:
-
Type[Distribution]
–A pymc.Distribution that uses the log-likelihood function.
hssm.distribution_utils.make_family ¶
make_family(dist: Type[Distribution], list_params: list[str], link: str | dict[str, Link], parent: str = 'v', likelihood_name: str = 'SSM Likelihood', family_name='SSM Family') -> Family
Build a family in bambi.
Parameters:
-
dist
(Type[Distribution]
) –A pm.Distribution class (not an instance).
-
list_params
(list[str]
) –A list of parameters for the likelihood function.
-
link
(str | dict[str, Link]
) –A link function or a dictionary of parameter: link functions.
-
parent
(str
, default:'v'
) –The parent parameter of the likelihood function. Defaults to v.
-
likelihood_name
(str
, default:'SSM Likelihood'
) –the name of the likelihood function. Defaults to "SSM Likelihood".
-
family_name
–the name of the family. Defaults to "SSM Family".
Returns:
-
Family
–An instance of a bambi family.
hssm.distribution_utils.make_likelihood_callable ¶
make_likelihood_callable(loglik: Op | Callable | PathLike | str, loglik_kind: Literal['analytical', 'approx_differentiable', 'blackbox'], backend: Literal['pytensor', 'jax', 'other'] | None, params_is_reg: list[bool] | None = None, params_only: bool | None = None) -> Op | Callable
Make a callable for the likelihood function.
This function is intended to be general to support different kinds of likelihood functions.
Parameters:
-
loglik
(Op | Callable | PathLike | str
) –The log-likelihood function. It can be a string, a path to an ONNX model, a pytensor Op, or a python function.
-
loglik_kind
(Literal['analytical', 'approx_differentiable', 'blackbox']
) –The kind of the log-likelihood for the model. This parameter controls how the likelihood function is wrapped.
-
backend
(Optional
) –The backend to use for the log-likelihood function.
-
params_is_reg
(Optional
, default:None
) –A list of boolean values indicating whether the parameters are regression parameters. Defaults to None.
-
params_only
(Optional
, default:None
) –Whether the missing data likelihood is takes its first argument as the data. Defaults to None.
hssm.distribution_utils.make_missing_data_callable ¶
make_missing_data_callable(loglik: Op | Callable | PathLike | str, backend: Literal['pytensor', 'jax', 'other'] | None = 'jax', params_is_reg: list[bool] | None = None, params_only: bool | None = None) -> Op | Callable
Make a secondary network for the likelihood function.
Please refer to the documentation of make_likelihood_callable
for more.
hssm.distribution_utils.make_ssm_rv ¶
make_ssm_rv(model_name: str, list_params: list[str], lapse: Prior | None = None) -> Type[RandomVariable]
Build a RandomVariable Op according to the list of parameters.
Parameters:
-
model_name
(str
) –The name of the model. If the
model_name
is not one of the supported models in thessm_simulators
package, a warning will be raised, and any attempt to sample from the RandomVariable will result in an error. -
list_params
(list[str]
) –A list of str of all parameters for this
RandomVariable
. -
lapse
(optional
, default:None
) –A bmb.Prior object representing the lapse distribution.
Returns:
-
Type[RandomVariable]
–A class of RandomVariable that are to be used in a
pm.Distribution
.