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()