def glover_dispersion_derivative(tr, oversampling=50, time_length=32.,
                                 onset=0.):
    """Implementation of the Glover dispersion derivative hrf model

    Parameters
    ----------
    tr: float
        scan repeat time, in seconds

    oversampling: int, optional
        temporal oversampling factor in seconds

    time_length: float, optional
        hrf kernel length, in seconds

    onset : float, optional
        onset of the response in seconds

    Returns
    -------
    dhrf: array of shape(length / tr * oversampling), dtype=float
          dhrf sampling on the oversampled time grid
    """
    dd = .01
    dhrf = 1. / dd * (
        - _gamma_difference_hrf(
            tr, oversampling, time_length, onset,
            delay=6, undershoot=12., dispersion=.9 + dd, ratio=.35)
        + _gamma_difference_hrf(
            tr, oversampling, time_length, onset, delay=6, undershoot=12.,
            dispersion=.9, ratio=.35))
    return dhrf