<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def extractData(fileName, populations):
 """Extract the C1 and C2 columns for plotting. :param fileName: the name of the MDS file. :param populations: the population of each sample in the MDS file. :type fileName: str :type fileName: dict :returns: the MDS data with information about the population of each sample. The first element of the returned tuple is a tuple. The last element of the returned tuple is the list of the populations (the order is the same as in the first element). The first element of the first tuple is the C1 data, and the last element is the C2 data. .. note:: If a sample in the MDS file is not in the population file, it is skip. """

    # The different population labels
    possibleLabels = list(set(populations.values()))
    nbPossibleLabels = len(possibleLabels)

    c1 = [[] for i in xrange(nbPossibleLabels)]
    c2 = [[] for i in xrange(nbPossibleLabels)]
    with open(fileName, 'r') as inputFile:
        headerIndex = None
        for i, line in enumerate(inputFile):
            row = createRowFromPlinkSpacedOutput(line)

            if i == 0:
                # This is the header
                headerIndex = dict([(row[j], j) for j in xrange(len(row))])

                for columnName in ["FID", "IID", "C1", "C2"]:
                    if columnName not in headerIndex:
                        msg = "%(fileName)s: no column named " \
                              "%(columnName)s" % locals()
                        raise ProgramError(msg)

            else:
                # Getting the component 1 and 2
                currC1 = row[headerIndex["C1"]]
                currC2 = row[headerIndex["C2"]]

                # Getting the individual informations
                famID = row[headerIndex["FID"]]
                indID = row[headerIndex["IID"]]

                curLabel = ""
                if (famID, indID) in populations:
                    curLabel = populations[(famID, indID)]
                else:
                    continue

                c1[possibleLabels.index(curLabel)].append(currC1)
                c2[possibleLabels.index(curLabel)].append(currC2)

    return (np.array(c1), np.array(c2)), possibleLabels