code: def calculate_bv_sum(site, nn_list, scale_factor=1.0):
      
      el1 = Element(site.specie.symbol)
      bvsum = 0
      for (nn, dist) in nn_list:
          el2 = Element(nn.specie.symbol)
          if (el1 in ELECTRONEG or el2 in ELECTRONEG) and el1 != el2:
              r1 = BV_PARAMS[el1]["r"]
              r2 = BV_PARAMS[el2]["r"]
              c1 = BV_PARAMS[el1]["c"]
              c2 = BV_PARAMS[el2]["c"]
              R = r1 + r2 - r1 * r2 * (sqrt(c1) - sqrt(c2)) ** 2 / \
                  (c1 * r1 + c2 * r2)
              vij = exp((R - dist * scale_factor) / 0.31)
              bvsum += vij * (1 if el1.X < el2.X else -1)
      return bvsum
docs: Calculates the BV sum of a site.
  
      Args:
          site:
              The site
          nn_list:
              List of nearest neighbors in the format [(nn_site, dist), ...].
          scale_factor:
              A scale factor to be applied. This is useful for scaling distance,
              esp in the case of calculation-relaxed structures which may tend
              to under (GGA) or over bind (LDA).