code: def tag_residues_with_heptad_register(helices):
      
      base_reg = 'abcdefg'
      start, end = start_and_end_of_reference_axis(helices)
      for h in helices:
          ref_axis = gen_reference_primitive(h, start=start, end=end)
          crangles = crick_angles(h, reference_axis=ref_axis, tag=False)[:-1]
          reg_fit = fit_heptad_register(crangles)
          exp_base = base_reg * (len(h) // 7 + 2)
          hep_pos = reg_fit[0][0]
          register_string = exp_base[hep_pos:hep_pos + len(h)]
          for i, register in enumerate(register_string):
              h[i].tags['register'] = register
      return
docs: tags Residues in input helices with heptad register. (Helices not required to be the same length).
  
      Parameters
      ----------
      helices : [Polypeptide]
  
      Returns
      -------
      None