def evaluate(reference_beats, estimated_beats, **kwargs):
    """Compute all metrics for the given reference and estimated annotations.

    Examples
    --------
    >>> reference_beats = mir_eval.io.load_events('reference.txt')
    >>> estimated_beats = mir_eval.io.load_events('estimated.txt')
    >>> scores = mir_eval.beat.evaluate(reference_beats, estimated_beats)

    Parameters
    ----------
    reference_beats : np.ndarray
        Reference beat times, in seconds
    estimated_beats : np.ndarray
        Query beat times, in seconds
    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.

    """

    # Trim beat times at the beginning of the annotations
    reference_beats = util.filter_kwargs(trim_beats, reference_beats, **kwargs)
    estimated_beats = util.filter_kwargs(trim_beats, estimated_beats, **kwargs)

    # Now compute all the metrics

    scores = collections.OrderedDict()

    # F-Measure
    scores['F-measure'] = util.filter_kwargs(f_measure, reference_beats,
                                             estimated_beats, **kwargs)

    # Cemgil
    scores['Cemgil'], scores['Cemgil Best Metric Level'] = \
        util.filter_kwargs(cemgil, reference_beats, estimated_beats, **kwargs)

    # Goto
    scores['Goto'] = util.filter_kwargs(goto, reference_beats,
                                        estimated_beats, **kwargs)

    # P-Score
    scores['P-score'] = util.filter_kwargs(p_score, reference_beats,
                                           estimated_beats, **kwargs)

    # Continuity metrics
    (scores['Correct Metric Level Continuous'],
     scores['Correct Metric Level Total'],
     scores['Any Metric Level Continuous'],
     scores['Any Metric Level Total']) = util.filter_kwargs(continuity,
                                                            reference_beats,
                                                            estimated_beats,
                                                            **kwargs)

    # Information gain
    scores['Information gain'] = util.filter_kwargs(information_gain,
                                                    reference_beats,
                                                    estimated_beats,
                                                    **kwargs)

    return scores
Compute all metrics for the given reference and estimated annotations.

    Examples
    --------
    >>> reference_beats = mir_eval.io.load_events('reference.txt')
    >>> estimated_beats = mir_eval.io.load_events('estimated.txt')
    >>> scores = mir_eval.beat.evaluate(reference_beats, estimated_beats)

    Parameters
    ----------
    reference_beats : np.ndarray
        Reference beat times, in seconds
    estimated_beats : np.ndarray
        Query beat times, in seconds
    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.