def directional_diffusion(dt, V, min_diffusivity=0):
    """ Calculates the apparent diffusion coefficient (adc) in each direction
    of a sphere for a single voxel [1]_.

    Parameters
    ----------
    dt : array (6,)
        elements of the diffusion tensor of the voxel.
    V : array (g, 3)
        g directions of a Sphere in Cartesian coordinates
    min_diffusivity : float (optional)
        Because negative eigenvalues are not physical and small eigenvalues
        cause quite a lot of noise in diffusion-based metrics, diffusivity
        values smaller than `min_diffusivity` are replaced with
        `min_diffusivity`. Default = 0

    Returns
    --------
    adc : ndarray (g,)
        Apparent diffusion coefficient (adc) in all g directions of a sphere
        for a single voxel.

    References
    ----------
    .. [1] Neto Henriques R, Correia MM, Nunes RG, Ferreira HA (2015).
           Exploring the 3D geometry of the diffusion kurtosis tensor -
           Impact on the development of robust tractography procedures and
           novel biomarkers, NeuroImage 111: 85-99
    """
    adc = V[:, (0)] * V[:, (0)] * dt[0] + 2 * V[:, (0)] * V[:, (1)] * dt[1
        ] + V[:, (1)] * V[:, (1)] * dt[2] + 2 * V[:, (0)] * V[:, (2)] * dt[3
        ] + 2 * V[:, (1)] * V[:, (2)] * dt[4] + V[:, (2)] * V[:, (2)] * dt[5]
    if min_diffusivity is not None:
        adc = adc.clip(min=min_diffusivity)
    return adc
