docs: 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