code: def test_summarize(X, distributions):
      d = IndependentComponents(distributions)
      d.summarize(X[:4])
      assert_array_almost_equal(d.distributions[0]._w_sum, [4.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [4.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [4.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [8.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [4.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[2.0, 2.0]]
      )
  
      d.summarize(X[4:])
      assert_array_almost_equal(d.distributions[0]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [14.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [11.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [7.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[4.0, 3.0]]
      )
  
      d1 = Exponential([1.0])
      d2 = Gamma([1.1], [2.0])
      d3 = Categorical([[0.3, 0.7]])
      d = IndependentComponents([d1, d2, d3])
      d.summarize(X)
      assert_array_almost_equal(d.distributions[0]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [14.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [11.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [7.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[4.0, 3.0]]
      )
  
      d1, d2, d3 = Exponential(), Gamma(), Categorical()
      d = IndependentComponents([d1, d2, d3])
      d.summarize(X[:4])
      assert_array_almost_equal(d.distributions[0]._w_sum, [4.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [4.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [4.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [8.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [4.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[2.0, 2.0]]
      )
  
      d.summarize(X[4:])
      assert_array_almost_equal(d.distributions[0]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [14.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [11.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [7.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[4.0, 3.0]]
      )
  
      d1, d2, d3 = Exponential(), Gamma(), Categorical()
      d = IndependentComponents([d1, d2, d3])
      d.summarize(X)
      assert_array_almost_equal(d.distributions[0]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[0]._xw_sum, [14.0])
      assert_array_almost_equal(d.distributions[1]._w_sum, [7.0])
      assert_array_almost_equal(d.distributions[1]._xw_sum, [11.0])
      assert_array_almost_equal(d.distributions[2]._w_sum, [7.0])
      assert_array_almost_equal(
          d.distributions[2]._xw_sum, [[4.0, 3.0]]
      )
  
imports: import os
  import numpy
  import torch
  import pytest
  from pomegranate.distributions import Exponential
  from pomegranate.distributions import Gamma
  from pomegranate.distributions import Categorical
  from pomegranate.distributions import IndependentComponents
  from ._utils import _test_initialization_raises_one_parameter
  from ._utils import _test_initialization
  from ._utils import _test_predictions
  from ._utils import _test_efd_from_summaries
  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 14 for calling a global function with example usage: test_summarize(X, distributions) without return types