class_docstr: Evaluation class for measuring Precision, Recall and F-measure of notes.
  
  Parameters
  ----------
  detections : str, list or numpy array
      Detected notes.
  annotations : str, list or numpy array
      Annotated ground truth notes.
  window : float, optional
      F-measure evaluation window [seconds]
  delay : float, optional
      Delay the detections `delay` seconds for evaluation.
code: def __init__(
      self, detections, annotations, window=WINDOW, delay=0, **kwargs
  ):
      # convert to numpy array
      detections = np.array(detections, dtype=float, ndmin=2)
      annotations = np.array(annotations, dtype=float, ndmin=2)
      # shift the detections if needed
      if delay != 0:
          detections[:, 0] += delay
      # evaluate
      numbers = note_onset_evaluation(detections, annotations, window)
      tp, fp, tn, fn, errors = numbers
      super(NoteEvaluation, self).__init__(tp, fp, tn, fn, **kwargs)
      self.errors = errors
      # save them for the individual note evaluation
      self.detections = detections
      self.annotations = annotations
      self.window = window
  
imports: from __future__ import absolute_import, division, print_function
  import warnings
  import numpy
  from .None import evaluation_io, MultiClassEvaluation, SumEvaluation, MeanEvaluation
  from .onsets import onset_evaluation, OnsetEvaluation
  from ..io import load_notes
label_desc: Use image node_id 1 to create a new NoteEvaluation object from inherited base classes: MultiClassEvaluation with example: obj = NoteEvaluation(detections, annotations, window, delay)