<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_population_file(file_name):
 """Reads the population file. :param file_name: the name of the population file. :type file_name: str :returns: a :py:class:`dict` containing the population for each of the samples. The population file should contain three columns: 1. The family ID. 2. The individual ID. 3. The population of the file (one of ``CEU``, ``YRI``, ``JPT-CHB`` or ``SOURCE``). The outliers are from the ``SOURCE`` population, when compared to one of the three reference population (``CEU``, ``YRI`` or ``JPT-CHB``). """

    pops = {}
    required_pops = {"CEU", "YRI", "JPT-CHB", "SOURCE"}
    with open(file_name, 'rb') as input_file:
        for line in input_file:
            row = line.rstrip("\r\n").split("\t")

            # The data
            sample_id = tuple(row[:2])
            pop = row[-1]

            # Checking the pop
            if pop not in required_pops:
                msg = ("{}: sample {}: unknown population "
                       "{}".format(file_name, " ".join(sample_id), pop))
                raise ProgramError(msg)

            # Saving the population file
            pops[tuple(row[:2])] = row[-1]

    return pops