def renumber(topology, start=None, column='resSeq', retain_gap=True):
    """
    Renumber a numeric column in the TopologyDataFrame

    Select the column to renumber by column header name using the `column`
    argument. Renumber starting from a new `start` number or the first number
    in the column.
    If there is a gab in the numeric sequence the `retain_gab` argument will
    correct for this in the renumbered sequence.

    :param topology:
    :type topology:     :interact:TopologyDataFrame
    :param start:       start number
    :type:              :py:int
    :param column:      column name of numeric column to renumber
    :type column:       :py:str
    :param retain_gap:  preserve gaps in the numbering
    :type retain_gap:   :py:bool

    :return:
    """
    if column not in topology.columns:
        raise TypeError('No such column: {0}'.format(column))
    numbers = topology[column].values
    if start is None:
        start = int(numbers[0])
    renumbered = []
    current = None
    for nr in numbers:
        if current is None:
            current = nr
        if current != nr:
            if retain_gap:
                diff = nr - current
                if diff > 1:
                    start += diff
                else:
                    start += 1
            else:
                start += 1
            current = nr
        renumbered.append(start)
    if len(renumbered) != len(numbers):
        raise ArithmeticError('Renumbering failed, length mismatch')
    topology[column] = renumbered
    return topology
