code: def test_fit_chain(X):
      d = JointCategorical().fit(X[:4])
      _test_efd_from_summaries(
          d,
          "probs",
          "_log_probs",
          [
              [[0.0000, 0.2500], [0.0000, 0.0000], [0.0000, 0.0000]],
              [[0.0000, 0.0000], [0.0000, 0.0000], [0.7500, 0.0000]],
          ],
      )
  
      d.fit(X[4:])
      _test_efd_from_summaries(
          d,
          "probs",
          "_log_probs",
          [
              [[0.0000, 0.0000], [0.3333, 0.0000], [0.0000, 0.0000]],
              [[0.0000, 0.0000], [0.6667, 0.0000], [0.0000, 0.0000]],
          ],
      )
  
      d = JointCategorical().fit(X)
      _test_efd_from_summaries(
          d,
          "probs",
          "_log_probs",
          [
              [[0.0000, 0.1429], [0.1429, 0.0000], [0.0000, 0.0000]],
              [[0.0000, 0.0000], [0.2857, 0.0000], [0.4286, 0.0000]],
          ],
      )
  
imports: import numpy
  import torch
  import pytest
  from pomegranate.distributions import JointCategorical
  from ._utils import _test_initialization_raises_one_parameter
  from ._utils import _test_initialization
  from ._utils import _test_predictions
  from ._utils import _test_raises
  from nose.tools import assert_raises
  from numpy.testing import assert_array_almost_equal
label_desc: Use image node_id 32 for calling a global function with example usage: test_fit_chain(X) without return types