code: def uncontract_segmented(basis, use_copy=True):
      
  
      if use_copy:
          basis = copy.deepcopy(basis)
  
      for k, el in basis['elements'].items():
  
          if not 'electron_shells' in el:
              continue
  
          newshells = []
  
          for sh in el['electron_shells']:
              exponents = sh['exponents']
              nam = len(sh['angular_momentum'])
  
              for i in range(len(exponents)):
                  newsh = sh.copy()
                  newsh['exponents'] = [exponents[i]]
                  newsh['coefficients'] = [["1.00000000"] * nam]
  
                  # Remember to transpose the coefficients
                  newsh['coefficients'] = list(map(list, zip(*newsh['coefficients'])))
  
                  newshells.append(newsh)
  
          el['electron_shells'] = newshells
  
      return basis
docs: Removes the segmented contractions from a basis set
  
      This implicitly removes general contractions as well,
      but will leave sp, spd, ... orbitals alone
  
      The input basis set is not modified. The returned basis
      may have functions with coefficients of zero and may have duplicate
      shells.
  
      If use_copy is True, the input basis set is not modified.