def _minigui_report_search_status(self, leaves):
        """Prints the current MCTS search status to stderr.

        Reports the current search path, root node's child_Q, root node's
        child_N, the most visited path in a format that can be parsed by
        one of the STDERR_HANDLERS in minigui.ts.

        Args:
          leaves: list of leaf MCTSNodes returned by tree_search().
         """

        root = self._player.get_root()

        msg = {
            "id": hex(id(root)),
            "n": int(root.N),
            "q": float(root.Q),
        }

        msg["childQ"] = [int(round(q * 1000)) for q in root.child_Q]
        msg["childN"] = [int(n) for n in root.child_N]

        ranked_children = root.rank_children()
        variations = {}
        for i in ranked_children[:15]:
            if root.child_N[i] == 0 or i not in root.children:
                break
            c = coords.to_gtp(coords.from_flat(i))
            child = root.children[i]
            nodes = child.most_visited_path_nodes()
            moves = [coords.to_gtp(coords.from_flat(m.fmove)) for m in nodes]
            variations[c] = {
                "n": int(root.child_N[i]),
                "q": float(root.child_Q[i]),
                "moves": [c] + moves,
            }

        if leaves:
            path = []
            leaf = leaves[0]
            while leaf != root:
                path.append(leaf.fmove)
                leaf = leaf.parent
            if path:
                path.reverse()
                variations["live"] = {
                    "n": int(root.child_N[path[0]]),
                    "q": float(root.child_Q[path[0]]),
                    "moves": [coords.to_gtp(coords.from_flat(m)) for m in path]
                }

        if variations:
            msg["variations"] = variations

        dbg("mg-update:%s" % json.dumps(msg, sort_keys=True))
def _minigui_report_search_status ( self , leaves ) : root = self . _player . get_root ( ) msg = { "id" : hex ( id ( root ) ) , "n" : int ( root . N ) , "q" : float ( root . Q ) , } msg [ "childQ" ] = [ int ( round ( q * 1000 ) ) for q in root . child_Q ] msg [ "childN" ] = [ int ( n ) for n in root . child_N ] ranked_children = root . rank_children ( ) variations = { } for i in ranked_children [ : 15 ] : if root . child_N [ i ] == 0 or i not in root . children : break c = coords . to_gtp ( coords . from_flat ( i ) ) child = root . children [ i ] nodes = child . most_visited_path_nodes ( ) moves = [ coords . to_gtp ( coords . from_flat ( m . fmove ) ) for m in nodes ] variations [ c ] = { "n" : int ( root . child_N [ i ] ) , "q" : float ( root . child_Q [ i ] ) , "moves" : [ c ] + moves , } if leaves : path = [ ] leaf = leaves [ 0 ] while leaf != root : path . append ( leaf . fmove ) leaf = leaf . parent if path : path . reverse ( ) variations [ "live" ] = { "n" : int ( root . child_N [ path [ 0 ] ] ) , "q" : float ( root . child_Q [ path [ 0 ] ] ) , "moves" : [ coords . to_gtp ( coords . from_flat ( m ) ) for m in path ] } if variations : msg [ "variations" ] = variations dbg ( "mg-update:%s" % json . dumps ( msg , sort_keys = True ) )
Prints the current MCTS search status to stderr.

        Reports the current search path, root node's child_Q, root node's
        child_N, the most visited path in a format that can be parsed by
        one of the STDERR_HANDLERS in minigui.ts.

        Args:
          leaves: list of leaf MCTSNodes returned by tree_search().