code: def merge_sites(self, tol=0.01, mode="sum"):
          
          mode = mode.lower()[0]
          from scipy.spatial.distance import squareform
          from scipy.cluster.hierarchy import fcluster, linkage
  
          d = self.distance_matrix
          np.fill_diagonal(d, 0)
          clusters = fcluster(linkage(squareform((d + d.T) / 2)),
                              tol, 'distance')
          sites = []
          for c in np.unique(clusters):
              inds = np.where(clusters == c)[0]
              species = self[inds[0]].species
              coords = self[inds[0]].frac_coords
              props = self[inds[0]].properties
              for n, i in enumerate(inds[1:]):
                  sp = self[i].species
                  if mode == "s":
                      species += sp
                  offset = self[i].frac_coords - coords
                  coords = coords + ((offset - np.round(offset)) / (n + 2)).astype(
                      coords.dtype)
                  for key in props.keys():
                      if props[key] is not None and self[i].properties[key] != props[key]:
                          if mode  == 'a' and isinstance(props[key], float):
                              # update a running total
                              props[key] = props[key]*(n+1)/(n+2) + self[i].properties[key]/(n+2)
                          else:
                              props[key] = None
                              warnings.warn("Sites with different site property %s are merged. "
                                          "So property is set to none" % key)
              sites.append(PeriodicSite(species, coords, self.lattice, properties=props))
  
          self._sites = sites
docs: Merges sites (adding occupancies) within tol of each other.
          Removes site properties.
  
          Args:
              tol (float): Tolerance for distance to merge sites.
              mode (str): Three modes supported. "delete" means duplicate sites are
                  deleted. "sum" means the occupancies are summed for the sites.
                  "average" means that the site is deleted but the properties are averaged
                  Only first letter is considered.