def _recalc()

in cassovary-core/src/main/scala/com/twitter/cassovary/algorithms/centrality/ClosenessCentrality.scala [25:38]


  def _recalc(): Unit = {
    graph foreach { node =>
      val bfs = new BreadthFirstTraverser(graph, GraphDir.OutDir, Seq(node.id), Walk.Limits())
      val (sum, reachableNodes) = bfs.foldLeft((0.0, 0.0)) {
        case ((partialSum, partialCount), a) => (partialSum + bfs.depth(a.id).get, partialCount + 1)
      }
      centralityValues(node.id) = if (sum > 0 && graph.nodeCount > 1) {
          val numerator = reachableNodes - 1
          val denom = if (normalize) (graph.nodeCount - 1) / (reachableNodes - 1) else 1
          numerator / (denom * sum)
      }
      else 0.0
    }
  }