def evaluate(ref_time, ref_freqs, est_time, est_freqs, **kwargs):
    """Evaluate two multipitch (multi-f0) transcriptions, where the first is
    treated as the reference (ground truth) and the second as the estimate to
    be evaluated (prediction).

    Examples
    --------
    >>> ref_time, ref_freq = mir_eval.io.load_ragged_time_series('ref.txt')
    >>> est_time, est_freq = mir_eval.io.load_ragged_time_series('est.txt')
    >>> scores = mir_eval.multipitch.evaluate(ref_time, ref_freq,
    ...                                       est_time, est_freq)

    Parameters
    ----------
    ref_time : np.ndarray
        Time of each reference frequency value
    ref_freqs : list of np.ndarray
        List of np.ndarrays of reference frequency values
    est_time : np.ndarray
        Time of each estimated frequency value
    est_freqs : list of np.ndarray
        List of np.ndarrays of estimate frequency values
    kwargs
        Additional keyword arguments which will be passed to the
        appropriate metric or preprocessing functions.

    Returns
    -------
    scores : dict
        Dictionary of scores, where the key is the metric name (str) and
        the value is the (float) score achieved.

    """
    scores = collections.OrderedDict()

    (scores['Precision'],
     scores['Recall'],
     scores['Accuracy'],
     scores['Substitution Error'],
     scores['Miss Error'],
     scores['False Alarm Error'],
     scores['Total Error'],
     scores['Chroma Precision'],
     scores['Chroma Recall'],
     scores['Chroma Accuracy'],
     scores['Chroma Substitution Error'],
     scores['Chroma Miss Error'],
     scores['Chroma False Alarm Error'],
     scores['Chroma Total Error']) = util.filter_kwargs(
         metrics, ref_time, ref_freqs, est_time, est_freqs, **kwargs)

    return scores
Evaluate two multipitch (multi-f0) transcriptions, where the first is
    treated as the reference (ground truth) and the second as the estimate to
    be evaluated (prediction).

    Examples
    --------
    >>> ref_time, ref_freq = mir_eval.io.load_ragged_time_series('ref.txt')
    >>> est_time, est_freq = mir_eval.io.load_ragged_time_series('est.txt')
    >>> scores = mir_eval.multipitch.evaluate(ref_time, ref_freq,
    ...                                       est_time, est_freq)

    Parameters
    ----------
    ref_time : np.ndarray
        Time of each reference frequency value
    ref_freqs : list of np.ndarray
        List of np.ndarrays of reference frequency values
    est_time : np.ndarray
        Time of each estimated frequency value
    est_freqs : list of np.ndarray
        List of np.ndarrays of estimate frequency values
    kwargs
        Additional keyword arguments which will be passed to the
        appropriate metric or preprocessing functions.

    Returns
    -------
    scores : dict
        Dictionary of scores, where the key is the metric name (str) and
        the value is the (float) score achieved.