code: def test_from_summaries_frozen(model, X):
      p0 = [[0.3, 0.1, 0.6]]
  
      p1 = [[[0.4, 0.2, 0.4], [0.1, 0.2, 0.7], [0.2, 0.5, 0.3]]]
  
      p2 = [
          [
              [[0.3, 0.1, 0.6], [0.1, 0.4, 0.5], [0.6, 0.2, 0.2]],
              [[0.2, 0.3, 0.5], [0.7, 0.1, 0.2], [0.8, 0.1, 0.1]],
              [[0.6, 0.3, 0.1], [0.4, 0.1, 0.5], [0.6, 0.2, 0.2]],
          ]
      ]
  
      d0 = Categorical(p0)
      d1 = ConditionalCategorical(p1)
      d2 = ConditionalCategorical(p2)
  
      model = MarkovChain([d0, d1, d2], frozen=True)
      model.summarize(X)
      model.from_summaries()
  
      assert_array_almost_equal(model.distributions[0].probs, p0)
      assert_array_almost_equal(model.distributions[1].probs[0], p1[0])
      assert_array_almost_equal(model.distributions[2].probs[0], p2[0])
  
      d2 = ConditionalCategorical(p2, frozen=True)
  
      model = MarkovChain([d0, d1, d2])
      model.summarize(X)
      model.from_summaries()
  
      assert_raises(
          AssertionError,
          assert_array_almost_equal,
          model.distributions[0].probs,
          p0,
      )
      assert_raises(
          AssertionError,
          assert_array_almost_equal,
          model.distributions[1].probs[0],
          p1[0],
      )
      assert_array_almost_equal(model.distributions[2].probs[0], p2[0])
  
      d0 = Categorical(p0, frozen=True)
      d2 = ConditionalCategorical(p2)
  
      model = MarkovChain([d0, d1, d2])
      model.summarize(X)
      model.from_summaries()
  
      assert_array_almost_equal(model.distributions[0].probs, p0)
      assert_raises(
          AssertionError,
          assert_array_almost_equal,
          model.distributions[1].probs[0],
          p1[0],
      )
      assert_raises(
          AssertionError,
          assert_array_almost_equal,
          model.distributions[2].probs[0],
          p2[0],
      )
  
imports: import numpy
  import torch
  import pytest
  from pomegranate.markov_chain import MarkovChain
  from pomegranate.distributions import Categorical
  from pomegranate.distributions import ConditionalCategorical
  from .distributions._utils import _test_initialization_raises_one_parameter
  from .distributions._utils import _test_initialization
  from .distributions._utils import _test_predictions
  from .distributions._utils import _test_efd_from_summaries
  from .distributions._utils import _test_raises
  from nose.tools import assert_raises
  from numpy.testing import assert_array_almost_equal
label_desc: Use image node_id 18 for calling a global function with example usage: test_from_summaries_frozen(model, X) without return types