def hudson_inverse_Q_ratio(mu=None,
                           pmod=None,
                           pr=None,
                           vp=None,
                           vs=None,
                           aligned=True):
    """
    Dvorkin et al. (2014), Eq 15.44 (aligned) and 15.48 (not aligned). You must
    provide one of the following: `pr`, or `vp` and `vs`, or `mu` and `pmod`.

    Args:
        mu (float): Shear modulus, sometimes called G.
        pmod (float): Compressional modulus, M.
        pr (float): Poisson's ratio, somtimes called v.
        vp (ndarray): P-wave interval velocity.
        vs (ndarray): S-wave interval velocity.
        aligned (bool): Either treats cracks as alligned (Default, True)
                        or assumes defects are randomly oriented (False)

    Returns:
        float: 2Q_s^-1
    """
    if pr is not None:
        x = (2 - 2*pr) / (1 - 2*pr)
    elif (vp is not None) and (vs is not None):
        x = vp**2 / vs**2
    elif (mu is not None) and (pmod is not None):
        x = pmod / mu
    else:
        raise TypeError("You must provide pr or (vp and vs) or (mu and pmod)")

    if aligned:
        return 0.25 * (x - 2)**2 * (3*x - 2) / (x**2 - x)
    else:
        a = 2*x / (3*x - 2)
        b = x / 3*(x - 1)
        return 1.25 * ((x - 2)**2 / (x - 1)) / (a + b)