code: def test_results(self):
      # empty mean evaluation
      e = NoteMeanEvaluation([])
      self.assertEqual(e.num_tp, 0)
      self.assertEqual(e.num_fp, 0)
      self.assertEqual(e.num_tn, 0)
      self.assertEqual(e.num_fn, 0)
      self.assertTrue(math.isnan(e.precision))
      self.assertTrue(math.isnan(e.recall))
      self.assertTrue(math.isnan(e.fmeasure))
      self.assertTrue(math.isnan(e.accuracy))
      self.assertTrue(np.allclose(e.errors, np.zeros((0, 2))))
      self.assertTrue(math.isnan(e.mean_error))
      self.assertTrue(math.isnan(e.std_error))
  
      # mean evaluation of empty note evaluation
      e1 = NoteEvaluation([], [])
      e = NoteMeanEvaluation([e1])
      self.assertEqual(e.num_tp, 0)
      self.assertEqual(e.num_fp, 0)
      self.assertEqual(e.num_tn, 0)
      self.assertEqual(e.num_fn, 0)
      self.assertEqual(e.precision, 1)
      self.assertEqual(e.recall, 1)
      self.assertEqual(e.fmeasure, 1)
      self.assertEqual(e.accuracy, 1)
      self.assertTrue(np.allclose(e.errors, np.zeros((0, 2))))
      self.assertTrue(math.isnan(e.mean_error))
      self.assertTrue(math.isnan(e.std_error))
  
      # mean evaluation of empty and real note evaluation
      e2 = NoteEvaluation(DETECTIONS, ANNOTATIONS)
      e = NoteMeanEvaluation([e1, e2])
      self.assertTrue(
          np.allclose(e.num_tp, np.mean([e_.num_tp for e_ in [e1, e2]]))
      )
      self.assertTrue(
          np.allclose(e.num_fp, np.mean([e_.num_fp for e_ in [e1, e2]]))
      )
      self.assertTrue(
          np.allclose(e.num_tn, np.mean([e_.num_tn for e_ in [e1, e2]]))
      )
      self.assertTrue(
          np.allclose(e.num_fn, np.mean([e_.num_fn for e_ in [e1, e2]]))
      )
      self.assertTrue(
          np.allclose(
              e.precision, np.mean([e_.precision for e_ in [e1, e2]])
          )
      )
      self.assertTrue(
          np.allclose(e.recall, np.mean([e_.recall for e_ in [e1, e2]]))
      )
      self.assertTrue(
          np.allclose(
              e.fmeasure, np.mean([e_.fmeasure for e_ in [e1, e2]])
          )
      )
      self.assertTrue(
          np.allclose(
              e.accuracy, np.mean([e_.accuracy for e_ in [e1, e2]])
          )
      )
      self.assertTrue(
          np.allclose(
              e.errors, np.concatenate([e_.errors for e_ in [e1, e2]])
          )
      )
      # mean and std errors are those of e2, since those of e1 are NaN
      self.assertEqual(e.mean_error, e2.mean_error)
      self.assertEqual(e.std_error, e2.std_error)
  
imports: from __future__ import absolute_import, division, print_function
  import math
  import unittest
  from madmom.evaluation.notes import *
  from .None import ANNOTATIONS_PATH, DETECTIONS_PATH
label_desc: Use image node_id 2 for calling the TestNoteMeanEvaluationClass obj's underlying member method code with example usage: obj.test_results() without return types