docs: def add_ms1_quant_from_top3_mzidtsv(proteins, psms, headerfields, protcol):
      """Collects PSMs with the highes precursor quant values,
      adds sum of the top 3 of these to a protein table"""
      if not protcol:
          protcol = mzidtsvdata.HEADER_MASTER_PROT
      top_ms1_psms = generate_top_psms(psms, protcol)
      for protein in proteins:
          prot_acc = protein[prottabledata.HEADER_PROTEIN]
          prec_area = calculate_protein_precursor_quant(top_ms1_psms, prot_acc)
          outprotein = {k: v for k, v in protein.items()}
          outprotein[headerfields['precursorquant'][
              prottabledata.HEADER_AREA][None]] = str(prec_area)
          yield outprotein