code: def apply_operation(self, symmop, fractional=False):
          
          if not fractional:
              self._lattice = Lattice([symmop.apply_rotation_only(row)
                                       for row in self._lattice.matrix])
  
              def operate_site(site):
                  new_cart = symmop.operate(site.coords)
                  new_frac = self._lattice.get_fractional_coords(new_cart)
                  return PeriodicSite(site.species, new_frac,
                                      self._lattice,
                                      properties=site.properties)
  
          else:
              new_latt = np.dot(symmop.rotation_matrix, self._lattice.matrix)
              self._lattice = Lattice(new_latt)
  
              def operate_site(site):
                  return PeriodicSite(site.species,
                                      symmop.operate(site.frac_coords),
                                      self._lattice,
                                      properties=site.properties)
  
          self._sites = [operate_site(s) for s in self._sites]
docs: Apply a symmetry operation to the structure and return the new
          structure. The lattice is operated by the rotation matrix only.
          Coords are operated in full and then transformed to the new lattice.
  
          Args:
              symmop (SymmOp): Symmetry operation to apply.
              fractional (bool): Whether the symmetry operation is applied in
                  fractional space. Defaults to False, i.e., symmetry operation
                  is applied in cartesian coordinates.