code: def get_nn_info(self, structure, n):
          
  
          site = structure[n]
          neighs_dists = structure.get_neighbors(site, self.cutoff)
          try:
              eln = site.specie.element
          except:
              eln = site.species_string
  
          reldists_neighs = []
          for neigh, dist in neighs_dists:
              try:
                  el2 = neigh.specie.element
              except:
                  el2 = neigh.species_string
              reldists_neighs.append([dist / get_okeeffe_distance_prediction(
                  eln, el2), neigh])
  
          siw = []
          min_reldist = min([reldist for reldist, neigh in reldists_neighs])
          for reldist, s in reldists_neighs:
              if reldist < (1.0 + self.tol) * min_reldist:
                  w = min_reldist / reldist
                  siw.append({'site': s,
                              'image': self._get_image(structure, s),
                              'weight': w,
                              'site_index': self._get_original_site(structure,
                                                                    s)})
  
          return siw
docs: Get all near-neighbor sites as well as the associated image locations
          and weights of the site with index n using the closest relative
          neighbor distance-based method with O'Keeffe parameters.
  
          Args:
              structure (Structure): input structure.
              n (integer): index of site for which to determine near
                  neighbors.
   
          Returns:
              siw (list of tuples (Site, array, float)): tuples, each one
                  of which represents a neighbor site, its image location,
                  and its weight.