code: def test_values(self):
      self.assertTrue(self.processor.correct)
      # we have to test each bar length individually
      path, prob = self.processor.hmms[0].viterbi(sample_downbeat_act)
      self.assertTrue(
          np.allclose(
              path[:13],
              [
                  7682,
                  7683,
                  7684,
                  7685,
                  7686,
                  7687,
                  7688,
                  7689,
                  217,
                  218,
                  219,
                  220,
                  221,
              ],
          )
      )
      self.assertTrue(np.allclose(prob, -764.586595603))
      tm = self.processor.hmms[0].transition_model
      positions = tm.state_space.state_positions[path]
      self.assertTrue(
          np.allclose(
              positions[:10],
              [
                  2.77142857,
                  2.8,
                  2.82857143,
                  2.85714286,
                  2.88571429,
                  2.91428571,
                  2.94285714,
                  2.97142857,
                  0,
                  0.02857143,
              ],
          )
      )
      intervals = tm.state_space.state_intervals[path]
      self.assertTrue(np.allclose(intervals[:10], 35))
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from os.path import join
  from madmom.ml.hmm import HiddenMarkovModel
  from madmom.audio.chroma import CLPChroma
  from madmom.features import Activations
  from madmom.features.downbeats import *
  from madmom.models import PATTERNS_BALLROOM
  from .None import ACTIVATIONS_PATH, ANNOTATIONS_PATH, AUDIO_PATH, DETECTIONS_PATH
  from .test_utils import DETECTION_FILES
label_desc: Use image node_id 3 for calling the TestDBNDownBeatTrackingProcessorClass obj's underlying member method code with example usage: obj.test_values() without return types