code: def test_sum_results(self):
      sum_eval = ChordSumEvaluation([self.eval1, self.eval2])
      self.assertAlmostEqual(sum_eval.root, 0.951219512195122)
      self.assertAlmostEqual(sum_eval.majmin, 0.8028169014084507)
      self.assertAlmostEqual(sum_eval.majminbass, 0.7042253521126761)
      self.assertAlmostEqual(sum_eval.sevenths, 0.7042253521126761)
      self.assertAlmostEqual(sum_eval.seventhsbass, 0.6056338028169015)
      self.assertAlmostEqual(
          sum_eval.undersegmentation, 0.9634146341463415
      )
      self.assertAlmostEqual(
          sum_eval.oversegmentation, 0.8048780487804879
      )
      self.assertAlmostEqual(sum_eval.segmentation, 0.8048780487804879)
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from os.path import join
  from madmom.evaluation.chords import *
  from .None import ANNOTATIONS_PATH, DETECTIONS_PATH
label_desc: Use image node_id 3 for calling the TestAggregateChordEvaluation obj's underlying member method code with example usage: obj.test_sum_results() without return types