code: def _findRedundantProteins(protToPeps, pepToProts, proteins=None):
      if proteins is None:
          proteins = viewkeys(protToPeps)
      pepFrequency = _getValueCounts(pepToProts)
      protPepCounts = _getValueCounts(protToPeps)
      getCount = operator.itemgetter(1)
      getProt = operator.itemgetter(0)
      proteinTuples = list()
      for protein in proteins:
          if isinstance(protein, tuple):
              proteinTuples.append(protein)
          else:
              proteinTuples.append(tuple([protein]))
      sort = list()
      for protein in sorted(proteinTuples, reverse=True):
          if len(protein) == 1:
              protein = protein[0]
          protPepFreq = [pepFrequency[pep] for pep in protToPeps[protein]]
          if min(protPepFreq) > 1:
              sortValue = (len(protPepFreq)*-1, sorted(protPepFreq, reverse=True))
              sort.append((protein, sortValue))
      sortedProteins = map(getProt, sorted(sort, key=getCount, reverse=True))
      redundantProteins = set()
      for protein in sortedProteins:
          for pep in protToPeps[protein]:
              if pepFrequency[pep] <= 1:
                  break
          else:
              protPepFrequency = Counter(protToPeps[protein])
              pepFrequency.subtract(protPepFrequency)
              redundantProteins.add(protein)
      return redundantProteins