code: def replace(self, i, species, coords=None, coords_are_cartesian=False,
                  properties=None):
          
          if coords is None:
              frac_coords = self[i].frac_coords
          elif coords_are_cartesian:
              frac_coords = self._lattice.get_fractional_coords(coords)
          else:
              frac_coords = coords
  
          new_site = PeriodicSite(species, frac_coords, self._lattice,
                                  properties=properties)
          self._sites[i] = new_site
docs: Replace a single site. Takes either a species or a dict of species and
          occupations.
  
          Args:
              i (int): Index of the site in the _sites list.
              species (species-like): Species of replacement site
              coords (3x1 array): Coordinates of replacement site. If None,
                  the current coordinates are assumed.
              coords_are_cartesian (bool): Whether coordinates are cartesian.
                  Defaults to False.
              properties (dict): Properties associated with the site.