pymc.model.transform.insert_deterministics#

pymc.model.transform.insert_deterministics(model, deterministics)[source]#

Splice detached Deterministics into a Model.

This is the inverse of extract_deterministics(). The Deterministics are attached by matching the names of the Model variables they depend on against the variables in the target Model.

Parameters:
modelModel

The model to insert the Deterministics into.

deterministicssequence of FrozenFunctionGraph

The Deterministics to insert, as returned by extract_deterministics(). They must be provided in topological order (Deterministics that depend on other inserted Deterministics come later), which is how extract_deterministics returns them.

Returns:
new_modelModel

A copy of the model with the Deterministics inserted.

See also

extract_deterministics

Remove Deterministics from a Model as detached subgraphs.

Examples

import numpy as np
import pymc as pm
from pymc.model.transform import (
    extract_deterministics,
    insert_deterministics,
)

with pm.Model() as model:
    x = pm.Data("x", np.ones((10, 3)))
    beta = pm.Normal("beta", shape=(3,))
    mu = pm.Deterministic("mu", x @ beta)
    pm.Normal("y", mu=mu, sigma=1, observed=np.ones(10))

# Drop the ``mu`` Deterministic (it gets inlined into ``y``)
no_det_model, deterministics = extract_deterministics(model)

# Put it back
model_again = insert_deterministics(no_det_model, deterministics)