import re


def parse_name(author_name):
    """Parse the given, valid authors name.

    Return: tuple containing first name, a tuple of middle initials and last
    name of the author.
    Raises: ValueError if given an invalid author_name.
    """
    name_re = re.compile(r'(?:\w[-\'\w]* *)+,(?: *\w[-\'\w]*\.?)+')
    if not name_re.match(author_name):
        raise ValueError(f'Invalid author name {author_name!r}.')
    last_name, initials = author_name.split(',')
    initials = [i for i in re.split(r'[\.\s]+', initials) if i != '']
    first_initial, middle_initials = initials[0][0], initials[1:]
    middle_initials = tuple(initial[0] for initial in middle_initials)
    return first_initial, middle_initials, last_name