<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_integer_index( miller_index: bool, round_dp: int = 4, verbose: bool = True ) -> Tuple[int, int, int]: """ Attempt to convert a vector of floats to whole numbers. Args: miller_index (list of float):
 A list miller indexes. round_dp (int, optional):
 The number of decimal places to round the miller index to. verbose (bool, optional):
 Whether to print warnings. Returns: (tuple):
 The Miller index. """

    miller_index = np.asarray(miller_index)

    # deal with the case we have small irregular floats
    # that are all equal or factors of each other
    miller_index /= min([m for m in miller_index if m != 0])
    miller_index /= np.max(np.abs(miller_index))

    # deal with the case we have nice fractions
    md = [Fraction(n).limit_denominator(12).denominator for n in miller_index]
    miller_index *= reduce(lambda x, y: x * y, md)
    int_miller_index = np.int_(np.round(miller_index, 1))
    miller_index /= np.abs(reduce(gcd, int_miller_index))

    # round to a reasonable precision
    miller_index = np.array([round(h, round_dp) for h in miller_index])

    # need to recalculate this after rounding as values may have changed
    int_miller_index = np.int_(np.round(miller_index, 1))
    if np.any(np.abs(miller_index - int_miller_index) > 1e-6) and verbose:
        warnings.warn("Non-integer encountered in Miller index")
    else:
        miller_index = int_miller_index

    # minimise the number of negative indexes
    miller_index += 0  # converts -0 to 0

    def n_minus(index):
        return len([h for h in index if h < 0])

    if n_minus(miller_index) > n_minus(miller_index * -1):
        miller_index *= -1

    # if only one index is negative, make sure it is the smallest
    # e.g. (-2 1 0) -> (2 -1 0)
    if (
        sum(miller_index != 0) == 2
        and n_minus(miller_index) == 1
        and abs(min(miller_index)) > max(miller_index)
    ):
        miller_index *= -1

    return tuple(miller_index)