def METHOD_NAME(data_file):
    """ Read error rate data from a phiX data file.
    :param file data_file: an open file-like object. Needs to have a two-byte
    header with the file version and the length of each record, followed by the
    records.
    :return: an iterator over the records of data in the file. Each record is a
    dictionary with the following keys:
    - lane [uint16]
    - tile [uint16]
    - cycle [uint16]
    - error_rate [float]
    - num_0_errors [uint32]
    - num_1_error [uint32]
    - num_2_errors [uint32]
    - num_3_errors [uint32]
    - num_4_errors [uint32]
    """
    PARSED_LENGTH = 30
    for data in read_records(data_file, min_version=3):
        fields = unpack('<HHHfLLLLL', data[:PARSED_LENGTH])
        yield dict(lane=fields[0],
                   tile=fields[1],
                   cycle=fields[2],
                   error_rate=fields[3],
                   num_0_errors=fields[4],
                   num_1_error=fields[5],
                   num_2_errors=fields[6],
                   num_3_errors=fields[7],
                   num_4_errors=fields[8])