def push_to_kids()

in graspologic/layouts/nooverlap/_quad_node.py [0:0]


    def push_to_kids(self: "_QuadNode") -> None:
        if len(self.nodes) <= self.max_nodes_per_quad:
            # if len == nodes then we already have the center and mass initialized because of
            # the calculation done in the constructor
            self.NW = None
            self.NE = None
            self.SW = None
            self.SE = None
            return
        nw_nodes, sw_nodes, ne_nodes, se_nodes = [], [], [], []
        for node in self.nodes:
            if node.y > self.y:
                if node.x > self.x:
                    ne_nodes.append(node)
                else:
                    nw_nodes.append(node)
            else:
                if node.x > self.x:
                    se_nodes.append(node)
                else:
                    sw_nodes.append(node)

        self.NW = (
            _QuadNode(nw_nodes, self.depth + 1, self.max_nodes_per_quad, self)
            if len(nw_nodes) > 0
            else None
        )
        self.NE = (
            _QuadNode(ne_nodes, self.depth + 1, self.max_nodes_per_quad, self)
            if len(ne_nodes) > 0
            else None
        )
        self.SW = (
            _QuadNode(sw_nodes, self.depth + 1, self.max_nodes_per_quad, self)
            if len(sw_nodes) > 0
            else None
        )
        self.SE = (
            _QuadNode(se_nodes, self.depth + 1, self.max_nodes_per_quad, self)
            if len(se_nodes) > 0
            else None
        )

        for quad in self.child_list():
            if quad:
                quad.push_to_kids()