code: def test_values_beat(self):
      # test with 2 BeatStateSpaces
      bss1 = BeatStateSpace(1, 4)
      bss2 = BeatStateSpace(2, 6)
      btm1 = BeatTransitionModel(bss1, 100)
      btm2 = BeatTransitionModel(bss2, 100)
      tm = MultiPatternTransitionModel([btm1, btm2])
  
      self.assertTrue(tm.num_states == 10 + 20)
      self.assertTrue(tm.num_transitions == 13 + 28)
      # the first pattern has 13 transitions
      self.assertTrue(
          np.allclose(
              tm.states[:13], [0, 2, 5, 1, 5, 9, 3, 4, 5, 9, 6, 7, 8]
          )
      )
      # the second 28
      self.assertTrue(
          np.allclose(
              tm.states[13:],
              [
                  11,
                  14,
                  10,
                  14,
                  18,
                  12,
                  13,
                  14,
                  18,
                  23,
                  29,
                  15,
                  16,
                  17,
                  18,
                  23,
                  29,
                  19,
                  20,
                  21,
                  22,
                  23,
                  29,
                  24,
                  25,
                  26,
                  27,
                  28,
              ],
          )
      )
      # the first pattern has 10 states (pointers has one more element)
      self.assertTrue(
          np.allclose(
              tm.pointers[:11], [0, 1, 3, 4, 6, 7, 8, 10, 11, 12, 13]
          )
      )
      # the second has 20
      self.assertTrue(
          np.allclose(
              tm.pointers[11:],
              [
                  15,
                  16,
                  18,
                  19,
                  20,
                  24,
                  25,
                  26,
                  27,
                  30,
                  31,
                  32,
                  33,
                  34,
                  36,
                  37,
                  38,
                  39,
                  40,
                  41,
              ],
          )
      )
      # transition probabilities
      self.assertTrue(
          np.allclose(
              tm.probabilities,
              [
                  1,
                  1,
                  0,
                  1,
                  1,
                  0,
                  1,
                  1,
                  0,
                  1,
                  1,
                  1,
                  1,
                  1,
                  0,
                  1,
                  1,
                  0,
                  1,
                  1,
                  0,
                  1,
                  2.06e-09,
                  0,
                  1,
                  1,
                  1,
                  0,
                  1,
                  5.78e-08,
                  1,
                  1,
                  1,
                  1,
                  2.06e-09,
                  1,
                  1,
                  1,
                  1,
                  1,
                  1,
              ],
          )
      )
      self.assertTrue(
          np.allclose(
              tm.log_probabilities,
              [
                  0,
                  0,
                  -33.33333,
                  0,
                  0,
                  -25,
                  0,
                  0,
                  -33.33333,
                  0,
                  0,
                  0,
                  0,
                  0,
                  -33.33333,
                  0,
                  0,
                  -25,
                  0,
                  0,
                  -33.33333,
                  0,
                  -20,
                  -33.33333,
                  0,
                  0,
                  0,
                  -25,
                  -4.1e-09,
                  -16.6666,
                  0,
                  0,
                  0,
                  0,
                  -20,
                  -5.78e-08,
                  0,
                  0,
                  0,
                  0,
                  0,
              ],
          )
      )
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from madmom.features.beats_hmm import *
label_desc: Use image node_id 2 for calling the TestMultiPatternTransitionModelClass obj's underlying member method code with example usage: obj.test_values_beat() without return types