def randomWalk()

in cassovary-core/src/main/scala/com/twitter/cassovary/graph/GraphUtils.scala [106:130]


  def randomWalk(dir: GraphDir, startNodeIds: Seq[Int], walkParams: RandomWalkParams)():
      (VisitsCounter, Option[PathsCounter]) = {
    val startNodesExist = (startNodeIds.length > 0) && startNodeIds.forall(graph.existsNodeId)

    val visitsCounter = new VisitsCounter
    val pathsCounterOption = walkParams.numTopPathsPerNode match {
      case Some(k) if k > 0 => Some(new PathsCounter(k, startNodeIds))
      case _ => None
    }

    if (startNodesExist) {
      val traversedNodes = new RandomBoundedTraverser(graph, dir, startNodeIds,
        walkParams.numSteps, walkParams)

      Stat.time(statsReceiver.stat("random_walk_traverse")) {
        traversedNodes.foreach { node =>
          visitsCounter.visit(node)
          if (pathsCounterOption.isDefined) {
            pathsCounterOption.get.visit(node)
          }
        }
      }
    }
    (visitsCounter, pathsCounterOption)
  }